Как уберечь md-raid от блокировки ввода-вывода?

Я запускаю сервер с md-raid (программное обеспечение) уровня 1 (зеркальное отображение 2 жестких дисков) и на нем работают несколько различных приложений. ] Проблема возникает, когда задания с интенсивным использованием файлов (например, извлечение больших архивов) выполняются, когда некоторые пользователи также используют приложения реального времени (например, игровые серверы). Работа с большим количеством файлов заполнит очередь ввода-вывода, заставляя md-raid блокировать дальнейший ввод-вывод до тех пор, пока два диска не будут синхронизированы, что приведет к нехватке ресурсов для приложений реального времени и заставит их останавливаться и ждать, что, в свою очередь, вызывает серьезное раздражение пользователей.

Задание с интенсивным вводом-выводом выполняется с самыми низкими приоритетами процесса и io ( nice -n +19 ionice -c 3 ... ) с планированием CFQ, но другие приложения все еще не работают.

Есть ли способ сделать md-raid более снисходительным по отношению к синхронизации дисков?

Есть ли другие возможные решения, чтобы не замораживать важные приложения?

1
задан 14 April 2016 в 22:46
1 ответ

Вероятно, проблема вызвана не заполнением очереди ввода/вывода, а промывкой страниц кэша.

Чтобы проверить это, попробуйте распутать большой архив и в другом терминале сделайте cat /proc/meminfo. Вы увидите некоторые большие значения в разделе Dirty памяти; когда эта "грязная" память будет очищена, произойдет большой объем ввода/вывода, и ваше реальное приложение пострадает.

Его поведение можно настроить, однако, это не тривиально, так как по умолчанию стек ввода/вывода в Linux предпочитает пропускную способность, а не латентность. В любом случае, в качестве хорошего старта попробуйте использовать планировщик deadline и убедитесь, что NCQ включен на ваших дисках.

.
0
ответ дан 4 December 2019 в 06:25

Теги

Похожие вопросы