На этом диске будут проводится тесты, описанные ниже:
Western Digital Caviar Green 500GB 64МB WD5000AZRX 3.5
О том, как получить подробные данные о вашем жестком диске – можно прочитать в статье Linux: получение информации о hardware — HDD.
Основной раздел:
[simterm]
# file -s /dev/sda7
/dev/sda7: Linux rev 1.0 ext4 filesystem data…
[/simterm]
Содержание
tune2fs
Более подробную информацию об используемой файловой системе посмотреть можно с помощью tune2fs:
[simterm]
# tune2fs -l /dev/sda7
tune2fs 1.42 (29-Nov-2011)
Filesystem volume name: <none>
Last mounted on: /
…
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
..
Filesystem state: clean
…
Filesystem OS type: Linux
Inode count: 2940928
Block count: 11760384
Reserved block count: 588019
Free blocks: 5859079
Free inodes: 2697004
First block: 0
Block size: 4096
Fragment size: 4096
…
Filesystem created: Thu Feb 14 13:59:03 2013
Last mount time: Thu Feb 21 06:46:41 2013
Last write time: Sun Feb 17 16:36:41 2013
…
Last checked: Thu Feb 14 13:59:03 2013
…
[/simterm]
Конечно же, перед выполнением тестов убедитесь, что не запущены никакие задачи, создающие нагрузку на дисковую систему.
dd
Самый простой способ проверки скорости чтения/записи на жесткий диск (hard disk input/output value):
[simterm]
# dd if=/dev/sda7 of=/dev/null
^C8058505+0 records in
8058504+0 records out
4125954048 bytes (4.1 GB) copied, 36.5952 s, 113 MB/s
[/simterm]
Лучше выполнять его хотя бы 1-2 минуты. Почему – пояснение в следующих примерах:
[simterm]
# dd if=/dev/sda7 of=iotestfile bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.247265 s, 424 MB/s
[/simterm]
424 МБ/с – по сравнению с 113 MB/s в предыдущем примере – почему такая разница?
dd вывел результат кеширования в буфер оперативной памяти, а не непосредственно на диск.
Укажем выполнить не 100 операций, а 1000 – что бы система успела выполнить синхронизацию RAM и HDD, после чего dd покажет нам результаты:
[simterm]
# dd if=/dev/sda7 of=iotestfile bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 9.26567 s, 113 MB/s
[/simterm]
113 MB/s – тоже более реальный результат для это жесткого диска.
Другой способ – прямо указать dd дождаться окончания синхронизации данных (т.е. после фактического завершения операций записи/чтения данных на диск):
[simterm]
# dd if=/dev/sda7 of=iotestfile bs=1M count=100 conv=fdatasync
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 1.08168 s, 96.9 MB/s
[/simterm]
Теперь рассмотрим некоторые утилиты.
hdparm
Начнём с программы hdparm:
[simterm]
# hdparm -tT /dev/sda7
/dev/sda7:
Timing cached reads: 1922 MB in 2.00 seconds = 960.64 MB/sec
Timing buffered disk reads: 380 MB in 3.02 seconds = 126.02 MB/sec
[/simterm]
Ключ -t ( Timing buffered disk) отображает скорость чтения с диска напрямую из буфера кеша, и является показателем того, как быстро жесткий диск может поддерживать последовательное чтение данных под Linux, без задержек, вызванных работой файловой системы.
Ключ -T (Timing cached reads) показывает скорость чтения напрямую из буфера кеша Linux без учёта доступа к диску. Этот показатель главным образом отображает работу процессора, кэша и оперативной памяти тестируемой системы.
seeker
Одним из очень важных параметров скорости работы жесткого диска является “seek time” – время поиска. Это время, которое требуется жестком диску, что бы считывающая головка достигла сектора, содержащего необходимые данные. Что бы проверить этот параметр – воспользуемся утилитой seeker:
К сожалению, что бы её запустить под Debian / Ubuntu придётся немного повозиться.
Для начала, качаем .rpm пакет с сайта:
http://pkgs.org/download/seeker
Например, вполне работоспособным (на Ubuntu 12.04 x64) оказался пакет seeker-3.0-2.el6.x86_64.rpm для CentOS 5.
На следующей странцие http://pkgs.org/centos-5-rhel-5/epel-x86_64/seeker-3.0-2.el5.x86_64.rpm/download/ выбираем:
Download packages from the official mirror:
binary package, source package
binary – и сохраняем пакет .rpm на диск.
Далее, потребуется создать пакет .deb. Для этого можно воспользоваться утилитой alien. Как ей пользоваться – описано в статье Установка Java 7 на Ubuntu 12.10.
Запускаем:
[simterm]
# seeker /dev/sda7
Seeker v3.0, 2009-06-17, http://www.linuxinsight.com/how_fast_is_your_disk.html
Benchmarking /dev/sda7 [94083072 blocks, 48170532864 bytes, 44 GB, 45939 MB, 48 GiB, 48170 MiB]
[512 logical sector size, 512 physical sector size]
[1 threads]
Wait 30 seconds…………………………
Results: 89 seeks/second, 11.202 ms random access time (3611572 < offsets < 48157383296)
[/simterm]
Самое интересное в результате – это значение “89 seeks/second”, т.е. 89 попыток поиска в секторе, содержащем данные. Это неплохой результат для домашнего ПК, но неважный для серверной машины. Впрочем, учитывая что на этой машине используется “домашний” винчестер WD серии Green с RPM 5200 – то вполне неплохой результат.
iozone
Следующая утилита – iozone, которая фактически умеет выполнять все тесты, описанные выше. В Ubuntu 12.04 она требует установки, поэтому выполняем:
[simterm]
# aptitude -y install iozone3
[/simterm]
Теперь запустим и рассмотрим результаты:
[simterm]
# iozone -a /dev/sda7
random random bkwd record stride
KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread
64 4 474430 818885 2561267 2561267 1879725 1124074 1124074 1188789 2116903 799377 939223 1105556 2133730
64 8 167061 852702 1452528 3057153 2133730 1210227 955947 2052169 1330167 1101022 901377 533875 1828508
64 16 560635 614542 2298136 2561267 5389653 1255511 1562436 1279447 1933893 913649 460591 1879725 2444640
64 32 566551 1033216 3363612 3203069 6421025 1526887 1421755 1452528 1947927 1124074 1304314 1452528 2298136
64 64 507625 1066042 5389653 5389653 5389653 1304314 1492919 1484662 1421755 1002351 1183548 1991276 2006158
[/simterm]
(тут показана лишь малая часть всего вывода)
Ключ -a запускает iozone в автоматическом режиме, в котором утилита будет использовать для тестирования block size от 4k до 16384k (16M), и размер файлов от 64k до 524288k (512M).
Все результаты скорости указаны в KB/Sec.
Первая колонка – KB отображает размер файла.
Вторая колонка – reclen – отображает используемый размер блока (block size).
Третья колнка – write – отображает время, затраченное на создание/запись нового файла. Это всегда более сложная задача для диска и файловой системы, так как связана с назначением inode, созданием новой записи в журнале событий (для Journaled File System) и т.п.
Четвёртая колонка – rewrite – указывается скорость перезаписи уже существующего файла.
Пятая колонка – read – скорость чтения существующего файла.
Шестая колонка – reread – скорость чтения файла, который уже был прочитан (reread file).
Седьмая колонка – random read – показывает скорость доступа к случайной части (!) файла.
В целом, этих данных хватит для получения необходимых данных о быстродействии жесткого диска. Более подробные данные можно еполучить на сайте>>> разработчкиа.
Сохранить результаты можно с ключём -b (файл должен быть совсемстим с форматом эл. таблиц):
[simterm]
# iozone -a -b ioresults.xls
[/simterm]
Есть ещё много утилит, однако на этом хочется закончить.
Основная часть этой статьи является вольным переводом (с некоторыми попавками в описаниях) статьи Linux File System Read Write Performance Test.