Linux failisüsteemi jõudluse mõõtmine: Difference between revisions
No edit summary |
|||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
==Sissejuhatus== | ==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 [http://en.wikipedia.org/wiki/IOPS 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== | ==Eeldused== | ||
Line 8: | Line 8: | ||
==Jõudluse mõõtmine dd abil== | ==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:<ref name="slashroot">Slashroot.in - Linux File System Read Write Performance Test: http://www.slashroot.in/linux-file-system-read-write-performance-test</ref> | Kõige lihtsamaks viisiks saada infot failisüsteemi jõudluse kohta on kasutades [[dd]] käsku. Alljärgnevalt mõned näited:<ref name="slashroot">Slashroot.in - Linux File System Read Write Performance Test: http://www.slashroot.in/linux-file-system-read-write-performance-test</ref> | ||
===Kirjutuskiiruse mõõtmine=== | ===Kirjutuskiiruse mõõtmine=== | ||
dd bs=8k count=1000k if=/dev/zero of=test | dd bs=8k count=1000k if=/dev/zero of=test | ||
Line 15: | Line 15: | ||
*if=/dev/zero - sisend, hetkel nullid | *if=/dev/zero - sisend, hetkel nullid | ||
*of=test - väljund, hetkel fail nimega 'test' | *of=test - väljund, hetkel fail nimega 'test' | ||
Käsu väljund Pildil 1. | |||
[[image:Tliik_dd1.png|none|548x76px]] | [[image:Tliik_dd1.png|none|548x76px|frame|Pilt 1 - kirjutuskiiruse mõõtmine dd abil]] | ||
Selle käsuga võib aga tulemust moonutada süsteemi puhvrikasutus.<ref name="slashroot"/> <br/> | Selle käsuga võib aga tulemust moonutada süsteemi puhvrikasutus.<ref name="slashroot"/> <br/> | ||
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. <ref name="slashroot"/> | 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. <ref name="slashroot"/> | ||
dd bs=8k count=1000k if=/dev/zero of=test conv=fdatasync | |||
Käsu väljund Pildil 2. | |||
[[image:Tliik_dd2.png|none|680x74px]] | [[image:Tliik_dd2.png|none|680x74px|frame|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'.<ref name="toolbox">Toolbox.com - Testing Disk Speed: the dd Test: http://it.toolbox.com/blogs/database-soup/testing-disk-speed-the-dd-test-31069</ref> | Teine võimalus on kasutada mõõtmiseks käsku '[[time]]' ja kettale kirjutamine kindlustada käsuga '[[sync]]'.<ref name="toolbox">Toolbox.com - Testing Disk Speed: the dd Test: http://it.toolbox.com/blogs/database-soup/testing-disk-speed-the-dd-test-31069</ref> | ||
time sh -c "dd bs=8k count=1000k if=/dev/zero of=test && sync" | time sh -c "dd bs=8k count=1000k if=/dev/zero of=test && sync" | ||
Käsu väljund Pildil 3. | |||
[[image:Tliik_dd4.png|none|736x146px]] | [[image:Tliik_dd4.png|none|736x146px|frame|Pilt 3 - kirjutuskiiruse mõõtmine dd abil ning kulunud aja mõõtmine]] | ||
'dd' poolt tagastatud kirjutatud baitide arvu ja 'time' poolt | 'dd' poolt tagastatud kirjutatud baitide arvu ja 'time' poolt tagastatud aja jagamisel saame reaalse kirjutuskiiruse. | ||
501501046B/s = 478MB/s | 501501046B/s = 478MB/s | ||
Line 33: | Line 33: | ||
dd if=test of=/dev/null bs=64k count=100k | dd if=test of=/dev/null bs=64k count=100k | ||
*if=test - sisend, hetkel fail nimega 'test' | *if=test - sisend, hetkel fail nimega 'test' | ||
*of=/dev/null - väljund, hetkel must auk | *of=[[/dev/null]] - väljund, hetkel must auk | ||
Käsu väljund Pildil 4. | |||
[[image:tliik_dd3.png|none|547x72px]] | [[image:tliik_dd3.png|none|547x72px|frame|Pilt 4 - lugemiskiiruse mõõtmine dd abil]] | ||
==Jõudluse mõõtmine hdparm abil== | ==Jõudluse mõõtmine hdparm abil== | ||
Teine käsk, millega on võimalik järjestiklugemiskiirusi mõõta on hdparm.<ref name="slashroot"/> | Teine käsk, millega on võimalik järjestiklugemiskiirusi mõõta on [[hdparm]].<ref name="slashroot"/> | ||
sudo hdparm -Tt /dev/sda | sudo hdparm -Tt /dev/sda | ||
*sudo - hdparm vajab juurkasutaja õigusi | *sudo - hdparm vajab juurkasutaja õigusi | ||
Line 45: | Line 45: | ||
*-t - testib lugemiskiirust kõvakettalt läbi kettapuhvri | *-t - testib lugemiskiirust kõvakettalt läbi kettapuhvri | ||
*/dev/sda - kettaseade mida testitakse | */dev/sda - kettaseade mida testitakse | ||
Käsu väljund Pildil 5. | |||
[[image:Tliik_hdparm.png|none|626x111px]] | [[image:Tliik_hdparm.png|none|626x111px|frame|Pilt 5 - lugemiskiiruse mõõtmine hdparm abil]] | ||
*Timing cached reads - puhvrist lugemiskiirus ilma kettalt lugemiseta | *Timing cached reads - puhvrist lugemiskiirus ilma kettalt lugemiseta | ||
*Timing buffered disk reads - lugemiskiirus kõvakettalt läbi kettapuhvri | *Timing buffered disk reads - lugemiskiirus kõvakettalt läbi kettapuhvri | ||
Line 53: | Line 53: | ||
==Jõudluse mõõtmine IOzone abil== | ==Jõudluse mõõtmine IOzone abil== | ||
Täpsemaks ja põhjalikumaks jõudluse mõõtmiseks on vajalik paigaldada lisatarkvara. <br/> | Täpsemaks ja põhjalikumaks jõudluse mõõtmiseks on vajalik paigaldada lisatarkvara. <br/> | ||
Üheks selliseks rakenduseks on IOzone<ref name="iozone">IOzone.org - IOzone Filesystem Benchmark: http://www.iozone.org/</ref>, mis võimaldab mõõta järgmisi kiirusi: <ref name="linuxmag">Linux-mag.com - I Feel the Need for Speed: Linux File System Throughput Performance, Part 1: http://www.linux-mag.com/id/7525/</ref> | Üheks selliseks rakenduseks on <span class="plainlinks">[https://wiki.itcollege.ee/index.php/Iozone IOzone]</span><ref name="iozone">IOzone.org - IOzone Filesystem Benchmark: http://www.iozone.org/</ref>, mis võimaldab mõõta järgmisi kiirusi: <ref name="linuxmag">Linux-mag.com - I Feel the Need for Speed: Linux File System Throughput Performance, Part 1: http://www.linux-mag.com/id/7525/</ref> | ||
*Kirjutamine - uue faili kirjutamine koos metaandmete loomisega | *Kirjutamine - uue faili kirjutamine koos metaandmete loomisega | ||
*Korduvkirjutamine - olemasoleva faili ülekirjutamine | *Korduvkirjutamine - olemasoleva faili ülekirjutamine | ||
Line 69: | Line 69: | ||
Parameetrid: | Parameetrid: | ||
*-a - kõik testid automaatselt suureneva plokisuuruse ja arvuga | *-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 | *-s 16G - kasutatava faili suurus | ||
*-r 1M - ploki suurus | *-r 1M - ploki suurus | ||
*. | *-b output.xls - salvestab testi väljundi tabelarvutusprogrammis töödeldavaks failiks | ||
*ja palju muid <ref name="iozone"/> | |||
IOzone abil läbilaskekiiruse mõõtmine | 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 | |||
[[image:Tliik_iozone1.png|none|1228x616px|frame|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 | iozone -i 0 -t 2 | ||
[[image:Tliik_iozone2.png|none|733x769px]] | [[image:Tliik_iozone2.png|none|733x769px|frame|Pilt 7 - läbilaskekiiruse mõõtmine IOzone abil]] | ||
==Jõudluse mõõtmine Bonnie++ abil== | ==Jõudluse mõõtmine Bonnie++ abil== | ||
Bonnie++<ref name="bonnie">Coker.com.au - Bonnie++ Documentation: http://www.coker.com.au/bonnie++/readme.html</ref> võimaldab lisaks läbilaskekiirusele mõõta ka latentsust. Allpool toodud parameetrid:<ref name="coyle">JamesCoyle.net - Benchmark disk IO with DD and Bonnie++: http://www.jamescoyle.net/how-to/599-benchmark-disk-io-with-dd-and-bonnie</ref><br/> | [[Bonnie++]]<ref name="bonnie">Coker.com.au - Bonnie++ Documentation: http://www.coker.com.au/bonnie++/readme.html</ref> võimaldab lisaks läbilaskekiirusele mõõta ka latentsust. Allpool toodud parameetrid:<ref name="coyle">JamesCoyle.net - Benchmark disk IO with DD and Bonnie++: http://www.jamescoyle.net/how-to/599-benchmark-disk-io-with-dd-and-bonnie</ref><br/> | ||
*-d – kaust, mida kasutatakse testimiseks | *-d – kaust, mida kasutatakse testimiseks | ||
*-u – kasutaja, kellena testid käivitatakse, soovitav määrata, kui käsk käivitatakse juurkasutaja õigustes | *-u – kasutaja, kellena testid käivitatakse, soovitav määrata, kui käsk käivitatakse juurkasutaja õigustes | ||
Line 89: | Line 94: | ||
*-m – lisab väljundile sildi, et hiljem oleks võimalik aru saada, mis testiga tegu | *-m – lisab väljundile sildi, et hiljem oleks võimalik aru saada, mis testiga tegu | ||
*-x n - kordab teste n korda | *-x n - kordab teste n korda | ||
Vaikeseades Bonnie++ väljundi näide pildil 8. | |||
[[image:Tliik_bonnie.png|none|734x417px]] | [[image:Tliik_bonnie.png|none|734x417px|frame|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:== | ==Kasutatud materjal:== | ||
<references /> | <references /> | ||
==Autor== | |||
Tanel Liik<br/> | |||
AK31<br/> | |||
14.01.2014 | |||
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]] | [[Category:Operatsioonisüsteemide administreerimine ja sidumine]] |
Latest revision as of 19:54, 14 January 2014
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.
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.
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.
'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.
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.
- 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
IOzone abil läbilaskekiiruse mõõtmine ning väljundi näide pildil 7.
iozone -i 0 -t 2
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.
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.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
- ↑ Toolbox.com - Testing Disk Speed: the dd Test: http://it.toolbox.com/blogs/database-soup/testing-disk-speed-the-dd-test-31069
- ↑ 3.0 3.1 IOzone.org - IOzone Filesystem Benchmark: http://www.iozone.org/
- ↑ Linux-mag.com - I Feel the Need for Speed: Linux File System Throughput Performance, Part 1: http://www.linux-mag.com/id/7525/
- ↑ Coker.com.au - Bonnie++ Documentation: http://www.coker.com.au/bonnie++/readme.html
- ↑ 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