скорость записи SSD в Linux

Вопрос или проблема

У моего компьютера современный процессор с 8 ядрами и NVMe SSD диском (95% свободно).

NVMe SSD подключен к материнской плате через PCIe 3.

Файловая система – ext4 с опцией discard.

Ядро Linux – 6.6.38

echo 3 > /proc/sys/vm/drop_caches

С помощью hdparm я провожу тест скорости чтения:

hdparm -Tt /dev/nvme1n1p5

/dev/nvme1n1p5:
 Время кэшированных чтений:   44518 МБ за  1.99 секунды = 22317.28 МБ/с
 Время буферизированных чтений с диска: 4764 МБ за  3.00 секунды = 1587.79 МБ/с

С помощью dd я также провожу тест скорости записи:

dd if=/dev/zero of=testfile1
^C19047808+0 записей в
19047808+0 записей из
9752477696 байт (9,8 ГБ, 9,1 ГиБ) скопировано, 11,0414 с, 883 МБ/с

Если я запускаю более одной dd if=/dev/zero of=testfileN & для записи на NVMe SSD диск, я вижу в других программах, таких как htop, что скорость записи составляет около 1800 МБ/с (N = 1 2 3 4 5)

Я пробую то же самое с random вместо zero, скорость та же – около 1800 МБ/с

Почему?

Как увеличить скорость записи в файл до полной скорости?

Есть ли какие-то специальные параметры ядра, которые мне нужны?

Ответ или решение

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

1. Оборудование и соединение

Вы используете NVMe SSD, который подключен через интерфейс PCIe 3.0. Это обеспечивает высокую пропускную способность, однако производительность записи может зависеть от нескольких факторов:

  • Тип SSD: Разные модели SSD имеют разные скорости записи в зависимости от архитектуры. Например, SLC (Single-Level Cell) обычно быстрее, чем TLC (Triple-Level Cell).
  • Объем заполнения: Поскольку ваш SSD более чем на 95% свободен, это в целом хорошо, так как при заполнении накопителей скорость записи может снижаться.
  • Ограничения системы: Если другие процессы активно используют ресурсы, это может влиять на скорость записи на SSD.

2. Файловая система и параметры

Вы используете файловую систему ext4 с опцией discard. Эта опция активирует TRIM, что позволяет SSD работать более эффективно, освобождая не используемые блоки. Однако использование discard может влиять на производительность записи:

  • Опция discard: Хотя она помогает управлять свободным пространством, частые команды TRIM могут также снизить общую скорость записи, так как они требуют дополнительных операций.

3. Проведение тестов

Ваши тесты с использованием hdparm показывают ожидаемую производительность для чтения, но результаты записи через dd показывают, что скорость записи составляет около 883 MB/s. Это может быть связано с тем, что:

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

4. Оптимизация

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

  1. Параметры ядра:

    • Проверьте, включены ли параметры, такие как noop или deadline в настройках планировщика I/O. Один из них может быть более подходящим для SSD.
    • Включите режим write-back для кэширования записи для снижения задержек.
  2. Настройки SSD:

    • Убедитесь, что у вас установлены последние обновления прошивки для SSD, так как они могут включать улучшения производительности.
  3. Обработайте тесты:

    • Попробуйте различный размер блока в dd, например, bs=1M, чтобы поэкспериментировать с разными размерами.
    • Используйте флаг oflag=direct в dd, чтобы обойти кэширование ядра. Это позволяет получить более точные замеры реальной скорости записи на устройство.
  4. Мониторинг нагрузки:

    • Используйте инструменты мониторинга, такие как iostat или iotop, чтобы увидеть, как загружены другие ресурсы во время выполнения тестов.
  5. Параллелизм:

    • Вместо запуска нескольких процессов dd, попробуйте использовать инструменты, такие как fio, которые могут оптимально управлять параллелизмом и конфигурацией ввода-вывода.

Заключение

Скорость записи на NVMe SSD может варьироваться в зависимости от множества факторов. Чтобы улучшить производительность, необходимо оптимизировать как параметры системы, так и конфигурации самой файловой системы. Следуя вышеуказанным рекомендациям, вы сможете поднять скорость записи до более высоких значений.

Оцените материал
Добавить комментарий

Капча загружается...