Linux failisüsteemi jõudluse mõõtmine

From EIK wiki

Sissejuhatus

Kuna jõudluse mõõtmiseks on enamasti konkreetne põhjus, mitte vaid soov ilusaid numbreid näha, siis tuleb alati valida tööriist ja mõõdetavad parameetrid vastavalt kettasüsteemi otstarbele. Kas on vajalik suur järjestiklugemis- ja kirjutamiskiirus multimeedia talletamiseks või hoopis väike latentsus ja suur IOPS jõudlus andmebaasirakenduste jaoks. Sellest lähtuvalt on soovitav teha ka jõudlusteste enne ja pärast seadmete vahetust ja konfigureerimist, kontrollimaks kas uute seadmete või seadistusega on saavutatud soovitud tulemus jõudluse osas.

Eeldused

  • Teadmisi Linux operatsioonisüsteemist
  • Oskus töötada käsurealt
  • Linux/Unix OS (näited on Ubuntu 13.04)

Jõudluse mõõtmine dd abil

Kõige lihtsamaks viisiks saada infot failisüsteemi jõudluse kohta on kasutades dd käsku. Alljärgnevalt mõned näited:[1]

Kirjutuskiiruse mõõtmine

dd bs=8k count=1000k if=/dev/zero of=test
  • bs=8k - ploki suurus 8KB
  • count=1000k - kasutatavate plokkide arv 1 000 000
  • if=/dev/zero - sisend, hetkel nullid
  • of=test - väljund, hetkel fail nimega 'test'

Käsu väljund Pildil 1.

Pilt 1 - kirjutuskiiruse mõõtmine dd abil

Selle käsuga võib aga tulemust moonutada süsteemi puhvrikasutus.[1]
Et mõõta konkreetselt ketta kiirust on mitu võimalust. Üheks neist on dd käsule lisada parameeter 'conv=fdatasync' mis tagastab tulemuse alles siis kui andmed on reaalselt kettale kirjutatud. [1]

dd bs=8k count=1000k if=/dev/zero of=test conv=fdatasync

Käsu väljund Pildil 2.

Pilt 2 - kirjutuskiiruse mõõtmine dd abil koos kettale sünkroniseerimisega

Teine võimalus on kasutada mõõtmiseks käsku 'time' ja kettale kirjutamine kindlustada käsuga 'sync'.[2]

time sh -c "dd  bs=8k count=1000k if=/dev/zero of=test && sync"

Käsu väljund Pildil 3.

Pilt 3 - kirjutuskiiruse mõõtmine dd abil ning kulunud aja mõõtmine

'dd' poolt tagastatud kirjutatud baitide arvu ja 'time' poolt tagastatud aja jagamisel saame reaalse kirjutuskiiruse. 501501046B/s = 478MB/s

Lugemiskiiruse mõõtmine

Lugemiskiiruse mõõtmiseks peab olema eelnevalt tekitatud piisava suurusega testfail. Vt eelmine peatükk.

dd if=test of=/dev/null bs=64k count=100k
  • if=test - sisend, hetkel fail nimega 'test'
  • of=/dev/null - väljund, hetkel must auk

Käsu väljund Pildil 4.

Pilt 4 - lugemiskiiruse mõõtmine dd abil


Jõudluse mõõtmine hdparm abil

Teine käsk, millega on võimalik järjestiklugemiskiirusi mõõta on hdparm.[1]

sudo hdparm -Tt /dev/sda
  • sudo - hdparm vajab juurkasutaja õigusi
  • -T - testib puhvrist lugemiskiirust ilma kettalt lugemiseta
  • -t - testib lugemiskiirust kõvakettalt läbi kettapuhvri
  • /dev/sda - kettaseade mida testitakse

Käsu väljund Pildil 5.

Pilt 5 - lugemiskiiruse mõõtmine hdparm abil
  • Timing cached reads - puhvrist lugemiskiirus ilma kettalt lugemiseta
  • Timing buffered disk reads - lugemiskiirus kõvakettalt läbi kettapuhvri


Jõudluse mõõtmine IOzone abil

Täpsemaks ja põhjalikumaks jõudluse mõõtmiseks on vajalik paigaldada lisatarkvara.
Üheks selliseks rakenduseks on IOzone[3], mis võimaldab mõõta järgmisi kiirusi: [4]

  • Kirjutamine - uue faili kirjutamine koos metaandmete loomisega
  • Korduvkirjutamine - olemasoleva faili ülekirjutamine
  • Lugemine - loeb olemasolevat faili
  • Korduvlugemine - loeb juba varem loetud faili. Tänu operatsioonisüsteemis olevale puhvrile on see lugemine kiirem kui tavalugemine
  • Juhuslik lugemine - loeb ühe faili juhuslikult valitud lõike
  • Juhuslik kirjutamine - sarnane juhuslikule lugemisele. Kirjutab olemasoleva faili sisse juhuslikult valitud kohtadesse
  • Juhuslik lugemine ja kirjutamine koos
  • Tagurpidi lugemine - näiteks faili lugemine lõpust alguse poole
  • Record Rewrite - kirjutatakse ühte plokki samasse kohta, näitab puhvrite kiirust, kuhu antud plokk mahtus
  • Strided Read - hüppega lugemine. Failist loetakse nt algusest 4KB, liigutakse edasi 200KB, loetakse järgmised 4KB, jne
  • Fwrite, Frewrite - kirjutamine kasutades teegi funktsiooni 'fwrite()'
  • Fread, Freread - lugemine kasutades teegi funktsiooni 'fread()'

Parameetrid:

  • -a - kõik testid automaatselt suureneva plokisuuruse ja arvuga
  • -i n - n asemel testi number 1-12, mitme testi jaoks mitu '-i n' parameetrit
  • -s 16G - kasutatava faili suurus
  • -r 1M - ploki suurus
  • -b output.xls - salvestab testi väljundi tabelarvutusprogrammis töödeldavaks failiks
  • ja palju muid [3]

IOzone abil kiiruse mõõtmine automaatrežiimis. Tehakse teste 64k kuni 512MB failisuuruse ja 4k kuni 16M plokisuurusega. Väljundi näide pildil 6.

iozone -a
Pilt 6 - IOzone väljund automaatrežiimis

IOzone abil läbilaskekiiruse mõõtmine ning väljundi näide pildil 7.

iozone -i 0 -t 2
Pilt 7 - läbilaskekiiruse mõõtmine IOzone abil

Jõudluse mõõtmine Bonnie++ abil

Bonnie++[5] võimaldab lisaks läbilaskekiirusele mõõta ka latentsust. Allpool toodud parameetrid:[6]

  • -d – kaust, mida kasutatakse testimiseks
  • -u – kasutaja, kellena testid käivitatakse, soovitav määrata, kui käsk käivitatakse juurkasutaja õigustes
  • -g – grupp, kellena testid käivitatakse
  • -r – arvuti mälumaht, testimise jaoks kasutatakse kahekordse mälumahu suurust faili
  • -b – ei kasutata kirjutuspuhvreid ja iga tegevuse lõppedes tehakse andmede sünkroonimine kettale
  • -s – testitav andmete suurus
  • -n – faililoomistestis kasutatav failide arv
  • -m – lisab väljundile sildi, et hiljem oleks võimalik aru saada, mis testiga tegu
  • -x n - kordab teste n korda

Vaikeseades Bonnie++ väljundi näide pildil 8.

Pilt 8 - jõudluse mõõtmine Bonnie++ abil

Kokkuvõte

Käesolevas artiklis on välja toodud erinevad viisid kettajõudluse testimiseks Linux operatsioonisüsteemis. Alates lihtsatest ja sisseehitatud võimalustest ja lõpetades keerukamate ja põhjalikemate rakendustega. Samuti kirjeldatud nende seadistusi ja väljundeid, mis annab võimaluse valida vastavalt konkreetsele vajadusele sobiv tarkvara ning mõõdetav parameeter.

Kasutatud materjal:

  1. 1.0 1.1 1.2 1.3 Slashroot.in - Linux File System Read Write Performance Test: http://www.slashroot.in/linux-file-system-read-write-performance-test
  2. Toolbox.com - Testing Disk Speed: the dd Test: http://it.toolbox.com/blogs/database-soup/testing-disk-speed-the-dd-test-31069
  3. 3.0 3.1 IOzone.org - IOzone Filesystem Benchmark: http://www.iozone.org/
  4. Linux-mag.com - I Feel the Need for Speed: Linux File System Throughput Performance, Part 1: http://www.linux-mag.com/id/7525/
  5. Coker.com.au - Bonnie++ Documentation: http://www.coker.com.au/bonnie++/readme.html
  6. JamesCoyle.net - Benchmark disk IO with DD and Bonnie++: http://www.jamescoyle.net/how-to/599-benchmark-disk-io-with-dd-and-bonnie

Autor

Tanel Liik
AK31
14.01.2014