Cat ja grep-komennot hidastelee

nörddi

Käytössä on palvelin, jossa on vanha CentOS 4.6. Palvelimella käsitellään suuria ascii-tiedostoja, jotka ovat kooltaan noin 20-100Mb. Tiedostoja käsitellään skriptillä, joka avaa tiedoston cat-komennolla ja komentoon on putkitettu grep, jolla poimitaan tiedoston dataa. Poimittu data otetaan talteen jatkokäsittelyyn, mutta se ei nyt liity tähän. Komento menee esim. seuraavasti:

cat tiedosto | grep -i -E -o 'poimittava data'

Ongelmana on nyt se, että tuo komennon suoritus ts. tiedoston avaus ja greppaus kestää tiedoston koosta riippuen kauan. Epäilen, että tuokomento nyt hidastaa lukua, joten miten sitä voisi tehostaa, jotta tiedoston käsittely nopeutuisi?

14

74

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • einopeudu

      tiedostojen koko on niin suuri että vaatii aikaa.

    • "Käytössä on palvelin, jossa on vanha CentOS 4.6."

      Toivottavasti ei ole verkossa kun tämän turvapäivitykset loppuivat 4,5v sitten. CentOS 5:n päivitykset loppuu myös maaliskuussa 2017.

      Epäilen että kone on niin vanha, että siinä siksi kestää.

    • nörddi

      Tiedostot ovat tosiaankin suuria, ja niiden koko yllätti itsenikin. Mikäli komentoa ei saa nopeammaksi tai tehokkaammaksi, niin sitten ei voi mitään.

      Niin ja kone on tosiaankin verkossa, ainakin vielä hetken aikaa :)

      • Se kone voi olla vaikka korkattu ja häärätä ihan muita asioita taustalla lisäksi.

        Helpointa hävittää se kone heti. Kympin kuussa hinnalla saa vaikka SSD:llä sen koneen.


    • fgrep

      Kone siis hidas, ja vanha kone hidas kiintolevy :( Ikävä yhdistelmä.
      Lisäksi voit jättää tuon cat -komennon kokonaan. grep/fgrep/egrep on monipuolinen ohjelma. man grep on mielenkiintoista luettavaa.

      • fgrep

        Lisäksi voisi harkita ram-levyä, jolla tuo käsiteltävä tiedosto on. Voisi kummasti nopeuttaa tiedoston käsittelyä, jos koneessa riittää RAM-muistia.


    • A-pu-va-ja

      Toinen (uusi) kone auttaa. Ja uusi käyttis ja ssd-levy vaikka m.2-liitännällä.

    • jotain_parannuksia

      Tarkista hdparm-ohjelmalla että levyn lukeminen tapahtuu dma:lla, niin ainakin yksi kohta grep-ongelmasta on selätetty. Onko koneen bios-asetukset tarkistettu koska viimeksi? Joskus sain lähes 20% lisää tehoa vain tekemällä asetukset oikein. Myös tulostiedostojen kirjoittaminen vie aikaa, joten jos mahdollista, kirjoita eri osiolle.

    • nörddi

      Kiitos vastauksista ja neuvoista!

      Tosiaan tuo serveri on jo ainakin 8-vuotta vanha rauta, joten sille ei enää tehdä mitään suurempia huoltotoimenpiteitä, koska se ollaan ajamassa alas piakoin. Se on tiedostettu, että siinä on hidas levyjärjestelmä ja levyt, jotka ovat pullonkaulana lukuisia pieniä tiedostoja käsiteltäessä. Uusi virtuaaliympäristö komeilee uutuuttaan vieressä, mutta tällä on siis vielä pärjättävä tovi. Syy miksi kyselin tuon komennon tehostamisesta on se, että nämä suuret filut tulivat vastikään käsiteltäviksi ja tuo hitaus vähän yllätti.

      • Täytyy olla vanhempi. CentOS 4 on vuodelta 2005 ja CentOS 5 joka vanhenee myös keväällä, tuli korvaamaan sitä vuonna 2007.

        Koneen ikä on arviolta 9.5 - 11.5 vuotta. 12v on sellainen aikajänne, että saa samaan hintaan 100x nopeamman pelkästään raudan osalta. Softakin toki nopeutuu ja nythän mennään CentOS 7:ssa jo.



      • ongelmien_tuottaminen
        M-Kar kirjoitti:

        Täytyy olla vanhempi. CentOS 4 on vuodelta 2005 ja CentOS 5 joka vanhenee myös keväällä, tuli korvaamaan sitä vuonna 2007.

        Koneen ikä on arviolta 9.5 - 11.5 vuotta. 12v on sellainen aikajänne, että saa samaan hintaan 100x nopeamman pelkästään raudan osalta. Softakin toki nopeutuu ja nythän mennään CentOS 7:ssa jo.

        Ei ole ihan näin yksioikoista: Olen jo pidempään seurannut ilmiötä siitä miten uudet koneet pakottavat vanhojen koneiden tehoja alaspäin. Tämä käy siten, että se vanha cpu on optimoitu käyttämään tiettyä määrää säikeitä ja tietylle cache:n määrälle. Uusi käyttöjärjestelmä usein kuitenkin lisää molempien käyttöastetta ja määrää: Prosesseja pitää vaihtaa useammin ja esim. yhdellä corella se tarkoittaa hidastumista. Cache kuormittuu enemmän eli käytännössä aiemmin cachessa pyörinyt softa alkaa pyöriä ram-muistin nopeudella. Samaan aikaan uusi arkkitehtuuri luo painetta muuntaa ohjelmia sen mukaiseksi, jotta ohjelmat saataisiin vieläkin nopeammiksi. Seurauksena on se, että ennen hyvin pyörineen ohjelman suorituskyky romahtaa vanhemmassa ympäristössä. Ne on ne yhteisvaikutukset, mitkä aiheuttavat ongelman.
        Eli varmemmin todistellen: Kanattaa kokeilla cat/grep suoritusaikoja eri kernelin versioilla 2.2, 2.4, 2.6 jne. Lisäksi kannattaa valita kerneli joka on käännetty omalle arkkitehtuurille optimoiden. Geneerinen koodi kun ei oikein toimi jos vaaditaan optimoitua toimintaa.


      • ongelmien_tuottaminen kirjoitti:

        Ei ole ihan näin yksioikoista: Olen jo pidempään seurannut ilmiötä siitä miten uudet koneet pakottavat vanhojen koneiden tehoja alaspäin. Tämä käy siten, että se vanha cpu on optimoitu käyttämään tiettyä määrää säikeitä ja tietylle cache:n määrälle. Uusi käyttöjärjestelmä usein kuitenkin lisää molempien käyttöastetta ja määrää: Prosesseja pitää vaihtaa useammin ja esim. yhdellä corella se tarkoittaa hidastumista. Cache kuormittuu enemmän eli käytännössä aiemmin cachessa pyörinyt softa alkaa pyöriä ram-muistin nopeudella. Samaan aikaan uusi arkkitehtuuri luo painetta muuntaa ohjelmia sen mukaiseksi, jotta ohjelmat saataisiin vieläkin nopeammiksi. Seurauksena on se, että ennen hyvin pyörineen ohjelman suorituskyky romahtaa vanhemmassa ympäristössä. Ne on ne yhteisvaikutukset, mitkä aiheuttavat ongelman.
        Eli varmemmin todistellen: Kanattaa kokeilla cat/grep suoritusaikoja eri kernelin versioilla 2.2, 2.4, 2.6 jne. Lisäksi kannattaa valita kerneli joka on käännetty omalle arkkitehtuurille optimoiden. Geneerinen koodi kun ei oikein toimi jos vaaditaan optimoitua toimintaa.

        Juu onhan niissä optimointeja uudemmalle raudalle. Käyttöjärjestelmävalmistajat ovat menneet sen mukaan, että rautaa uusitaan n. 6v välein kun silloin saa sen 10x parannuksen. Eli käytännössä jos on vanha kone niin voi olla järkevää ajella vanhemmalla käyttöjärjestelmäversiolla.

        Käytännössä valitaan uusin käyttöjärjestelmä mikä sopii kyseisen laitteen muistiavaruudelle ja CPU ytimille ja arkkitehtuurille.

        Esimerkiksi,

        CentOS 7 on tarkoitettu tuplaydin 64-bit koneille, muistia 2Gt tai enemmän.
        CentOS 6 on tarkoitettu koneille joissa on 1Gt tai enemmän muistia.
        CentOS 5 on tarkoitettu koneille joissa 512Mt tai enemmän muistia.

        Tuon mukaan kun valikoi niin saa aika optimaalisen. jos on alle 512Mt muistia niin varmaan kannattaa käyttää jotain siihen sopivampaa käyttöjärjestelmämerkkiä.


    • Pitääkö putkittaa? Miksei grep "jotain" tiedosto.txt. Jos noita on paljon Python tai joku muu kieli voi olla tehokkaampi.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Nurmossa kuoli 2 Lasta..

      Autokolarissa. Näin kertovat iltapäivälehdet juuri nyt. 22.11. Ja aina ennen Joulua näitä tulee. . .
      Seinäjoki
      106
      5467
    2. Maisa on SALAKUVATTU huumepoliisinsa kanssa!

      https://www.seiska.fi/vain-seiskassa/ensimmainen-yhteiskuva-maisa-torpan-ja-poliisikullan-lahiorakkaus-roihuaa/1525663
      Kotimaiset julkkisjuorut
      145
      3653
    3. Vanhalle ukon rähjälle

      Satutit mua niin paljon kun erottiin. Oletko todella niin itsekäs että kuvittelet että huolisin sut kaiken tapahtuneen
      Ikävä
      50
      3235
    4. Mikko Koivu yrittää pestä mustan valkoiseksi

      Ilmeisesti huomannut, että Helenan tukijoukot kasvaa kasvamistaan. Riistakamera paljasti hiljattain kylmän totuuden Mi
      Kotimaiset julkkisjuorut
      451
      2544
    5. Purra hermostui A-studiossa

      Purra huusi ja tärisi A-studiossa 21.11.-24. Ei kykene asialliseen keskusteluun.
      Perussuomalaiset
      261
      1600
    6. Miten meinasit

      Suhtautua minuun kun taas kohdataan?
      Ikävä
      88
      1335
    7. Ensitreffit Hai rehellisenä - Tämä intiimiyden muoto puuttui suhteesta Annan kanssa: "Meillä ei..."

      Hai ja Anna eivät jatkaneet avioliittoaan Ensitreffit-sarjassa. Olisiko mielestäsi tällä parilla ollut mahdollisuus aito
      Ensitreffit alttarilla
      13
      1309
    8. Joel Harkimo seuraa Martina Aitolehden jalanjälkiä!

      Oho, aikamoinen yllätys, että Joel Jolle Harkimo on lähtenyt Iholla-ohjelmaan. Tässähän hän seuraa mm. Martina Aitolehde
      Suomalaiset julkkikset
      32
      1253
    9. Mitä sanoisit

      Ihastukselle, jos näkisitte?
      Tunteet
      77
      1248
    10. Miksi pankkitunnuksilla kaikkialle

      Miksi rahaliikenteen palveluiden tunnukset vaaditaan miltei kaikkeen yleiseen asiointiin Suomessa? Kenen etu on se, että
      Maailman menoa
      147
      1180
    Aihe