как проверить скорость диска linux

Как измерить скорость жесткого диска

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

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

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

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

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

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

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

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

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

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

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


Disk Speed Test (Read/Write): HDD, SSD Performance in Linux

From this article you’ll learn how to measure an input/output performance of a file system on such devices as HDD, SSD, USB Flash Drive etc.

I’ll show how to test the read/write speed of a disk from the Linux command line using dd command.

I’ll also show how to install and use hdparm utility for measuring read speed of a disk on Linux Mint, Ubuntu, Debian, CentOS, RHEL.

To get the accurate read/write speed, you should repeat the below tests several times (usually 3-5) and take the average result.

Cool Tip: How to choose SSD with the best quality/price relation! Read more →

dd: TEST Disk WRITE Speed

Run the following command to test the WRITE speed of a disk:

dd: TEST Disk READ Speed

To get the real speed, we have to clear cache.

Run the following command to find out the READ speed from buffer:

Clear the cache and accurately measure the real READ speed directly from the disk:

dd: TEST Read/Write Speed of an External Drive

To check the performance of some External HDD, SSD, USB Flash Drive or any other removable device or remote file-system, simply access the mount point and repeat the above commands.

Or you can replace tempfile with the path to your mount point e.g.:

hdparm: Test HDD, SSD, USB Flash Drive’s Performance

And it can also be used as a simple benchmarking tool that allows to quickly find out the READ speed of a disk.

hdparm is available from standard repositories on the most Linux distributions.

Install hdparm depending on your Linux distribution.

Cool Tip: Troubleshooting an issue with a hard drive performance? It will be a good idea also to test download/upload Internet speed. It can be easily done from the Linux command line! Read more →

On Linux Mint, Ubuntu, Debian:

On CentOS, RHEL:

Run hdparm as follows, to measure the READ speed of a storage drive device /dev/sda :

18 Replies to “Disk Speed Test (Read/Write): HDD, SSD Performance in Linux”

Anyone has hdparm version for Android?

“Reminder: All the above commands use the temporary file tempfile. Don’t forget to delete it when you complete the tests.”
I can not find any place where you instruct as to how to delete the tempfile. How is this done safely?

go to directory where you executed the command, in terminal:
““rm tempfile““
or in a gui select the file and delete it.

I must have done something wrong. I tested first with bs=4k and count=256k.
It finished quickly.
Afterwards I decided myself to alter the parameters like so: bs=1M and count=256k
I didn’t know exactly what I was doing. I left it running not having slightest hunch if it’s wrong to interrupt it via Ctrl-C. It run approximately 1000 seconds having written almost 100GB of all 150GB free on the SSD. Only then I’ve read the man pages searching for clues but still didn’t found. So I have a couple of questions if kindly allowed. That ‘k’ at the end of count I am not sure of it’s meaning or even if it makes sense. I have to also ask what would have happened if the command filled the whole free space? Would it have stopped by itself with message/error? Was it dangereous for an ssd doing this. The fact I performed it from sysresccd on ssd with Windows installed has any effect on outcome?
I mean the if = is it from the RAM memory? I specified an of= on the ssd after mounting it like /mnt/windows/some.output.file. Is the way I did it significant for the results?

> bs=4k and count=256k
k means what it always means: about 1,000, but in the case of computers (here), usually 1024. “bs” means block size, “count” means number of blocks. So this means write 4k x 256k bytes. 1k x 1k = 1 megabyte (about 1,000 x about 1,000 = about 1,000,000). How many megabytes? Since we already took care of the ‘k’s; 4x 256 = 1024 (aka about 1000, or 1k again.) What’s 1k x 1k x 1k? 1 gigabyte (about 1,000,000,000.) You wrote 1 gigabyte of zeros.

> bs=1M and count=256k

1M = (1k x 1k)
(1k x 1k) x 1k(the k from “count”) = 1 gigabyte
1 gigabyte x 256 = 256 gigabytes.

You were writing 256 gigabytes of zeros. Your drive is only 150 gigabytes in size. It won’t hurt your drive, it will just delete everything on your drive. When it fills your drive, it will stop.

The “if” is not from ram, it is a program (/dev/zero) in your system disguised as a file but whenever it is read is just endless zeros.

How to check sdb drive?
Should I use /dev/sdb instead of /dev/zero here:
sync; dd if=/dev/zero of=/media/user/MyUSB/tempfile bs=1M count=1024; sync

I think you missed the best software package for this kind of tests. It’s called fio:

It’s not accurate. The second sync does not influence the measurement (it’s being run after dd reports the results) and thus it’s influenced by caching. If you try the same test with 4096 or 8192 megs, you’ll have worse results (but closer to the reality).

One way to correct for this is measuring the whole process with the time command and then doing the division manually. E.g.:
# time (sync; dd if=/dev/zero of=tempfile bs=1M count=8192; sync)

You’ll see that dd will report a higher throughput, but you can then divide 8192 with whatever seconds time comes up with.

You need `conv=fdatasync` in your dd commands to include flush and sync time. Otherwise the results will be way too high, as others have mentioned.

Timing cached reads: 16830 MB in 1.99 seconds = 8454.99 MB/sec
Timing buffered disk reads: 434 MB in 3.01 seconds = 144.27 MB/sec

great post:) keep simple

Hello, after doing some tests with different “GB” my storage on NVMe was filled with 7% (56GB), can I delete that storage or stay there permanently?

dd etc do not give the real deal info. fio is the way.


Тестирование IOPS дисков в Linux

В этой статье рассмотрим способы тестирования производительности 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 :

# apt-get install fio

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

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

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

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

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

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

110MiB/s, 28000 IOPS

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# apt-get install ioping

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

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

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


Как проверить скорость диска linux

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

Скорость передачи данных зависит не только от диска, но и от интерфейса, к которому он подключен. Например, порт 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 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 и измерите реальную скорость чтения напрямую с жесткого диска:

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

$ 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.

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

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

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

$ 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-накопителей или любого другого съемного устройства или удаленной файловой системы, просто обратитесь к точке монтирования и повторите указанные выше команды.
Или вы можете заменить временный файл на путь к точке монтирования, например

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

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

# dd if=/dev/zero of=./largefile bs=8k count=10000
10000+0 records in
10000+0 records out
81920000 bytes (82 MB) copied, 11.0626 s, 7.4 MB/s

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

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

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

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

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

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

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

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

# dd if=/dev/zero of=./largefile bs=64k count=1000
1000+0 records in
1000+0 records out
65536000 bytes (66 MB) copied, 8.3834 s, 7.8 MB/s

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

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

$ sudo apt-get install hdparm

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


🐧 Как определить скорость передачи данных с жесткого диска в системах Linux

Это руководство научит вас определять скорость передачи данных на жестком диске Linux.

Другими словами, мы собираемся определить, насколько быстро ваш жесткий диск доставляет данные в Linux и Unix-подобных операционных системах.

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

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

Теперь давайте воспользуемся этой утилитой hdparm для измерения скорости передачи жесткого диска.

Несмотря на то, что hdparm предлагает значительные преимущества для увеличения производительности диска, он также ЧРЕЗВЫЧАЙНО ОПАСНЫЙ. При неправильном использовании некоторых параметров это, скорее всего, приведет к массовой потере данных. В документации hdparm говорится, что НЕ СЛЕДУЕТ ИСПОЛЬЗОВАТЬ НЕКОТОРЫЕ КОМАНДЫ ПРИ ЛЮБЫХ ОБСТОЯТЕЛЬСТВАХ. Поэтому я исключил из этого руководства такие опасные команды. Что еще более важно, всегда рекомендуется делать резервную копию жесткого диска перед тестированием жесткого диска с помощью hdparm в системе Linux.

Как найдите скорость передачи данных с жесткого диска на Linux


Операционные системы и программное обеспечение