Linux перевірити швидкість диска. Як виміряти швидкість жорсткого диска

Оригінал: Test read/write speed of usb and ssd drives with dd command on Linux
Автор: Silver Moon
Дата публікації: Jul 12, 2014
Переклад: Н.Ромоданов
Дата перекладу: жовтень 2014 р.

Швидкість роботи пристрою

Швидкість роботи пристрою вимірюється в одиницях, що вказують скільки даних може читати або писати в одиницю часу. Команда dd є простим інструментом командного рядка, який можна використовувати для читання та запису довільних блоків даних на диску та вимірювати швидкість, з якою відбулася передача даних.

У цій статті ми будемо використовувати команду dd для перевірки швидкості читання та запису пристроїв usb та ssd.

Швидкість передачі залежить не тільки від диска, а й від інтерфейсу, через який він підключений. Наприклад порт usb 2.0 має максимальне функціональне обмеження швидкості в 35 Мбайт/с, так що навіть якщо ви підключили до порту usb 2 високошвидкісний флеш-накопичувач usb 3, швидкість буде обмежена меншим значенням.

Те саме стосується і пристрою SSD. Пристрій SSD підключається через порти SATA, які мають різні версії. Sata 2.0 має максимальну теоретичну межу швидкість 3Гбіт/с, що дорівнює приблизно 375 Мбайт/с. У той час як SATA 3.0 підтримує вдвічі більшу швидкість.

Метод тестування

Змонтуйте диск та перейдіть до нього з термінального вікна. Потім використовуйте команду dd спочатку запису файлу, що складається із блоків фіксованого розміру. Потім прочитайте той же файл з використанням такого ж розміру блоків.

Загальний синтаксис команди dd виглядає так

Dd if=path/to/input_file of=/path/to/output_file bs=block_size count=number_of_blocks

При записі на диску ми просто виконуємо читання з пристрою /dev/zero, який є джерелом нескінченної кількості байтів. Коли читається з диска, ми читаємо записаний раніше файл і відправляємо його в пристрій /dev/null, якого насправді немає. Протягом усього процесу команда dd відстежує швидкість, з якою відбувається передача, та повідомляє про неї.

Пристрій SSD

Пристрій, який ми використовуємо, є диском "Samsung Evo 120GB" SSD. Це пристрій ssd початкового рівня, що стосується бюджетних, а також це мій перший диск SSD. Він також є одним із найпродуктивніших твердотільних накопичувачів з наявних на ринку.

У цьому тесті диск ssd підключено до порту sata 2.0.

Швидкість запису

Давайте спочатку зробимо запис на ssd

$ dd if=/dev/zero of=./largefile bs=1M count=1024 1024+0 записів у 1024+0 записів над 1073741824 bytes (1.1 GB)

Розмір блоку насправді досить великий. Ви можете спробувати використовувати менший розмір, наприклад 64k або навіть 4k.

Швидкість читання

Тепер, навпаки, прочитайте той самий файл. Але спочатку очистіть кеш пам'яті для того, щоб бути впевненим, що файл, насправді, читається з диска.

Щоб очистити кеш пам'яті, виконайте наступну команду

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

Тепер прочитайте файл

$ dd if=./largefile of=/dev/null bs=4k 165118+0 records in 165118+0 records out 676323328 bytes (676 MB) copied, 3.0114 s, 225 MB/s

Пристрій USB

У цьому тесті ми будемо вимірювати швидкість читання та звичайних флеш-накопичувачів usb. Пристрої підключаються до стандартних портів usb 2. Першим пристроєм є usb-накопичувач sony 4gb, а другим - strontium 16gb.

Спочатку підключіть пристрій і змонтуйте його так, щоб він був доступним для читання. Потім із командного рядка перейдіть до змонтованого каталогу.

Пристрій Sony 4GB - запис

У цьому тесті команда dd використовується для запису 10000 шматків даних по 8 Кбайт кожен в одному файлі на диску.

# dd if = / dev / zero of =.

Швидкість запису становить близько 7,5 Мбайт/с. Це найнижчий показник.

Пристрій Sony 4GB - читання

Той самий файл зчитується для перевірки швидкості читання. Щоб очистити кеш пам'яті, виконайте наступну команду

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

Тепер прочитайте файл за допомогою dd

# dd if=./largefile of=/dev/null bs=8k 8000+0 records in 8000+0 records out 65536000 bytes (66 MB)

Швидкість читання дорівнює приблизно 25 Мбайт/с, що більш менш стандартно для дешевих флешок usb.

USB 2.0 має максимальну теоретичну швидкість передачі сигналів рівну 480 Мбіт/с або 60 Мбайт/с. Але з різних обмежень максимальна пропускна спроможність обмежена приблизно значенням 280 Мбіт/с чи 35 Мбайт/с. Крім цього, фактична швидкість залежить від якості флешки, а також і від інших факторів.

І оскільки описане вище пристрій usbбуло підключено до порту USB 2.0 і було досягнуто швидкість читання, що дорівнює 24,7 Мбайт/с, що дуже погано. Але швидкість запису дуже відстає.

Тепер давайте виконаємо той же тест з флешкою ​​Strontium 16gb. Strontium це ще один бренд, під яким випускаються дуже дешеві флешки usb, але ці флешки надійні.

Швидкість запису для Strontium 16gb

# dd if = / dev / zero of =.

Швидкість читання для пристрою Strontium 16gb

# sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches" # dd if=./largefile of=/dev/null bs=8k MB) copied, 2.90366 s, 22.6 MB/s

Швидкість читання даних нижче, ніж для Sony.

Щоб визначити швидкість запису на диск, необхідно виконати наступну команду в консолі:

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

Команда записує тимчасовий файл розміром 1мб 1024 рази і результат її роботи буде виводити такі дані

1024+0 записів отримано 1024+0 записів відправлено скопійовано 1073741824 байти (1,1 GB), 15,4992 c, 69,3 MB/c

Щоб визначити швидкість читання з диска, необхідно виконати наступну команду в консолі:

Тимчасовий файл, який був згенерований попередньою командою, закешований в буфер, що само собою підвищить швидкість його читання і вона буде набагато вищою ніж реальна швидкість читання безпосередньо з жорсткого диска. Щоб отримати реальну швидкість, необхідно попередньо очистити цей кеш.

Для визначення швидкості читання з диска з буфера потрібно виконати наступну команду в консолі:

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

Висновок попередньої команди:

1024+0 записів отримано 1024+0 записів відправлено скопійовано 1073741824 байти (1,1 GB), 15,446 c, 69,5 MB/c

Щоб виміряти реальну швидкість читання з диска, очищаємо кеш:

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

Висновок команди:

Vm.drop_caches = 3

Виробляємо тест швидкості читання після очищення кешу:

Dd if=tempfile of=/dev/null bs=1M count=1024 1024+0 записів отримано 1024+0 записів відправлено скопійовано 1073741824 байта (1,1 GB), 16,5786 c, 64,8 MB/c

Виконання тесту швидкості читання/запису на зовнішньому накопичувачі

Для тестування швидкості будь-якого Зовнішнього HDD, USB Флешки або іншого знімного носія або файлової системи віддаленої машини (vps/vds) необхідно перейти в точку монтування і виконати наведені вище команди.

Або, замість tempfile, можна звичайно прописати шлях до точки монтування, як наведено нижче:

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

Також слід зазначити, що наведені вище команди використовують тимчасовий файл tempfile. Не забудьте його видалити після закінчення тестів.

Тест швидкості HDD за допомогою утиліти hdparm

hdparm - це Linux утилітаяка дозволяє швидко дізнатися швидкість читання з вашого hdd.

Для запуску вимірювання швидкості читання з жорсткого диска необхідно виконати наступну команду в консолі:

Sudo hdparm -Tt /dev/sda

Виведення команди в консолі:

/dev/sda: Timing cached reads: 6630 MB in 2.00 seconds = 3315.66 MB/sec Timing buffered disk reads: 236 MB in 3.02 seconds = 78.17 MB/sec

На цьому все. Таким чином ми змогли дізнатися про продуктивність нашого жорсткого диска і дати приблизну оцінку його можливостям.

Це потребує reading manual (man fio), але це потрібно, щоб отримати результати. Зауважте, що за будь-яку акурацію, вам потрібна особливість exactly what you want to measure. Деякі examples:

Sequential READ speed with big blocks

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

Sequential WRITE speed with big blocks(Цей повинен бути поруч номер і ви бачите в specifications for your drive):

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

Random 4K read QD1(Це є число, що реально матір'ю для реального світу розв'язання unless you know better for sure):

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

Mixed random 4K read and write QD1 with sync(Це є висока кількість номерів, які ви повинні expect from your drive, звичайно менше, ніж 1% номерів, розміщених у spec sheet):

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

Increase the --size argument to increase the file size. За допомогою великих файлів можна зменшити номери, які Ви бажаєте depending on drive technology and firmware. Невеликі файли будуть вести "тиснуті" результати для ротаційного медіа тому, що read head не потребує переміщення, що мусить. Якщо ваш пристрій є близькою приємною, використовуючи файл велику статтю до майже всіх гравців, щоб отримати ваш швидкий випадок бігу для всіх тестів. У випадку SSD, файл файлу не має матір, що дуже.

Але, помічайте, що для деяких територій медіа розмір файлу не є важливим як загальні шрифти написані протягом тривалого періоду. Для прикладу, деякі SSDs можуть мати значний простий розв'язання з попередньо встановленими блоками або його максимальний розмір малої SLC flash area, що "використовується як плата за електронною поштою, так і виконання функцій для SLC cache is full. As another example, Seagate SMR HDDs 20 GB PMR cache area that has pretty high performance but once it gets full, writing directly to SMR area may cut the performance to 10% from the original. За допомогою курсу, це все залежить від вашої роботи: якщо натиснути access bursty with longish delays that allow the device to clean the internal cache, shorter test sequences will reflect your real world performance better. IO, вам потрібна для збільшення обсягів --io_size and --runtime parameters. testing, it should not be used to hold any valueable data in any case.

В додаток, деякі високої якості SSD пристроїв може бути навіть більше хитромудрі їздити algoritms, де internal SLC cache має багато smarts, щоб переміщатися в робочому місці, коли ви перевірили, що протягом тесту, якщо його висить той самий address space (що це, is smaller than total SLC cache). Для таких пристроїв, файл файлу статей до матчу починають. Якщо ви потребуєте поточного робочого часу, це "відмінно для виходу з файлу розмірів, які ви маєте в реальному житті. Іншіwise numbers може здатися хорошим.

Зверніть увагу, що fio буде створювати потрібний temporary file on first run. Це буде зв'язатися з довжиною часу, щоб отримати достатню кількість номерів від пристроїв, які дають змогу сприймати дані перед тим, як отримувати його в permanente storage. temporary file буде називатися fio-tempfile.dat в додаткових examples і stored in current working directory. Якщо ви повинні першу зміну до директора, що є встановленим на вашому пристрої, щоб спробувати.

Якщо ви маєте хороший SSD і хотіли б додати більше номерів, збільшення - numjobs above. Що defines the concurrency for the reads and writes. Наведені нижче описи мають всі номери набір до однієї з них. High end SSDs (e.g. Intel Optane) повинні отримувати високі номери навіть без збільшення числа номерів на лоті (e.g. 4 повинні бути потрібні для отримання високої кількості номерів), але деякі "Enterprise" SSDs повинні йти до 32 - 1 internal latency of this devices is highher but the overall throughput is insane.

mob_info