Мой домашний сервер хранения, который в настоящее время состоит из 6 дисков Seagate по 3 ТБ, ОЗУ DDR3 12 ГБ и Core i3 540, имеет очень низкую производительность при чтении или записи на raidz2, на котором я установил.
С помощью /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1024 count=10
:
10240 bytes transferred in 0.000221 secs (46331902 bytes/sec)
и наоборот:
10240 bytes transferred in 0.000107 secs (95656287 bytes/sec)
что соответствует скорости записи 46 МБ / с и скорости чтения 95 МБ / с. Это кажется немного медленным. Или это совершенно нормально?
Спасибо
Тобиас Тимпе
С помощью приведенной выше команды вы не проверяете производительность записи на диск. Вы тестируете множество факторов, но в основном задержку контроллера и диска. Чтобы проверить производительность чтения с диска, вам нужно перепрыгнуть через обручи, чтобы исключить кеширование диска из ваших тестов, что нетривиально для ZFS, поскольку это означает отключение кеша ARC. Гораздо проще проверить производительность записи: напишите файлы гораздо большего размера, желательно превышающие размер встроенной оперативной памяти вашей системы.
Я выполнил эту команду на своем домашнем файловом сервере ZFS (Core i3-4130T с зеркальным WDC WD80):
# /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1024 count=10000000
10240000000 bytes transferred in 55 secs (186900359 bytes/sec)
Это не очень хорошо, но это гораздо лучший тест реальной производительности записи. Интересным результатом является то, что я достиг 187 МБ / с, а номинальная производительность моих дисков - 178 МБ / с. Это немного странно, потому что типичные тесты - это большая часть номинальной производительности. Превышение этого параметра можно объяснить сжатием диска ZFS.
Мои диски находятся в зеркале ZFS (2-кратная производительность чтения для меня более полезна, чем эффективность хранения), но если предположить, что ваши диски также имеют скорость 5400 об / мин, вы должны ожидать сопоставимой производительности записи.
Чтобы понять, почему даже гораздо большее количество, используя dd
не лучший тест, проверьте это:
# /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1M count=1000000
1048576000000 bytes transferred in 223.56 secs (4690377542 bytes/sec)
Просто увеличив размер блока до 1M, моя дисковая производительность стала просто потрясающей. Пока вы не поймете, что чтение из / dev / zero означает, что источник данных не имеет энтропии и хорошо сжимается. dd - не лучший инструмент для проверки производительности диска.
В дереве портов FreeBSD есть и другие инструменты (в прошлом я использовал bonnie & iozone), которые могут рассказать вам больше информации о производительности ваших дисков. Если вам действительно интересно, посмотрите на них. В противном случае, НАМНОГО лучшего теста производительности для домашнего файлового сервера является копирование содержимого DVD или Blu-ray между двумя дисками и время этого копирования.