Как проверить производительность жесткого диска

Как проверить производительность жесткого диска (через терминал или через графический интерфейс). Скорость записи. Скорость чтения. Размер кэша и скорость. Случайная скорость.

9 ответов

Решение

Терминальный метод

hdparm это хорошее место для начала.

sudo hdparm -Tt /dev/sda

/dev/sda:
Timing cached reads:   12540 MB in  2.00 seconds = 6277.67 MB/sec
Timing buffered disk reads: 234 MB in  3.00 seconds =  77.98 MB/sec

sudo hdparm -v /dev/sda также даст информацию.

dd даст вам информацию о скорости записи.

Если на диске нет файловой системы (и только потом), используйте of=/dev/sda,

В противном случае, смонтируйте его в /tmp и запишите, затем удалите тестовый выходной файл.

dd if=/dev/zero of=/tmp/output bs=8k count=10k; rm -f /tmp/output

10240+0 records in
10240+0 records out
83886080 bytes (84 MB) copied, 1.08009 s, 77.7 MB/s

Графический метод

  1. Перейдите в Система -> Администрирование -> Дисковая утилита.
    • Или запустите утилиту диска Gnome из командной строки, запустив gnome-disks
  2. Выберите ваш жесткий диск на левой панели.
  3. Теперь нажмите кнопку "Benchmark - Measure Drive Performance" на правой панели.
  4. Откроется новое окно с графиками. Вы найдете и две кнопки. Один предназначен для "Начать тестирование только для чтения", а другой - "Начать тестирование для чтения / записи". Когда вы нажимаете на любую кнопку, начинается тестирование жесткого диска.

тестовое задание

Как сравнить дисковый ввод-вывод

Статья

Есть ли что-то еще, что вы хотите?

Суоминен прав, мы должны использовать какую-то синхронизацию; но есть более простой метод, conv=fdatasync сделает эту работу:

dd if=/dev/zero of=/tmp/output conv=fdatasync bs=384k count=1k; rm -f /tmp/output
1024+0records in
1024+0 records out
402653184 bytes (403 MB) copied, 3.19232 s, 126 MB/s

Если вы хотите точности, вы должны использовать fio, Требуется прочитать руководство (man fio) но это даст вам точные результаты. Обратите внимание, что для любой точности вам необходимо указать именно то, что вы хотите измерить. Некоторые примеры:

Последовательная скорость чтения с большими блоками (это должно быть около числа, которое вы видите в технических характеристиках вашего привода):

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

Последовательная скорость ЗАПИСИ с большими блоками (это должно быть около числа, которое вы видите в технических характеристиках вашего привода):

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

Случайное чтение 4K QD1 (это число, которое действительно имеет значение для производительности в реальном мире, если вы не знаете наверняка лучше):

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

Смешанное случайное чтение 4D и запись QD1 с синхронизацией (это наихудший случай, который вы когда-либо ожидали от своего накопителя, обычно 1-10% от числа, указанного в спецификации):

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

Увеличить --size аргумент для увеличения размера файла. Использование больших файлов может уменьшить количество получаемых вами данных в зависимости от технологии привода и прошивки. Небольшие файлы дадут "слишком хорошие" результаты для ротационных носителей, потому что считывающей головке не нужно слишком много двигаться. Если ваше устройство почти пусто, использование файла, достаточно большого, чтобы заполнить диск, приведет к худшему поведению в каждом тесте. В случае SSD размер файла не имеет большого значения.

Обратите внимание, что fio создаст требуемый временный файл при первом запуске. Он будет заполнен случайными данными, чтобы избежать получения слишком хороших чисел с устройств, которые обманывают, сжимая данные перед их записью в постоянное хранилище. Временный файл будет называться fio-tempfile.dat в приведенных выше примерах и хранятся в текущем рабочем каталоге. Поэтому вам следует сначала перейти в каталог, который смонтирован на устройстве, которое вы хотите протестировать.

Я бы не рекомендовал использовать /dev/urandom потому что это программное обеспечение и медленно, как свинья. Лучше взять кусок случайных данных на ramdisk. На жестком диске случайное тестирование не имеет значения, потому что каждый байт записывается как есть (также на ssd с dd). Но если мы протестируем дедуплицированный пул zfs с чистыми нулями или случайными данными, разница в производительности будет огромной.

Другой точкой зрения должно быть включение времени синхронизации; все современные файловые системы используют кеширование файловых операций.

Чтобы реально измерить скорость диска, а не памяти, мы должны синхронизировать файловую систему, чтобы избавиться от эффекта кэширования. Это может быть легко сделано:

time sh -c "dd if=/dev/zero of=testfile bs=100k count=1k && sync"

с этим методом вы получите вывод:

sync ; time sh -c "dd if=/dev/zero of=testfile bs=100k count=1k  && sync" ; rm testfile 
1024+0 records in
1024+0 records out
104857600 bytes (105 MB) copied, 0.270684 s, 387 MB/s

real    0m0.441s
user    0m0.004s
sys 0m0.124s

поэтому данные на диске составляют всего 104857600 / 0,441 = 237772335 B/s -> 237MB/s

Это на 100 МБ / с ниже, чем при кешировании.

Счастливый бенчмаркинг,

Если вы хотите отслеживать скорость чтения и записи диска в режиме реального времени, вы можете использовать инструмент iotop.

Это полезно для получения точной информации о том, как диск работает для конкретного приложения или задачи. Вывод покажет вам скорость чтения / записи на процесс и общую скорость чтения / записи для сервера, очень похожую на top,

Чтобы установить iotop:

sudo apt-get install iotop  

Чтобы запустить это:

sudo iotop

Скорость письма

$ dd if=/dev/zero of=./largefile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.82364 s, 223 MB/s

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


Скорость чтения

Запустите следующую команду, чтобы очистить кэш памяти

$ 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

bonnie++ - лучшая утилита для тестирования производительности, которую я знаю для linux.

(В настоящее время я готовлю linux livecd для работы с bonnie++, чтобы протестировать наш Windows-компьютер с ним!)

Он заботится о кэшировании, синхронизации, случайных данных, случайном расположении на диске, небольших размерах обновлений, больших обновлениях, чтениях, записи и т. Д. Сравнение usbkey, жесткого диска (поворотного), твердотельного накопителя и оперативной памяти Файловая система может быть очень информативной для новичка.

Я понятия не имею, включен ли он в Ubuntu, но вы можете легко скомпилировать его из исходного кода.

http://www.coker.com.au/bonnie++/

Некоторые советы о том, как использовать Бонни ++

bonnie++ -d [TEST_LOCATION] -s [TEST_SIZE] -n 0 -m [TEST_NAME] -f -b -u [TEST_USER] 
bonnie++ -d /tmp -s 4G -n 0 -m TEST -f -b -u james

Немного больше на: SIMPLE BONNIE ++ EXAMPLE.

F3 - Борьба с мошенничеством

Проверьте целостность, обнаружите фальшивые флешки и протестируйте производительность - все три в одном кадре.

Подробнее об этом ответе АС.

Другие вопросы по тегам