Проверка скорости диска linux

Обновлено: 07.07.2024

23 апр 2017, 08:34

Тест скорости USB и SSD дисков в Linux

Как быстр ваш USB? Как быстр ваш SSD-накопитель? Это очень распространенный вопрос. Я собрал и скомпилировал несколько тестов, которые помогут вам выполнить тест скорости USB и SSD в Linux. Когда я говорю speedtest, я тестирую скорость чтения / записи USB и SSD дисков. Это также сообщит вам, работают ли ваши накопители на максимальной скорости.

Скорость привода измеряется с точки зрения того, сколько данных он может читать или записывать за единицу времени. Команда dd - это простой инструмент командной строки, который может использоваться для чтения и записи произвольных блоков данных на диск и измерения скорости передачи данных. В этом посте мы будем использовать команду dd для проверки скорости чтения SSD и USB-накопителей .

Скорость передачи данных зависит не только от диска, но и от интерфейса, к которому он подключен. Например, порт USB 2.0 имеет максимальную скорость работы 35 Мбайт / с, поэтому, даже если вы подключите высокоскоростной накопитель USB 3 к порту USB 2, скорость будет ограничена нижним пределом.

То же самое касается SSD. SSD подключаются через порты SATA, которые имеют разные версии. Sata 2.0 имеет максимальный теоретический предел скорости 3Gbits / s, который составляет примерно 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 отслеживает скорость, с которой происходит передача, и сообщает об этом.

Тест скорости чтения жесткого диска с помощью команды dd

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

Выполните следующую команду, чтобы узнать скорость чтения из буфера:

$ dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.159273 s, 6.7 GB/s

Очистите кэш Linux и измерите реальную скорость чтения напрямую с жесткого диска:

$ sudo /sbin/sysctl -w vm.drop_caches=3
vm.drop_caches = 3
$ dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.27431 s, 472 MB/s

Тест скорости записи жесткого диска с помощью команды dd

Выполните следующую команду для проверки скорости записи на жестком диске:

$ sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 3.28696 s, 327 MB/s

Теперь давайте начнем с инструкций для проверки скорости чтения SSD. Наш SSD подключается к порту SATA 2.0 для этого теста.

Скорость записи.

$ 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

Размер блока на самом деле довольно большой. Вы можете попробовать с меньшими размерами, такими как 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 / PEN-дисков. Диски подключены к стандартным портам USB 2. Первый - это USB-накопитель Sony 4GB, а второй - Strontium 16-Гбайт.

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

Скорость чтения / записи внешнего жесткого диска

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

$ sync; dd if=/dev/zero of=/media/user/MyUSB/tempfile bs=1M count=1024; sync
Все вышеприведенные команды используют временный файл tempfile. Не забудьте удалить его, когда вы завершите тесты.

Sony 4GB - Запись

В этом тесте команда dd используется для записи 10 000 блоков по 8 Кбайт каждый в один файл на диске.

Таким образом, скорость записи составляет около 7,5 Мбайт / с. Это низкая цифра.

Sony 4GB - Чтение.

Тот же файл считывается обратно для проверки скорости чтения. Выполните следующую команду, чтобы очистить кэш памяти:

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

Теперь прочитайте файл, используя команду dd.

Скорость чтения составляет около 25 Мбайт / с, что является более или менее стандартным для дешевых USB-накопителей.

Максимальная скорость передачи USB 2.0 составляет 480 Мбит / с или 60 Мбайт / с. Однако из-за различных ограничений максимальная пропускная способность ограничена примерно 280 Мбит / с или 35 Мбайт / с. Помимо этого, фактическая скорость зависит от качества Pen приводов и других факторов.

Вышеупомянутый USB-накопитель был подключен к порту USB 2.0 и достиг скорости чтения 24,7 Мб / с, что не очень плохо. Но скорость записи значительно отстает

Теперь давайте сделаем тот же тест с приводом Stronium 16GB. - Stronium еще один очень дешевый бренд, хотя USB-накопители надежны.

Скорость записи Stronium 16 ГБ

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

Скорость чтения ниже, чем у накопителя Sony.

Проверка производительности жесткого диска с помощью hdparm.

Hdparm - это утилита Linux, которая позволяет быстро узнать скорость чтения жесткого диска. Установите hdparm в зависимости от дистрибутива Linux.
В Linux Mint, Ubuntu, Debian:

$ sudo apt-get install hdparm

Запустите hdparm следующим образом, чтобы измерить скорость чтения жесткого диска /dev/sda:


$ sudo hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads: 16924 MB in 2.00 seconds = 8469.95 MB/sec
Timing buffered disk reads: 1386 MB in 3.00 seconds = 461.50 MB/sec

Иногда хочется быстро прикинуть, как работает дисковая подсистема, либо сравнить 2 жестких диска. Очевидно, что измерить реальную скорость дисков практически невозможно, она зависит от слишком большого числа параметров. Но получить некое представление о скорости дисков можно.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Проверка скорости чтения диска

Проще всего измерить скорость диска с помощью программы hdparm. Установить ее очень просто:

Теперь нужно вывести список дисков и разделов в системе:

disk-speed-01

Выбираем нужный раздел и проверяем скорость чтения:

disk-speed-02

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

Проверка скорости записи на диск

Для того, чтобы измерить скорость записи на диск, можно воспользоваться стандартной утилитой linux - dd. С ее помощью мы создадим на диске файл размером 1 Gb частями по 1Mb.

Измеряем скорость записи на диск:

disk-speed-03

Я измерял скорость на виртуальной машине, диск которой был размещен на RAID5, собранным из 5-ти дисков SAS 10к. В принципе, неплохой результат. Можно изменить размер файла и блоков, из которого он записывается. Если сделать файл побольше, результат скорости диска может получиться более приближенный к реальности.

А вот скорость диска на VDS, который я арендую. Результат в разы хуже:

disk-speed-04

Скорость диска на виртуальной машине, расположенной на втором SATA диске моего рабочего ноутбука:

disk-speed-05

Результат не очень, надо разбираться в чем дело. Давно возникли подозрения, что с диском что-то не то, заметно подтормаживают виртуальные машины, хотя раньше это было не заметно. Жаль, результатов более ранних тестов не сохранилось.

Интересно было бы посмотреть на ваши результаты тестов. Если же вы хотите серьезно измерить скорость дисков, то вам сюда - Как правильно мерять производительность диска.

На этом диске будут проводится тесты, описанные ниже:

Western Digital Caviar Green 500GB 64МB WD5000AZRX 3.5

tune2fs

Более подробную информацию об используемой файловой системе посмотреть можно с помощью tune2fs :

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

Конечно же, перед выполнением тестов убедитесь, что не запущены никакие задачи, создающие нагрузку на дисковую систему.

Самый простой способ проверки скорости чтения/записи на жесткий диск ( hard disk input/output value ):

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

dd if=/dev/sda7 of=iotestfile bs=1M count=100 conv=fdatasync

Теперь рассмотрим некоторые утилиты.

hdparm

Начнём с программы hdparm :

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

Ключ -t ( Timing buffered disk) отображает скорость чтения с диска напрямую из буфера кеша, и является показателем того, как быстро жесткий диск может поддерживать последовательное чтение данных под Linux, без задержек, вызванных работой файловой системы.

Ключ -T (Timing cached reads) показывает скорость чтения напрямую из буфера кеша Linux без учёта доступа к диску. Этот показатель главным образом отображает работу процессора, кэша и оперативной памяти тестируемой системы.

seeker

К сожалению, что бы её запустить под Debian / Ubuntu придётся немного повозиться.

Для начала, качаем .rpm пакет с сайта:

Например, вполне работоспособным (на Ubuntu 12.04 x64) оказался пакет seeker-3.0-2.el6.x86_64.rpm для CentOS 5.

Download packages from the official mirror:
binary package, source package

Benchmarking /dev/sda7 [94083072 blocks, 48170532864 bytes, 44 GB, 45939 MB, 48 GiB, 48170 MiB] Results: 89 seeks/second, 11.202 ms random access time (3611572 < offsets < 48157383296)

iozone

Теперь запустим и рассмотрим результаты:

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

(тут показана лишь малая часть всего вывода)

Ключ -a запускает iozone в автоматическом режиме, в котором утилита будет использовать для тестирования block size от 4k до 16384k (16M), и размер файлов от 64k до 524288k (512M).

Все результаты скорости указаны в KB/Sec.

В целом, этих данных хватит для получения необходимых данных о быстродействии жесткого диска. Более подробные данные можно еполучить на сайте>>> разработчкиа.

Сохранить результаты можно с ключём -b (файл должен быть совсемстим с форматом эл. таблиц):

Есть ещё много утилит, однако на этом хочется закончить.

Основная часть этой статьи является вольным переводом (с некоторыми попавками в описаниях) статьи Linux File System Read Write Performance Test.

date

30.04.2020

directory

CentOS, Linux, Ubuntu

comments

Комментариев пока нет

В этой статье рассмотрим способы тестирования производительности IOPS дисков или дискового массива в Linux. IOPS (input/output operations per second) – количество операций ввода-вывода, выполняемые системой хранения данных за одну секунду (это может быть как один диск, RAID массив или LUN на системе хранения). Условно IOPS можно считать количество блоков, которые успевает считаться или записаться на носитель.

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

Установка утилиты fio для тестирования IOPS в Linux

Для замера производительности IOPS дисков в Linux можно использовать утилиту fio (утилита доступна для CentOS в репозитории EPEL). Соотвественно для установки fio в RHEL, CentOS используется пакетный менеджер yum (dnf):

Либо apt-get в Debian, Ubuntu :

yum install fio в centos

Затем вам нужно определить диски для тестирования. Тестирование выполняется путев выполнения операций записи/чтения в той директории, в которую примонтирован диск или LUN.

Измерение производительности дисков в IOPS с помощью fio

Выполним несколько видов тестирования производительности IOPS диска в различных сценариях нагрузки на диск (реждим тестирования, который нужон выбрать зависит от логики размещенного приложения и общей архитектуры проекта).

Тест случайных операций на чтение/запись

При запуске такого теста, будет создан файл размером 8 Гб. Затем утилита fio выполнит чтение/запись блока 4КБ (стандартный размер блока) с разделением на 75/25% по количеству операций чтения и записи и замерит производительность. Команда выглядит следующим образом:

fio утилита тести iops в linux centos

Первую проверку я запустил на массиве из двух SSD дисков и результаты получились хорошие:

Так как мы запустили тест на чтение/запись, показатели по отдельным проверкам, будут чуть выше.

Для сравнения, я замерил скорость на обычном SATA диске:

iops sata диска

Для HDD диска результаты, конечно гораздо хуже, чем для SSD.

Тест случайных операций на чтение

Чтобы замерить производительность дисков только для случайных операций на чтение, нужно выполнить следующую команду:

Команда поменялась в самом конце на --readwrite=randread .

iops ssd диска на случайные операции чтения

Как ранее я уже говорил, скорость по отдельным замерам будет выше:

Если запустить тест только на чтение, разница со смешанным тестом достигает (200-250 MiB/s и 67000 IOPS), что достаточно ощутимо.

Тест случайных операций на запись

Для замера производительности диска для случайных операций записи, выполните команду:

fio тестирование iops диска на random запись в linux

Производительность операций записи на хороших SSD дисках тоже очень высокая. Как и в случае с чтением, разница со смешанным тестом достигает 200-250 MiB/s, а в IOPS 56000.

Если опираться на официальную документацию по дискам от производителя (это SSD диски от Intel), можно смело сказать, что в данном случае они не обманули.

Тестирование производительности дисков с помощью файлов.

Утилита fio позволяет проверять диски не только с помощью интерактивного запуска команд, но и запускать заранее подготовленные конфигурационные файлы для тестов. Чтобы воспользоваться данным вариантом, создайте файл:

И добавьте в него содержимое:

Теперь запустите тест:

Данный тест замерит скорость чтения диска. Чтобы выполнить проверку производительности для операций записи, используйте такой конфиг:

Проверка latency диска с помощью ioping

Помимо IOPS есть еще один важный параметр, характеризующий качество вашей дисковой подсистемы – latency. Latency – это время задержки выполнения запроса ввода/вывода и характеризуют время доступа к системе хранения (измеряется в миллисекундах). Чем выше latency, тем больше приходится ждать вашему приложения данных от дисковой подсистемы. Для типовых систем хранения значения latency более 20 мс считаются плохими.

Для проверки latency диска используется утилита ioping:

Запустите тест latency для диска (выполняется 20 запросов):

Среднее значение 298.7 us (микросекунд), т.е. средняя latency диска в нашем случае 0.3 ms, что очень хорошо.

Значение latency может быть указано в us (микросекундах) или в ms (миллисекундах). Т.е. для получения из us значения в ms нужно разделить его на 1000.

Таким образом, вы можете провести нагрузочное тестирование дисковой подсистемы на вашем сервере до запуска проекта и получить максимальную производительность. Конечно такой тест не дает гарантий, что дисковый массив или диск будет постоянно гарантировать такую производительность, но на начальном этапе это тест, который обязательно нужно выполнить. Методика тестирования IOPS в Windows описана в этой статье.

Читайте также: