Mjerenje brzine diskova

Računala postaju sve manja, sve se rijeđe kupuju velika desktop kućišta u koja možeš ugurati više tvrdih diskova. Zato sve više koristimo vanjske diskove koji se spajaju na USB portove. Svejedno da li su to klasični tvrdi diskovi, SSD diskovi ili USB stickovi, pa čak i SD kartice za koje notebooci imaju utore. Ili pak dok za diskove, s jednim ili dva utora, u koje se mogu utaknuti diskovi bez kućišta. Ovi s dva utora zgodni su i za kloniranje diskova. Kod kupovine vanjskog diska većina gleda na njihov kapacitet, a tek kad ih počnu koristiti postani svjesni da su neki od njih - sporiji, drugi - brži. Većina se kupaca zadovolji specifikacijom da uređaj podržava USB 3 standard, naivno vjerujujući da su svi USB 3 uređaji jednako brzi.


Uz malo "googlanja" brzo se nađe program za Windowse kolji mjeri brzinu diskova. Spomenimo samo CrystalDiskMark, bit će dovoljno. No nas bi zanimalo možemo li izbjeći skidanje i instalaciju programa koji ćemo rijetko koristiti, umjesto toga radije bi za testiranje koristili Unixove standardne komandno-linijske alate.

Spojili smo tvrdi disk na USB 3.0 port, pa najprije potražimo veličinu bloka podataka:

$ sudo blockdev --getbsz /dev/sdb1
512

Za zapisivanje podataka na disk iskoristit ćemo "prastaru" naredbu dd. Najprije se prebacimo u direktorij na koji je montiran vanjski disk, pa napišemo ovakvu naredbu:

$ dd if=/dev/zero of=./testfile bs=512 count=100000
100000+0 records in
100000+0 records out
51200000 bytes (51 MB, 49 MiB) copied, 1,69308 s, 30,2 MB/s

Snimili smo 100.000 blokova veličine 512 byteova u datoteku testfile. Naredba dd nam ljubazno ispisuje brzinu pisanja po disku.

Nakon toga možemo provjeriti brzinu čitanja datoteke testfile:

$ dd if=./testfile of=/dev/null bs=512
100000+0 records in
100000+0 records out
51200000 bytes (51 MB, 49 MiB) copied, 0,0543826 s, 941 MB/s

Ups! Nešto tu ne štima, nemoguće je da brzina čitanja bude 30 puta veća od brzine pisanja. Vjerojatno je testfile ostao keširan u memoriji. Da to provjerimo, počistit ćemo memory cashe:


$ sudo sync
$ sudo echo 3 > /proc/sys/vm/drop_caches
bash: /proc/sys/vm/drop_caches: Pristup odbijen

Najprije smo se sa sync pobrinuli da cashe bude u ispravnom stanju, a onda bi ubacivanje vrijednosti 3 u /proc/sys/vm/drop_caches trebalo natjerati kernel da počisti memorijski cache. No, kao što vidite, nije nam uspjelo. Pretpostavljamo da nam trebaju prave root ovlasti.

$ sudo su - 
# sync
# echo 3 > /proc/sys/vm/drop_caches


Sad možemo provjeriti brzinu čitanja:

$ dd if=./testfile of=/dev/null bs=512
100000+0 records in
100000+0 records out
51200000 bytes (51 MB, 49 MiB) copied, 1,66855 s, 30,7 MB/s


To je već bolje. Brzina čitanja neznatno je veća od brzine zapisivanja.

Za ovaj test koristimo dva "čudna uređaja", /dev/null i /dev/zero. Razlika među njima je u tome što u /dev/null nešto možemo ubaciti, kao u crnu rupu, i to nestane. Ništa se ne da izvući iz /dev/null, dok se /dev/zero ponaša drugačije: iz njega se može nešto izvući, ništice. Tim ništicama punimo testnu datoteku, a zatim je vraćamo u /dev/null.

Da li će se nešto promijeniti ako USB kabel prekopčamo u USB 2 port?

$ dd if=/dev/zero of=/media/hombre/VERBATIM\ HD/testfile bs=512 count=100000
100000+0 records in
100000+0 records out
51200000 bytes (51 MB, 49 MiB) copied, 2,18024 s, 23,5 MB/s

Posve očekivano, brzina pisanja je manja.

# dd if=/media/hombre/VERBATIM\ HD/testfile of=/dev/null bs=512
100000+0 records in
100000+0 records out
51200000 bytes (51 MB, 49 MiB) copied, 1,67842 s, 30,5 MB/s

A brzina čitanja je gotovo ista. Ako test ponavljate više puta, dobit ćete malo različite rezultate. To je prednost "samostojećih" programa, njima možete zadati koliko će se puta ponavljati test, promjenu veličine bloka i slično.

Ako isti HD prebacimo u noviji dock drugog proizvođača, s utorima za dva diska istovremeno:

# dd if=/dev/zero of=./testfile bs=512 count=100000
100000+0 records in
100000+0 records out
51200000 bytes (51 MB, 49 MiB) copied, 0,256492 s, 139 MB/s

Pisanje po istom disku mnogo je brže kad ga prebacimo u novi dock! Iako su oba deklarirana kao USB 3 uređaji!

Eto, sad imamo način testiranja brzine pisanja i čitanja po diskovima, bez instalacije posebnog programa. Uz minimalan trud ovih nekoliko naredbi može se objediniti u jednoj skripti, koju bi mogli nazvati na pr. ds, u stilu štedljivosti ranih Unixa (disk speed).

Na kraju, nekoliko riječi o tome zašto smo se prihvatili testiranja brzine diskova. Kod kuće imam dva HD docka, stariji s jednim utorom i novi, s dva utora za diskove. Kad sam ih kupovao, na webu nije bilo pouzdanih informacija o brzini čitanja/pisanja, a trgovci su me čudno gledali kad sam ih to pitao. Ispada da ćeš tek kad kupiš uređaj saznati kakvog si mačka u vreći dobio. Zato bi bilo dobro održavati dobre odnose s nekim od trgovaca, da dozvoli testiranje uređaja prije nego ih kupimo. Nije problem doći s notebookom u trgovinu.

Drugi problem je u kapacitetu današnjih diskova. Dockovi starijeg datuma imaju ograničenje i radit će s HD-ovima do 3 TB. Noviji dock u prospektu ne navodi koji najveći kapacitet diska podržava. Ljubazni trgovac obećao je da će otvoriti pakiranja docka i HD-a najvećeg kapaciteta koji ima na raspolaganju. Kod takvog se trgovca isplati kupovati, zar ne? Tim više što je i sam haker, više od običnog trgovca, pa ga zanima kakvu robu prodaje.

Vote: 
5
Vaša ocjena: Nema Average: 5 (1 vote)

Komentari

Naredba sudo echo 3 > /proc/sys/vm/drop_caches je javila grešku jer sudo izvršava samo naredbu do znaka > i ne djeluje na redirekciju izlaza naredbe u navedenu datoteku (u koju običan korisnik ne može pisati).

Ako želimo s jednolinijskom naredbom postići da se i redirekcija uključi pod sudo, onda treba primijeniti sljedeće:

sudo bash -c 'echo 3 > /proc/sys/vm/drop_caches'

Dakle, sudo izvršava novu ljusku bash kojoj smo zadali da izvrši naredu echo zajedno s redirekcijom izlaza u datoteku.