Tartalom
Bevezető
Otthoni számítógép vagy szerver építésénél lényeges szempont a gép merevlemezeinek az adatátviteli sebessége. Ha a gépben lévő meghajtók sebessége lassú, az erősen rontja az összteljesítményt, még ha a processzor és/vagy a RAM erősebb kategóriát is képvisel. Minden operációs rendszer használata esetén van lehetőség ennek mérésére, nincs ez másképp a Linux rendszerekben sem. Többféle módon is teszteljük HDD-nk sebességét, hogy átfogóbb képet kaphassunk eszközeink állapotáról.
Tesztalanyok
Ebben a leírásban az asztali gépemben lévő SSD, valamint ugyanebben a gépben lévő 1 TB-os hagyományos SATA2-es és a régi laptopomban lévő szintén SATA2-es winchesterek sebességeinek mérését fogom bemutatni.
Nálam ez a téma most úgy is aktuális a laptoppal kapcsolatban, mivel már régi, és a benne lévő egyetlen SATA2-es HDD-vel a gép eléggé lassú. A processzora még tűrhető, egy 2 GHz-s Intel Core2 Duo (T5870) van benne:
valamint 4 GB RAM. Az évek alatt rátelepített operációs rendszerek mindegyikénél azt tapasztaltam, hogy a CPU nincs teljesen kihasználva, a rendszer folyamatosan a merevlemezre vár. Bootoláskor vagy programok indításakor a HDD LED folyamatosan világít, miközben a CPU messze jár a csúcstól. Ebből következtethető, hogy a gépben a winchester a leggyengébb láncszem, ezért megérett a cserére. Viszont előtte még kíváncsiságból elvégzem a sebességtesztjét, hogy majd össze tudjam hasonlítani az újjal. A laptopon jelenleg egy Debian 10 (Buster) rendszer van, LXQT asztallal, amit nemrég telepítettem fel.
Mivel ebben még csak SATA2-es interfész van, ezért egy SSD meghajtó sebességét nem tudná teljesen kihasználni. Így egyelőre beszereztem egy kb. 1 éves 512GB-os Toshiba HDD-t, aminek a sebességhatára még bőven belefér a SATA2 szabványba. Bár ha belegondolunk, lehet hogy mégis jobb lenne inkább egy nem a max sebességén működő SSD, mint egy hagyományos háttértár, de ez majd még alakul...
A SATA (1-3) szabványok sebességei egyébként az alábbiak:
- SATA 1.0 => 1.5 Gbit/s, kb. 150 MB/s
- SATA 2.0 => 3 Gbit/s, kb. 300 MB/s
- SATA 3.0 => 6 Gbit/s, kb. 600 MB/s
Hasznos hardveradatok kiolvasása
SATA interfész felderítése
Első körben nem árt, ha ki tudjuk deríteni, hogy a számítógépünkben melyik verziójú SATA interfész áll rendelkezésre, hogy tudjuk mire számíthatunk a maximális sebességeket illetően. Persze egy mai, korszerű számítógép esetében ez már nem olyan lényeges, ahol már a SATA Express-eknél járunk, de egy régebbi gépnél fontos tényező, mint például a laptopom esetében is.
Ennek lekérdezéséhez rootként futtassuk a dmesg parancsot a megfelelő szűréssel:
dmesg | grep -i sata | grep 'link up'
A parancs nálam az asztali gépen a következő kimenetet adja:
Itt látható, hogy rendelkezésre áll a 6 Gbps SATA3 csatlakozás, valamint a régebbi szabványokkal is kompatibilis, tehát ebben a gépben egy mai merevlemez maximális adatátvitele körülbelül 600 Mb/s lehet.
A laptopban ugyanez a parancs a következőt adja:
Itt pedig csak a SATA 2-es szabványát lehet használni, amitől nem várhatunk többet, mint kb 300 Mb/s-es maximális átvitel.
Merevlemez adatok kiolvasása
Még érdemes kiolvasni a mérni kívánt merevlemez egyéb adatait is, hátha találunk közöttük hasznos információkat. Ehhez root-ként telepítsük a smartmontools csomagot:
apt-get install smartmontools
A csomag tartalmazza a számunkra szükséges smartctl parancsot is, amivel kiolvashatjuk a háttértáraink pontos adatait.
Ha a gépben több tárolóeszköz is található, akkor az lsblk paranccsal kérdezhetjük le azoknak az eléréseit.
lsblk
Majd a megfelelő blokk eszköz adatainak lekéréséhez futtassuk a smartctl parancsot, például:
smartctl -i /dev/sda
Ez a laptopom egyetlen merevlemeze, a fenti parancsok ezt a kimenetet adja rá:
És így lekérdezhetjük az összes meghajtónkat, amivel még több információhoz juthatunk a SATA eszközeinket illetően.
Most, hogy már tisztában vagyunk a gépünkben lévő SATA portok verziójával és a merevlemezeink részletes adataival, neki is állhatunk a méréseknek.
HDD sebességtesztek többféle módon
A Linux rendszerben számos mód létezik arra, hogy megmérjük a gépünkben vagy szerverünkben lévő merevlemezek sebességét. Ebben a részben átnézünk néhányat ezek közül.
Mérés a dd parancs segítségével
Első, és talán a legkézenfekvőbb megoldás a dd linux parancs használata, ami erre a célra is kiválóan alkalmas. A parancs az alaprendszer része, így nem kell telepítenünk hozzá semmit, egyből használhatjuk.
Írási tesztek
Először az írási sebességet mérjük úgy, hogy a cél helyen létrehozunk egy fájlt, és feltöltjük null karakterekkel. Ha a gépben több merevlemez is van, akkor az lsblk paranccsal keressük meg a mérni kívánt eszköz csatolási pontját, hogy a megfelelő helyen történjen a fájl írása:
lsblk
Példa kimenet nálam az asztalin:
Itt az sda eszköz az SSD meghajtó, ami a gyökér fájlrendszerbe van csatlakoztatva, így tehát a /tmp könyvtár nálam megfelelő hely az SSD írási sebességének tesztelésére.
Lépjünk be a számunkra megfelelő hasonló könyvtárba,
cd /tmp
majd futtassuk a dd parancsot:
sync; dd if=/dev/zero of=./tesztfile bs=4k count=256k conv=fdatasync
Itt először lefuttatunk egy sync parancsot, ami a mérés előtt még kiírja az írási pufferben maradt korábbi tartalmat, hogy pl. késleltetett írási adatok ne zavarhassák be a mérést. Így tehát "tiszta lappal" indulhat a fájl írása és annak mérése.
A dd parancsnak pedig a következő kapcsolókat adjuk:
- if=/dev/zero: Bemenet: A /dev/zero fájlból olvasva annyi null karaktert kapunk, amennyit az olvasási művelet kér (Wikipédia).
- of=./tesztfile: Kimeneti fájl. Ebbe a fájlba tölti fel a parancs a null karaktereket. Jelen esetben az aktuális könyvtárban hoz létre egy tesztfile nevű fájlt.
- bs=4k: Blokkméret: 4 Kbyte. Ekkora blokkokban történik az írás.
- count=256k: Ismétlések száma: 256 ezerszer hajtja végre az írást az említett blokkmérettel.
- conv=fdatasync: Ez pedig gondoskodik róla, hogy a parancs végrehajtásáig fizikailag is ki legyenek írva az adatok a lemezre. Így pontos lesz a mérés, nincs késleltetett írás, stb.
Ez a konkrét parancs létrehoz egy kerek 1 GB méretű fájlt a megadott helyen, valamint ilyen kimenetet ad:
262144+0 beolvasott rekord 262144+0 kiírt rekord 1073741824 bájt (1,1 GB, 1,0 GiB) másolva, 2,48485 s, 432 MB/s
A kimenetben megjelenik az átviteli sebesség is. Jelen esetben ez 432 MB/másodperc. Egy SSD meghajtónál ez normális érték.
Persze egy darab mérés nem sokat ér, többször meg kell ismételnünk, majd az eredmények átlagát kell nézni.
Továbbá a blokkméretet is növelni kell – ahogyan a HDD teszteknél szokás –, hogy átfogóbb képet kaphassunk merevlemezünk sebességéről. A nagyobb blokkméretek mérésénél viszont csökkentenünk kell az ismétlések számát, hogy az írási teszt ne tartson túl sokáig, illetve a teszt fájlunk se hízzon túl nagyra.
Ennek megfelelően tehát a növekvő blokkméretekkel és csökkenő ismétlési számokkal elvégzett tesztsorozat eredménye nálam az SSD meghajtón:
Ez pedig a hagyományos SATA2-es HDD tesztsorozata:
És végül a laptopban lévő HDD sebességtesztjei:
A dd paranccsal történő sebességteszteknél mindig figyeljünk arra, hogy a megfelelő könyvtárban történjen az írás/olvasás, ami fizikailag a cél meghajtón van.
Olvasási tesztek
A következő lépésben a létrejött tesztfájlok olvasásával fogjuk végezni a merevlemezek olvasási tesztjeit.
Ehhez ugyanúgy be kell lépni a megfelelő merevlemezhez tartozó alkönyvtárba, és az ott létrehozott tesztfájlt kell olvasnunk szintén a dd paranccsal.
Itt annyi a különbség, hogy a bemenetünk lesz a korábban kiírt tesztfájl, a kimenet pedig a /dev/null, azaz a "semmibe" írjuk ki a fájlt, ami nem jár további lemezre írási művelettel. Ebből adódik, hogy a korábban alkalmazott írási puffer kiürítésére használt sync parancs és a késleltetett írást letiltó conv=fdatasync kapcsoló érvényüket veszítik ezért elhagyjuk őket. Helyettük a sysctl paranccsal töröljük az olvasási puffert a mérés előtt. Ennek megfelelően a minta parancsunk a következőképpen alakul, amit így már csak root-ként futtathatunk:
sysctl -w vm.drop_caches=3; dd if=./tesztfile of=/dev/null bs=4k count=256k
Ha kihagynánk a sysctl parancsot, akkor a dd parancs a memóriapufferből történő olvasás idejét mérné, ami több Gb/s sebességet eredményezne. Tehát a pontos mérést ennek alkalmazásával tudjuk megvalósítani.
A tesztsorozat az SSD-n a szokásos növekvő blokkméretekkel:
És a laptopban lévő SATA 2-es háttértáron:
A teszteket többször kell futtatni, és az eredmények átlagát kell nézi, hogy pontosabb adatot kaphassunk.
Az olvasási tesztek végeztével ne felejtsük el letörölni a tesztfájlokat.
Mérés a hdparm parancs segítségével
A hdparm egy lemezkezelő program, melynek segítségével információkat, teszteket kérhetünk le HDD eszközeinkről, valamint sok paramétert be is állíthatunk. A hdparm linux parancs alapból nem a Debian rendszerek része, ezért a csomagját telepíteni kell:
apt-get install hdparm
Ezután már használható.
Hardverinformációk lekérése
A hdparm segítségével is hozzájuthatunk merevlemezünk minden technikai adataihoz, ha futtatjuk az alábbi parancsot:
hdparm -I /dev/sda
Ahol a /dev/sda helyére értelemszerűen be kell helyettesítenünk a vizsgálni kívánt blokk eszközünket. A parancsot futtatva hasznos információkhoz juthatunk. Nálam például a laptopban lévő régi HDD-ről ezeket adja:
/dev/sda: ATA device, with non-removable media Model Number: Hitachi HTS545025B9A300 Serial Number: 091002PB42081SC46M2L Firmware Revision: PB2OC64G Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6; Revision: ATA8-AST T13 Project D1697 Revision 0b Standards: Used: unknown (minor revision code 0x0028) Supported: 8 7 6 5 Likely used: 8 Configuration: Logical max current cylinders 16383 16383 heads 16 16 sectors/track 63 63 -- CHS current addressable sectors: 16514064 LBA user addressable sectors: 268435455 LBA48 user addressable sectors: 488397168 Logical/Physical Sector size: 512 bytes device size with M = 1024*1024: 238475 MBytes device size with M = 1000*1000: 250059 MBytes (250 GB) cache/buffer size = 7208 KBytes (type=DualPortCache) Form Factor: 2.5 inch Nominal Media Rotation Rate: 5400 Capabilities: LBA, IORDY(can be disabled) Queue depth: 32 Standby timer values: spec'd by Vendor, no device specific minimum R/W multiple sector transfer: Max = 16 Current = 16 Advanced power management level: 254 Recommended acoustic management value: 128, current value: 254 DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 Cycle time: min=120ns recommended=120ns PIO: pio0 pio1 pio2 pio3 pio4 Cycle time: no flow control=120ns IORDY flow control=120ns Commands/features: Enabled Supported: * SMART feature set Security Mode feature set * Power Management feature set * Write cache * Look-ahead * Host Protected Area feature set * WRITE_BUFFER command * READ_BUFFER command * NOP cmd * DOWNLOAD_MICROCODE * Advanced Power Management feature set Power-Up In Standby feature set * SET_FEATURES required to spinup after power up SET_MAX security extension Automatic Acoustic Management feature set * 48-bit Address feature set * Device Configuration Overlay feature set * Mandatory FLUSH_CACHE * FLUSH_CACHE_EXT * SMART error logging * SMART self-test * General Purpose Logging feature set * WRITE_{DMA|MULTIPLE}_FUA_EXT * 64-bit World wide name * IDLE_IMMEDIATE with UNLOAD * WRITE_UNCORRECTABLE_EXT command * {READ,WRITE}_DMA_EXT_GPL commands * Segmented DOWNLOAD_MICROCODE * Gen1 signaling speed (1.5Gb/s) * Gen2 signaling speed (3.0Gb/s) * Native Command Queueing (NCQ) * Host-initiated interface power management * Phy event counters * NCQ priority information Non-Zero buffer offsets in DMA Setup FIS DMA Setup Auto-Activate optimization Device-initiated interface power management In-order data delivery * Software settings preservation * SMART Command Transport (SCT) feature set * SCT Write Same (AC2) * SCT Error Recovery Control (AC3) * SCT Features Control (AC4) * SCT Data Tables (AC5) Security: Master password revision code = 65534 supported not enabled not locked frozen not expired: security count supported: enhanced erase 82min for SECURITY ERASE UNIT. 84min for ENHANCED SECURITY ERASE UNIT. Logical Unit WWN Device Identifier: 5000cca5e8c1ea51 NAA : 5 IEEE OUI : 000cca Unique ID : 5e8c1ea51 Checksum: correct
Gyors olvasási teszt parancssorból
A program segítségével egyszerűen és gyorsan végezhetünk olvasási sebességtesztet root-ként a parancssorból:
hdparm -Tt /dev/sda
A Timing cached reads utáni érték a cache-ból történő olvasási sebességet jelzi, majd utána a Timing buffered disk reads értéke pedig a rendes lemezről történő olvasási sebességet mutatja. Természetesen ezek az értékek több minta átlagán alapulnak.
Olvasási teszt grafikus felületen
Ha már feltelepítettük a hdparm programot, akkor a programcsomag tartalmaz egy grafikus frontend-et is, amivel grafikonon kirajzolva tekinthetjük meg a mérési eredményeket. Mivel asztalkörnyezetenként változhat, hogy melyik menübe kerül ki az ikonja a programnak, illetve egyáltalán kikerül-e, egyszerűbb, ha futtatjuk az indító parancsát root-ként:
gnome-disks
A program indulása után az alábbi ablak fogad bennünket:
Alapból ez a program egy lemez particionáló, mint például a Gparted, viszont van benne sebességmérő rész is, ami itt most a lényeges. Először a bal oldalon válasszuk ki a mérni kívánt lemez eszközünket, majd a sebességteszt használatához kattintsuk a fejléc jobb felén lévő 3 csíkos (hamburger) menüre, ekkor előjön egy legördülő. Ebben válasszuk a Lemez teljesítménytesztje... opciót. Előjön a következő ablak:
Itt kattintsunk a bal alsó Teljesítményteszt indítása gombra. Erre előjön még egy ablak:
Itt a felső részen figyelmeztet, hogy az írási teszthez mentsük le az adatainkat, de nem lesz rá szükség, mert írási tesztet nem végzünk! A fenti két mezőt hagyhatjuk az alapértelmezett értékeken, majd az Írási teljesítményteszt checkboxból vegyük ki a pipát, ahogyan pirossal is jelöltem!
Ez a program csak úgy végez írási teszteket, ha le van csatolva a meghajtó, majd azon nyers adatokat mozgat, tehát a rajta lévő adataink elveszhetnek! Ezért most csak olvasási tesztet végzünk!
Ennek megfelelően mindenképpen vegyük ki a pipát a piros nyíllal jelölt résznél!
Ha mégis szeretnénk kísérletezni, akkor pl. üres pendrive-al vagy szintén üres USB HDD-kkel kipróbálhatjuk, de semmiképpen sem a használatban lévő eszközeinkkel!
Ha tehát kivettük a pipát az írási teljesítményteszt elől, mehet is a Teljesítményteszt megkezdése... gomb. Ekkor bekéri a root jelszót, majd utána elindul a tesztelés. Nálam ezek az eredmények születtek:
Asztali gépem SSD-jén:
Az asztaliban lévő SATA2-es HDD:
És a leglassabb, a laptopban lévő SATA2-es meghajtóm:
A grafikonok felső részein láthatjuk a szekvenciális olvasási sebességeket – ami mindig gyorsabb –, lent pedig a véletlenszerű olvasási eredményeket. Lényegében az alsó rész a meghatározó, mert például egy operációs rendszer indulásánál, illetve hétköznapi használata során a véletlenszerű olvasási és írási műveletek váltják egymást. Ha pedig például nagyobb fájlokat másolunk gépünkön, akkor kerülnek csak kihasználásra a grafikonok fenti részein is látható nagyobb olvasási sebességek.
Konklúzió
A teljesség igénye nélkül ez lenne néhány HDD sebesség mérési módszer. Persze vannak még alternatívák, ezekkel már nem kívántam tovább nyújtani a leírást. Kiindulásnak az itt említett módszerek kiválóak, valamint ha átfogó képet szeretnénk kapni háttértáraink állapotáról és teljesítményéről.
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
- 1404 megtekintés