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

75

    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. voitaisiinko unohtaa se sotku?

      Olisiko mahdollista aloittaa puhtaalta pöydältä vielä? Ikävä sua ****
      Ikävä
      73
      5071
    2. Oisko se tosi paha

      Jos haluaisinkin susta ennen kaikkea seksiä? Nainen
      Ikävä
      132
      3517
    3. Huomenta ja hyvää tiistaita

      Huomenta ja hyvää tiistaita. ❄️🐺☕❄️
      Ikävä
      98
      2295
    4. Milloin nainen saan sinut?

      Kanssani eroottisiin hetkiin? Tiedät ja tunnet kovan haluni, hellyyden myös. Onko vastauksesi edelleen, että en tiedä, e
      Ikävä
      20
      1925
    5. Ovatko persut tehneet jo päätöksen ulkopolitiikastaan?

      Persujen olisi hallituspuolueena syytä tehdä jo päätöksiä siitä, aikovatko he olla pro-Ukraina vai pro-Trump eli pro-Put
      Perussuomalaiset
      229
      1728
    6. Haluan että tiedät tämän

      Jos luet täällä. En ole sinulle vihainen, vaikka asiat menivät niinkuin menivät. Ajattelin, että et tykkää minusta, jonk
      Ikävä
      85
      1517
    7. Jee! Palsta toimii jälleen!

      Viestiarkisto näkyy ja kaikki pelittää. Tätä on odotettu, vaikka ei tässä mitään odotettavaa ole ollut.
      Sinkut
      25
      1387
    8. A, teksteistäni löydät itsesi

      jos luet tarkkaan. Vain epäsuorasti voin tunteeni myöntää, en halua minkään rikki menevän. Kaipaan sinua ja odotan näkem
      Ikävä
      26
      1367
    9. Mitä olen antanut sinulle?

      Mitä olet antanut minulle?
      Suhteet
      37
      1335
    10. Oletko sinä lähellä?

      Tutkassani väräjää siihen malliin, pitääkö poistua mestoilta?
      Ikävä
      14
      1259
    Aihe