Obvykle používám hdparm
pro porovnání mých HDD. Můžete porovnávat jak přímá čtení, tak čtení z mezipaměti. Budete chtít spustit příkazy několikrát, abyste stanovili průměrnou hodnotu.
Příklady
Zde je přímé čtení.
$ sudo hdparm -t /dev/sda2
/dev/sda2:
Timing buffered disk reads: 302 MB in 3.00 seconds = 100.58 MB/sec
A tady je čtení z mezipaměti.
$ sudo hdparm -T /dev/sda2
/dev/sda2:
Timing cached reads: 4636 MB in 2.00 seconds = 2318.89 MB/sec
Podrobnosti
-t Perform timings of device reads for benchmark and comparison
purposes. For meaningful results, this operation should be repeated
2-3 times on an otherwise inactive system (no other active processes)
with at least a couple of megabytes of free memory. This displays
the speed of reading through the buffer cache to the disk without
any prior caching of data. This measurement is an indication of how
fast the drive can sustain sequential data reads under Linux, without
any filesystem overhead. To ensure accurate measurements, the
buffer cache is flushed during the processing of -t using the
BLKFLSBUF ioctl.
-T Perform timings of cache reads for benchmark and comparison purposes.
For meaningful results, this operation should be repeated 2-3
times on an otherwise inactive system (no other active processes)
with at least a couple of megabytes of free memory. This displays
the speed of reading directly from the Linux buffer cache without
disk access. This measurement is essentially an indication of the
throughput of the processor, cache, and memory of the system under
test.
Pomocí dd
Také jsem použil dd
i pro tento typ testování. Jedna úprava, kterou bych provedl ve výše uvedeném příkazu, je přidat tento bit na konec vašeho příkazu, ; rm ddfile
.
$ time sh -c "dd if=/dev/zero of=ddfile bs=8k count=250000 && sync"; rm ddfile
Tím odstraníte ddfile
po dokončení příkazu. POZNÁMKA: ddfile
je přechodný soubor, který nemusíte uchovávat, je to soubor, který dd
zapisuje do (of=ddfile
), když zatěžuje váš HDD.
Jít dál
Pokud potřebujete důkladnější testování vašich HDD, můžete použít Bonnie++.
Odkazy
- Jak použít 'dd' k porovnání vašeho disku nebo CPU?
- Srovnání disků IO s DD a Bonnie++
(Toto je velmi populární otázka – její varianty můžete vidět na https://stackoverflow.com/q/1198691 , https://serverfault.com/q/219739/203726 a https://askubuntu.com/q /87035/740413 )
Existují lepší metody [než dd] pro [benchmark disky]?
Ano, ale jejich spuštění bude trvat déle a vyžadují znalosti, jak interpretovat výsledky – neexistuje jediné číslo, které by vám řeklo vše najednou, protože následující faktory ovlivňují typ testu, který byste měli spustit:
- Zajímá vás výkon I/O, který je náhodný, sekvenční nebo nějaký mix těchto dvou?
- Čtete z disku nebo zapisujete na disk (nebo nějakou kombinaci těchto dvou)?
- Zajímá vás latence, propustnost nebo obojí?
- Snažíte se porozumět tomu, jak fungují různé části stejného pevného disku (obecně rychlejší a blíže ke středu rotujících disků)?
- Zajímá vás, jak bude daný souborový systém fungovat při používání vašeho disku, nebo chcete, aby se výsledky přiblížily surovému výkonu disku tím, že budete I/O provádět přímo na blokovém zařízení?
- Zajímá vás, jak funguje konkrétní velikost I/O?
- Odesíláte I/O synchronně nebo asynchronně?
- Kolik I/O odesíláte (odesílejte příliš málo špatným způsobem a všechny I/O by mohly být uloženy do mezipaměti, takže nakonec budete testovat rychlost paměti RAM a ne rychlost disku)?
- Jak komprimovatelný je obsah dat, která zapisujete (např. data pouze nula jsou vysoce komprimovatelná a některé souborové systémy/disky mají dokonce speciální rychlou cestu pro data pouze nula vedoucí k číslům, která s jiným obsahem nelze získat)?
A tak dále.
Zde je krátký seznam nástrojů, které se nejsnáze spouštějí nahoře a obtížnější/důkladnější/lepší blíže dole:
- dd (sekvenční čtení nebo zápis, zobrazuje pouze propustnost, lze jej nakonfigurovat tak, aby používal souborový systém nebo blokové zařízení, lze jej nakonfigurovat tak, aby obcházel blokovou mezipaměť/čekal na skutečné dokončení I/O)
- hdparm (pouze sekvenční čtení, zobrazuje pouze propustnost, nikdy nepoužívá souborový systém, lze jej nakonfigurovat tak, aby obcházel blokovou mezipaměť, test mezipaměti znovu načítá pouze počáteční 2 MB)
- Srovnávací test GNOME Disk Utility (snadno se spouští, nikdy nepoužívá souborový systém, grafický, ale vyžaduje úplnou instalaci GNOME, poskytuje čísla latence a propustnosti pro různé typy I/O, ale zátěž při zápisu ve skutečnosti provádí čtení/zápis/fsync na vzorek velikost).
- fio (může dělat téměř cokoli a poskytuje podrobné výsledky, ale vyžaduje konfiguraci a porozumění tomu, jak dané výsledky interpretovat). Zde je to, co o tom říká Linus:
Gregu - získejte Jensův FIO kód. Dělá věci správně, včetně zapisování skutečného pseudonáhodného obsahu, který ukazuje, zda disk provádí nějakou „deduplikaci“ (neboli „optimalizaci pro benchmarky):
[ https://github.com/axboe/fio/ ]
Cokoli jiného je podezřelé – zapomeňte na bonnie nebo jiné tradiční nástroje.
Zdroj: komentář zanechaný na Google Plus Gregu Kroah-Hartmanovi od Linuse Torvaldse.
pomocí nástroje IOPS
Pokud se nemůžete obtěžovat číst toto vše, doporučil bych pouze nástroj IOPS. Řekne vám skutečnou rychlost v závislosti na velikosti bloku.
Jinak - při provádění IO benchmarku bych se podíval na následující věci:
- velikost bloků/mezipaměť/IOPS/přímé vs. vyrovnávací paměť/asynchronní vs. synchronizace
- čtení/zápis
- vlákna
- latence
-
Využití CPU
-
Jakou velikost bloku použijete :Pokud chcete číst/zapisovat 1 GB z/na disk, bude to rychlé, pokud provedete jednu I/O operaci. Ale pokud vaše aplikace potřebuje zapisovat do 512bajtových bloků na celý pevný disk v nesekvenčních částech (nazývaných náhodné I/O, i když to není náhodné), bude to vypadat jinak. Nyní budou databáze kvůli své povaze provádět náhodné I/O pro objem dat a sekvenční I/O pro objem protokolu. Nejprve si tedy musíte ujasnit, co chcete měřit. Pokud chcete kopírovat velké soubory videa, je to něco jiného, než když chcete instalovat Linux.
Tato velikost bloku ovlivňuje počet I/O operací, které provedete. Pokud uděláte např. 8 sekvenční operace čtení (nebo zápisu, jen ne smíšené) I/O plánovač OS je sloučí. Pokud ne, mezipaměť řadiče provede sloučení. Není prakticky žádný rozdíl, pokud čtete 8 sekvenčních bloků po 512 bajtech nebo jeden 4096 bajtový blok. Jedna výjimka - pokud se vám podaří provést přímou synchronizaci IO a počkat na 512 bajtů, než požádáte o dalších 512 bajtů. V tomto případě je zvětšení velikosti bloku jako přidání mezipaměti.
Měli byste si také uvědomit, že existuje synchronizace a asynchronní IO:Se synchronizací IO nevydáte další IO požadavek, dokud se aktuální nevrátí. S asynchronním IO můžete požádat např. 10 kusů dat a poté počkejte, až dorazí. Jednotlivá databázová vlákna obvykle používají synchronizaci IO pro protokol a asynchronní IO pro data. Nástroj IOPS postará se o to měřením všech relevantních velikostí bloků počínaje 512 bajty.
-
Budete číst nebo psát :Čtení je obvykle rychlejší než psaní. Všimněte si však, že ukládání do mezipaměti funguje pro čtení a zápis zcela jiným způsobem:
-
Pro zápisy budou data předána řadiči a pokud se ukládá do mezipaměti, potvrdí to dříve, než jsou data na disku, pokud není mezipaměť plná. Pomocí nástroje iozone můžete kreslit krásné grafy plató efektů mezipaměti (efekt mezipaměti CPU a efekt vyrovnávací paměti). Cache se stávají tím méně efektivní, čím více bylo zapsáno.
-
U čtení jsou přečtená data po prvním čtení uchovávána v mezipaměti. První čtení trvají nejdéle a ukládání do mezipaměti je během provozu stále efektivnější. Pozoruhodné mezipaměti jsou mezipaměť CPU, mezipaměť souborového systému OS, mezipaměť řadiče IO a mezipaměť úložiště. Nástroj IOPS pouze měří čtení. To mu umožňuje „číst všude“ a nechcete, aby místo čtení psalo.
-
-
Kolik vláken použijete :Pokud použijete jedno vlákno (pomocí dd pro testování disku), pravděpodobně získáte mnohem horší výkon než s několika vlákny. Nástroj IOPS bere to v úvahu a čte v několika vláknech.
-
Jak důležitá je pro vás latence :Při pohledu na databáze se IO latence stává nesmírně důležitou. Jakýkoli příkaz SQL vložení/aktualizace/smazání bude zapsán do deníku databáze ("log" v žargonu databáze) při odevzdání, než bude potvrzen. To znamená, že kompletní databáze může čekat na dokončení této IO operace. Zde ukazuji, jak měřit průměrnou dobu čekání (wait) pomocí nástroje iostat .
-
Jak důležité je pro vás využití procesoru :Váš procesor se může snadno stát úzkým hrdlem pro výkon vaší aplikace. V tomto případě musíte vědět, kolik cyklů CPU se spálí na přečtený/zapsaný bajt a optimalizovat tímto směrem. To může znamenat rozhodnout se pro/proti PCIe flash paměti v závislosti na výsledcích vašich měření. Opět nástroj iostat vám může poskytnout hrubý odhad využití CPU vašimi IO operacemi.