Утилита проверки скорости дисков в Linux (как в CrystalDiskMark)

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Утилита проверки скорости дисков в Linux (как в CrystalDiskMark)

#1

17 сен 2022, 00:28

Вспомнив сегодня старый пост на тему возможности проверки скорости всяких разных дисков - на коленке при помощи bash родилась утилитка которая собирает данные с fio и воспроизводит результаты по аналогии с виндовой софтиной CrystalDiskMark
photo_2022-09-16_22-03-43.jpg
Собственно задача состояла в том чтобы вывести результаты тестов однопоточного чтения и записи в следующих режимах:
  • Последовательные c размером блока в 1мб и глубиной очереди 8
  • Последовательные c размером блока в 1мб и глубиной очереди 1
  • Случайные c размером блока в 4кб и глубиной очереди 32
  • Случайные c размером блока в 4кб и глубиной очереди 1
Т.к. диски у нас куда-нибудь примонтированы - надо позволить указать путь к файлу чтоб он тестировался на нужном носителе, и также позволить параметрами задать объем прогоняемого файла и количество тестовых проходов.
В качестве дефолтных значений писать будем в файл ./fiotest.tmp в той же директории откуда был вызван скрипт, с размером 1000мб и 5 проходов (типа как в оригинале)

В итоге получилось вот что:

Код: Выделить всё

#!/bin/bash
TESTFILE_PATH='./fiotest.tmp'
TESTFILE_SIZE='1000m'
TEST_LOOPS='5'
sync; sleep 3;
SEQ1MQ8T1R=$(fio --loops=$TEST_LOOPS --size=$TESTFILE_SIZE --filename=$TESTFILE_PATH --ioengine=libaio --direct=1 --name=SeqReadQ8 --bs=1m --iodepth=8 --rw=read | grep 'READ:' | awk '{print substr($3, 2, length($3)-3)}')
sync; sleep 3;
SEQ1MQ8T1W=$(fio --loops=$TEST_LOOPS --size=$TESTFILE_SIZE --filename=$TESTFILE_PATH --ioengine=libaio --direct=1 --name=SeqWriteQ8 --bs=1m --iodepth=8 --rw=write | grep 'WRITE:' | awk '{print substr($3, 2, length($3)-3)}')
echo "  +----------------------------------------+"
printf "  | %12s | %10s | %10s |\n" "Mode" "Read" "Write"
echo "  +----------------------------------------+"
printf "  | %12s | %10s | %10s |\n" "SEQ1MQ8T1" "$SEQ1MQ8T1R" "$SEQ1MQ8T1W"
echo "  +----------------------------------------+"
sync; sleep 3;
SEQ1MQ1T1R=$(fio --loops=$TEST_LOOPS --size=$TESTFILE_SIZE --filename=$TESTFILE_PATH --ioengine=libaio --direct=1 --name=SeqReadQ1 --bs=1m --iodepth=1 --rw=read | grep 'READ:' | awk '{print substr($3, 2, length($3)-3)}')
sync; sleep 3;
SEQ1MQ1T1W=$(fio --loops=$TEST_LOOPS --size=$TESTFILE_SIZE --filename=$TESTFILE_PATH --ioengine=libaio --direct=1 --name=SeqWriteQ1 --bs=1m --iodepth=1 --rw=write | grep 'WRITE:' | awk '{print substr($3, 2, length($3)-3)}')
printf "  | %12s | %10s | %10s |\n" "SEQ1MQ1T1" "$SEQ1MQ1T1R" "$SEQ1MQ1T1W"
echo "  +----------------------------------------+"
sync; sleep 3;
RND4KQ32T1R=$(fio --loops=$TEST_LOOPS --size=$TESTFILE_SIZE --filename=$TESTFILE_PATH --ioengine=libaio --direct=1 --name=RandReadQ32 --bs=4k --iodepth=32 --rw=randread | grep 'READ:'| awk '{print substr($3, 2, length($3)-3)}')
sync; sleep 3;
RND4KQ32T1W=$(fio --loops=$TEST_LOOPS --size=$TESTFILE_SIZE --filename=$TESTFILE_PATH --ioengine=libaio --direct=1 --name=RandWriteQ32 --bs=4k --iodepth=32 --rw=randwrite | grep 'WRITE:'| awk '{print substr($3, 2, length($3)-3)}')
printf "  | %12s | %10s | %10s |\n" "RND4KQ32T1" "$RND4KQ32T1R" "$RND4KQ32T1W"
echo "  +----------------------------------------+"
sync; sleep 3;
RND4KQ1T1R=$(fio --loops=$TEST_LOOPS --size=$TESTFILE_SIZE --filename=$TESTFILE_PATH --ioengine=libaio --direct=1 --name=RandReadQ1 --bs=4k --iodepth=1 --rw=randread | grep 'READ:'| awk '{print substr($3, 2, length($3)-3)}')
sync; sleep 3;
RND4KQ1T1W=$(fio --loops=$TEST_LOOPS --size=$TESTFILE_SIZE --filename=$TESTFILE_PATH --ioengine=libaio --direct=1 --name=RandWriteQ1 --bs=4k --iodepth=1 --rw=randwrite | grep 'WRITE:'| awk '{print substr($3, 2, length($3)-3)}')
printf "  | %12s | %10s | %10s |\n" "RND4KQ1T1" "$RND4KQ1T1R" "$RND4KQ1T1W"
echo "  +----------------------------------------+"    
В результате выполнения, по мере прогона тестов будет отрисовывать замеры в следующем виде
Снимок экрана в 2022-09-17 02-04-23.png
для запуска потребуется только наличие в системе пакета fio, если нет - то apt install fio. (Впрочем аналогично и в других дистрибутивах мимо deb)
Тестовый файл (fiotest.tmp) скрипт за собой не удаляет, т.к. не очень охота вписывать rm -f в тело. Грохните по финалу его самостоятельно :smile:
Изображение
   
Изображение

Аватара пользователя

rogoznik
Сообщения: 10044
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Утилита проверки скорости дисков в Linux (как в CrystalDiskMark)

#2

17 сен 2022, 11:25

Для fio есть графический интерфейс gfio.
Тут по ней есть немного инфы
ИзображениеИзображение

Аватара пользователя

volp
Сообщения: 249
Зарегистрирован: 29 янв 2018, 16:14
Решено: 2
Откуда: Беларусь
Благодарил (а): 30 раз
Поблагодарили: 31 раз
Контактная информация:

Утилита проверки скорости дисков в Linux (как в CrystalDiskMark)

#3

18 сен 2022, 11:58

Пользуюсь для этих целей KdiskMark
2022-09-18_11-55.png

Аватара пользователя

rogoznik
Сообщения: 10044
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Утилита проверки скорости дисков в Linux (как в CrystalDiskMark)

#4

18 сен 2022, 16:03

volp писал(а):
18 сен 2022, 11:58
KdiskMark
обертка на QT над libaio
А вообще да - выглядит почти как CrystalDiskMark, делает тоже :thumbs:
ИзображениеИзображение

Ответить

Вернуться в «Жесткие диски, SSD, Flash-накопители, разделы на них»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость