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 отслеживает скорость, с которой происходит передача, и сообщает об этом.
Файл 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
Выполните следующую команду для проверки скорости записи на жестком диске:
$ 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 Кбайт каждый в один файл на диске.
# 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 Мбайт / с. Это низкая цифра.
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) 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 16GB. — Stronium еще один очень дешевый бренд, хотя USB-накопители надежны.
Скорость записи 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
# sudo sh -c «sync && echo 3 > /proc/sys/vm/drop_caches»
# dd if=./largefile of=/dev/null bs=8k
8000+0 records in
8000+0 records out
65536000 bytes (66 MB) copied, 2.90366 s, 22.6 MB/s
Скорость чтения ниже, чем у накопителя Sony.
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
Тестирование IOPS дисков в Linux
30.04.2020
VyacheslavK
CentOS, Linux, Ubuntu
Комментариев пока нет
В этой статье рассмотрим способы тестирования производительности 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):
# yum install epel-release -y
# yum install fio -y
Либо apt-get в Debian, Ubuntu :
Затем вам нужно определить диски для тестирования. Тестирование выполняется путев выполнения операций записи/чтения в той директории, в которую примонтирован диск или LUN.
Измерение производительности дисков в IOPS с помощью fio
Выполним несколько видов тестирования производительности IOPS диска в различных сценариях нагрузки на диск (реждим тестирования, который нужон выбрать зависит от логики размещенного приложения и общей архитектуры проекта).
Тест случайных операций на чтение/запись
При запуске такого теста, будет создан файл размером 8 Гб. Затем утилита fio выполнит чтение/запись блока 4КБ (стандартный размер блока) с разделением на 75/25% по количеству операций чтения и записи и замерит производительность. Команда выглядит следующим образом:
# fio —randrepeat=1 —ioengine=libaio —direct=1 —gtod_reduce=1 —name=fiotest —filename=testfio —bs=4k —iodepth=64 —size=8G —readwrite=randrw —rwmixread=75
Первую проверку я запустил на массиве из двух SSD дисков и результаты получились хорошие:
READ: bw=328MiB/s (344MB/s), 328MiB/s-328MiB/s (344MB/s-344MB/s), io=6141MiB (6440MB), run=18721-18721msec WRITE: bw=110MiB/s (115MB/s), 110MiB/s-110MiB/s (115MB/s-115MB/s), io=2051MiB (2150MB), run=18721-18721msec
- Чтение: ~ 328MiB/s, 83000 IOPS
- Запись: ~ 110MiB/s, 28000 IOPS
Так как мы запустили тест на чтение/запись, показатели по отдельным проверкам, будут чуть выше.
Для сравнения, я замерил скорость на обычном SATA диске:
Для HDD диска результаты, конечно гораздо хуже, чем для SSD.
Тест случайных операций на чтение
Чтобы замерить производительность дисков только для случайных операций на чтение, нужно выполнить следующую команду:
# fio —randrepeat=1 —ioengine=libaio —direct=1 —gtod_reduce=1 —name=fiotest —filename=testfio —bs=4k —iodepth=64 —size=8G —readwrite=randread
Команда поменялась в самом конце на —readwrite=randread .
Как ранее я уже говорил, скорость по отдельным замерам будет выше:
READ: bw=584MiB/s (612MB/s), 584MiB/s-584MiB/s (612MB/s-612MB/s), io=8192MiB (8590MB), run=14027-14027msec, IOPS - 150000
Если запустить тест только на чтение, разница со смешанным тестом достигает (200-250 MiB/s и 67000 IOPS), что достаточно ощутимо.
Тест случайных операций на запись
Для замера производительности диска для случайных операций записи, выполните команду:
# fio —randrepeat=1 —ioengine=libaio —direct=1 —gtod_reduce=1 —name=fiotest —filename=fiotest —bs=4k —iodepth=64 —size=8G —readwrite=randwrite
WRITE: bw=331MiB/s (347MB/s), 331MiB/s-331MiB/s (347MB/s-347MB/s), io=8192MiB (8590MB), run=24767-24767msec, IOPS 84700
Производительность операций записи на хороших SSD дисках тоже очень высокая. Как и в случае с чтением, разница со смешанным тестом достигает 200-250 MiB/s, а в IOPS 56000.
Если опираться на официальную документацию по дискам от производителя (это SSD диски от Intel), можно смело сказать, что в данном случае они не обманули.
Тестирование производительности дисков с помощью файлов.
Утилита fio позволяет проверять диски не только с помощью интерактивного запуска команд, но и запускать заранее подготовленные конфигурационные файлы для тестов. Чтобы воспользоваться данным вариантом, создайте файл:
И добавьте в него содержимое:
[global] rw=randread size=8G filename=/tmp/testfio ioengine=libaio iodepth=4 invalidate=1 direct=1 [bgread] rw=randread iodepth=64
Данный тест замерит скорость чтения диска. Чтобы выполнить проверку производительности для операций записи, используйте такой конфиг:
[global] rw=randwrite size=8G filename=/tmp/testfio ioengine=libaio iodepth=4 invalidate=1 direct=1 [bgwrite] rw=randwrite iodepth=64
Проверка 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 описана в этой статье.
Предыдущая статья Следующая статья