Linux provjeri brzinu diska. Kako izmjeriti brzinu tvrdog diska

Original: Testirajte brzinu čitanja/pisanja usb i ssd diskova pomoću dd naredbe na Linuxu
Autor: Silver Moon
Datum objave: 12. jul 2014
Prijevod: N.Romodanov
Datum prenosa: oktobar 2014

Brzina uređaja

Brzina uređaja se mjeri u jedinicama koliko podataka može pročitati ili napisati u jedinici vremena. Naredba dd je jednostavan alat naredbene linije koji se može koristiti za čitanje i pisanje proizvoljnih blokova podataka na disku i mjerenje brzine kojom se dogodio prijenos podataka.

U ovom članku koristit ćemo naredbu dd za provjeru brzine čitanja i pisanja usb i ssd uređaja.

Brzina prenosa podataka ne zavisi samo od diska, već i od interfejsa preko kojeg je povezan. Na primjer, USB 2.0 port ima maksimalno funkcionalno ograničenje brzine od 35 MB/s, pa čak i ako uključite USB 3 fleš disk velike brzine u USB 2 port, brzina će biti ograničena na nižu vrijednost.

Isto važi i za SSD uređaj. SSD uređaj je povezan preko SATA portova, koji imaju različite verzije. Sata 2.0 ima maksimalnu teoretsku granicu brzine od 3Gbps, što je oko 375MB/s. Dok SATA 3.0 podržava duplo veću brzinu.

Metoda ispitivanja

Montirajte pogon i idite do njega iz prozora terminala. Zatim koristite naredbu dd da prvo napišete datoteku koja se sastoji od blokova fiksne veličine. Zatim pročitajte istu datoteku koristeći istu veličinu bloka.

Opća sintaksa naredbe dd je sljedeća

Dd if=put/do/input_file of=/path/to/output_file bs=block_size count=broj_blokova

Kada pišemo na disk, jednostavno čitamo iz /dev/zero, što je izvor beskonačnog broja bajtova. Prilikom čitanja sa diska, čitamo prethodno napisanu datoteku i šaljemo je u /dev/null, koja zapravo ne postoji. Tijekom cijelog procesa, naredba dd prati i izvještava o brzini po kojoj se prijenos događa.

SSD uređaj

SSD uređaj koji koristimo je "Samsung Evo 120GB" SSD disk. Ovo je početni nivo ssd uređaja koji se odnosi na budžet i ujedno moj prvi SSD disk. Takođe je jedan od najučinkovitijih SSD-ova dostupnih na tržištu.

U ovom testu, ssd disk je povezan na sata 2.0 port.

Brzina snimanja

Snimimo prvo na ssd

$ dd if=/dev/zero of=./largefile bs=1M count=1024 1024+0 zapisa u 1024+0 zapisa od 1073741824 bajtova (1,1 GB) kopirano, 4,82364 s, 223 MB/s

Veličina bloka je zapravo prilično velika. Možete pokušati koristiti manju veličinu kao što je 64k ili čak 4k.

Brzina čitanja

Sada, naprotiv, pročitajte isti fajl. Ali prvo obrišite keš memoriju da biste bili sigurni da se datoteka zapravo čita s diska.

Da obrišete keš memoriju, pokrenite sljedeću naredbu

$ sudo sh -c "sinhronizacija && echo 3 > /proc/sys/vm/drop_caches"

Sada pročitajte fajl

$ dd if=./largefile of=/dev/null bs=4k 165118+0 zapisa u 165118+0 zapisa od 676323328 bajtova (676 MB) kopirano, 3.0114 s, 225 MB/s

USB uređaj

U ovom testu ćemo mjeriti brzinu čitanja običnih USB fleš diskova. Uređaji se povezuju na standardna porta usb 2. Prvi uređaj je Sony 4gb usb stick, a drugi je stroncij 16gb.

Prvo povežite uređaj i montirajte ga tako da bude čitljiv. Zatim, iz komandne linije, idite do montiranog direktorija.

Sony 4GB uređaj - snimanje

U ovom testu, naredba dd se koristi za pisanje 10.000 podataka od 8 KB svaki u jednu datoteku na disku.

# dd if=/dev/zero of=./largefile bs=8k count=10000 10000+0 zapisa u 10000+0 zapisa od 81920000 bajtova (82 MB) kopirano, 11,0626 s, 7,4 MB/s

Brzina pisanja je oko 7,5 MB/s. Ovo je nizak broj.

Sony 4GB uređaj - čitanje

Ista datoteka se čita radi testiranja brzine čitanja. Da obrišete keš memoriju, pokrenite sljedeću naredbu

$ sudo sh -c "sinhronizacija && echo 3 > /proc/sys/vm/drop_caches"

Sada pročitajte datoteku pomoću dd komande

# dd if=./largefile of=/dev/null bs=8k 8000+0 zapisa u 8000+0 zapisa od 65536000 bajtova (66 MB) kopirano, 2,65218 s, 24,7 MB/s

Brzina čitanja je približno 25 MB/s, što je manje-više standard za jeftine usb stickove.

USB 2.0 ima teoretsku maksimalnu brzinu signalizacije od 480 Mbps ili 60 Mbps. Ali zbog različitih ograničenja, maksimalni protok je ograničen na približno 280 Mbps ili 35 Mbps. Osim toga, stvarna brzina ovisi o kvaliteti fleš diska, kao i drugim faktorima.

I od gore navedenog usb uređaj je spojen na USB 2.0 port i postignuta je brzina čitanja od 24,7 MB/s, što i nije loše. Ali brzina pisanja je daleko iza.

Sada uradimo isti test sa Strontium 16gb stickom. Stroncijum je još jedan brend koji proizvodi veoma jeftine usb štapove, ali su ti štapovi pouzdani.

Brzina pisanja za Strontium 16gb uređaj

# dd if=/dev/zero of=./largefile bs=64k count=1000 1000+0 zapisa u 1000+0 zapisa od 65536000 bajtova (66 MB) kopirano, 8,3834 s, 7,8 MB/s

Brzina čitanja za Strontium 16gb uređaj

# sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches" # dd if=./largefile of=/dev/null bs=8k 8000+0 zapisa u 8000+0 zapisa od 65536000 bajtova (66 MB) kopirano, 2,90366 s, 22,6 MB/s

Brzina čitanja podataka je sporija od Sony uređaja.

Da biste odredili brzinu pisanja na disk, morate pokrenuti sljedeću naredbu u konzoli:

sync; dd if=/dev/nula of=tempfile bs=1M count=1024; sync

Naredba upisuje privremenu datoteku veličine 1 MB 1024 puta i rezultat njenog rada bit će izlaz takvih podataka

Primljeno 1024+0 zapisa 1024+0 zapisa poslano kopirano 1073741824 bajtova (1,1 GB), 15,4992 s, 69,3 MB/s

Da biste odredili brzinu čitanja diska, morate pokrenuti sljedeću naredbu u konzoli:

Privremeni fajl koji je generisan prethodnom naredbom se kešira u baferu, što će samo po sebi povećati njegovu brzinu čitanja i biće mnogo veća od stvarne brzine čitanja direktno sa samog hard diska. Da biste dobili stvarnu brzinu, prvo morate obrisati ovu keš memoriju.

Da biste odredili brzinu čitanja sa diska iz međuspremnika, morate pokrenuti sljedeću naredbu u konzoli:

Dd if=tempfile of=/dev/null bs=1M count=1024

Izlaz prethodne naredbe:

Primljeno 1024+0 zapisa 1024+0 zapisa poslano kopirano 1073741824 bajtova (1,1 GB), 15,446 s, 69,5 MB/s

Da biste izmjerili stvarnu brzinu čitanja s diska, obrišite keš memoriju:

sudo /sbin/sysctl -w vm.drop_caches=3

Izlaz naredbe:

vm.drop_caches = 3

Izvodimo test brzine čitanja nakon brisanja keša:

Dd if=tempfile of=/dev/null bs=1M count=1024 1024+0 zapisa primljenih 1024+0 zapisa poslanih kopiranih 1073741824 bajtova (1,1 GB), 16,5786 s, 64,8 MB/s

Izvođenje testa brzine čitanja/pisanja na eksternom disku

Da biste testirali brzinu bilo kojeg eksternog tvrdog diska, USB fleš diska ili drugog prenosivog medija ili sistema datoteka udaljene mašine (vps / vds), potrebno je da odete do tačke montiranja i izvršite gornje komande.

Ili, umjesto tempfile, naravno možete napisati putanju do točke montiranja, na sljedeći način:

sync; dd if=/dev/nula of=/media/user/USBFlash/tempfile bs=1M count=1024; sync

Također biste trebali navesti da gornje naredbe koriste privremenu datoteku tempfile. Ne zaboravite je izbrisati nakon završetka testova.

Testiranje brzine HDD pomoću uslužnog programa hdparm

hdparm is Linux uslužni program, koji vam omogućava da brzo saznate brzinu čitanja sa vašeg HDD-a.

Da biste započeli mjerenje brzine čitanja sa vašeg tvrdog diska, trebate pokrenuti sljedeću naredbu u konzoli:

sudo hdparm -Tt /dev/sda

Izlaz naredbe u konzoli:

/dev/sda: Tajming keširano čitanje: 6630 MB za 2,00 sekunde = 3315,66 MB/sec Vremenski baferovani disk čita: 236 MB za 3,02 sekunde = 78,17 MB/sec

To je sve. Tako smo uspjeli saznati performanse našeg tvrdog diska i dati grubu procjenu njegovih mogućnosti.

Zahtijeva čitanje priručnika (man fio), ali će vam dati tačne rezultate. Imajte na umu da za bilo kakvu preciznost morate tačno navesti šta želite da izmerite. Neki primjeri:

Sekvencijalna brzina čitanja sa velikim blokovima

Fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=read --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync= 10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting

Sekvencijalna brzina WRITE sa velikim blokovima(ovo bi trebalo biti blizu broja koji vidite u specifikacijama za vaš pogon):

Fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=write --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync= 10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting

Nasumično čitanje 4K QD1(ovo je broj koji je zaista važan za performanse u stvarnom svijetu osim ako sigurno ne znate bolje):

Fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync= 1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting

Miješano nasumično 4K čitanje i pisanje QD1 sa sinhronizacijom(ovo je najgori broj koji biste ikada trebali očekivati ​​od vašeg pogona, obično manje od 1% brojeva navedenih u specifikacijama):

Fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randrw --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync= 1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting

Povećajte argument --size da povećate veličinu datoteke. Korištenje većih datoteka može smanjiti brojeve koje dobijete ovisno o tehnologiji pogona i firmveru. Mali fajlovi će dati "previše dobre" rezultate za rotacione medije jer glava za čitanje ne mora toliko da se pomera. Ako je vaš uređaj skoro prazan, korištenje datoteke dovoljno velike da skoro napuni disk omogućit će vam ponašanje u najgorem slučaju za svaki test. U slučaju SSD-a, veličina datoteke nije toliko bitna.

Međutim, imajte na umu da za neke medije za skladištenje veličina datoteke nije toliko važna kao ukupni bajtovi napisani tokom kratkog vremenskog perioda. Na primjer, neki SSD-ovi mogu imati znatno brže performanse s unaprijed izbrisanim blokovima ili mogu imati malu SLC flash površinu koja se koristi kao keš memorija za upisivanje i performanse se mijenjaju kada se SLC keš memorija napuni. Kao drugi primjer, Seagate SMR HDD-ovi imaju oko 20 GB PMR keš područje koje ima prilično visoke performanse, ali kada se popuni, pisanje direktno u SMR područje može smanjiti performanse na 10% u odnosu na original. Naravno, sve ovo ovisi o vašem radnom opterećenju: ako je vaš pristup za pisanje buran sa dugim kašnjenjima koja omogućavaju uređaju da očisti internu keš memoriju, kraće testne sekvence će bolje odražavati vaše performanse u stvarnom svijetu. IO, morate povećati i --io_size i --runtime parametre. Imajte na umu da neki mediji (npr. većina flash uređaja ) će se dodatno istrošiti takvim testiranjem. Po mom mišljenju, ako je neki uređaj dovoljno loš da ne može podnijeti ovakvu vrstu testiranja, ni u kom slučaju ga ne bi trebalo koristiti za držanje vrijednih podataka.

Osim toga, neki visokokvalitetni SSD uređaji mogu imati još inteligentnije algoritme za niveliranje habanja gdje interna SLC keš memorija ima dovoljno pameti da zamijeni podatke na mjestu koji se ponovo upisuju tokom testa ako pogode isti adresni prostor (tj. test fajl je manji od ukupne SLC keš memorije). Za takve uređaje veličina datoteke ponovo postaje važna. Ako vam je potrebno vaše stvarno radno opterećenje, najbolje je testirati s veličinama datoteka koje ćete zaista vidjeti u stvarnom životu. Inače bi vaši brojevi mogli izgledati predobro.

Imajte na umu da će fio kreirati potrebnu privremenu datoteku pri prvom pokretanju. Bit će ispunjen nasumičnim podacima kako bi se izbjeglo dobivanje previše dobrih brojeva od uređaja koji varaju komprimiranjem podataka prije nego što se zapišu u trajnu pohranu. Privremena datoteka će se zvati fio-tempfile.dat u gornjim primjerima i pohranjena u trenutnom radnom direktoriju. Dakle, prvo trebate promijeniti u direktorij koji je montiran na uređaju koji želite testirati.

Ako imate dobar SSD i želite vidjeti još veće brojke, povećajte --numjobs iznad. To definira paralelnost za čitanje i pisanje. Svi gornji primjeri imaju broj poslova postavljen na 1, tako da se test odnosi na čitanje i pisanje procesa s jednim navojem (moguće s redom postavljenim sa iodepth-om). Vrhunski SSD-ovi (npr. Intel Optane) bi trebali dobiti visoke brojeve čak i bez mnogo povećanja broja poslova (npr. 4 bi trebalo biti dovoljno da se dobiju najveći brojevi specifikacija), ali neki "Enterprise" SSD-ovi zahtijevaju odlazak na 32 - 128 da bi dobili specifikacije jer interna latencija tih uređaja je veća, ali je ukupna propusnost luda.

mob_info