Высокая скорость передачи LUKS с последующим высоким ожиданием io

Я сейчас настраиваю сервер на Proxmox VE. Я хотел, чтобы все диски были зашифрованы, поэтому я решил установить luks на всех дисках, а поверх luks я установил LVM.

Теперь, когда я передаю данные с быстрого диска (SSD) на более медленный диск (HDD) при использовании dd он запускается очень быстро с некоторыми ГБ / с. А потом тормозит. Затем я замечаю, что ожидание ввода-вывода достигает 10%, а нагрузка на систему возрастает до 36. Некоторые виртуальные машины подвержены этому воздействию и зависают.

Дальнейший мониторинг показал, что во время ожидания большого количества операций ввода-вывода dmcrypt_write использует 99% операций ввода-вывода. Итак, я установил Netdata, чтобы получить несколько графиков, и он показал, что жесткий диск пишет со скоростью от 120 до 150 МБ / с.

Через некоторое время kworkers погибают из-за того, что слишком долго работали. После некоторых исследований я изменил dirty_ratio и dirty_background_ratio на более низкое значение, это помогло, но значительно снизило скорость. Примерно до 25 МБ / с. Это предотвратило огромные зависания, но все еще вызывает некоторые задержки. Это также снизило скорость записи самого жесткого диска. Вместо записи со скоростью 150 МБ / с жесткий диск теперь будет записывать только со скоростью 50 МБ / с.

Честно говоря, я не знаю, что делать дальше. Есть ли какой-нибудь кеш, который я еще не нашел? Или, может быть, есть способ ограничить скорость записи в Linux скоростью записи дисков, как это должно быть?

Моя единственная цель - скопировать данные из A в B, не ограничивая скорость вручную и не беспокоясь о зависании виртуальных машин.

Информация о системе:

ЦП: 2x Intel Xeon E5-2650 v2
ОЗУ: 128 ГБ DDR3 ECC
ОС: Debian 10 с установленным вручную Proxmox VE
Ядро: Linux 5.3.18-3-pve # 1 SMP PVE 5.3.18-3 (Вт, 17 марта 2020 г. 16:33:19 +0100) x86_64 GNU / Linux

SSD, с которых я разрешил dd read - это два корпоративных SAS-SSD Toshiba в массиве RAID 1. Жесткие диски - это некоторые жесткие диски SATA со скоростью 5400 об / мин (так что ... не самые быстрые). Они также находятся в RAID 1.

RAID-массивами управляет DELL PERC H710 mini (встроенный). Все RAID имеют Adaptive Read Ahead в качестве политики чтения и Write Through в качестве политики записи.

Я также заметил странно выглядящий график Dirty / Writeback: щелкните, чтобы просмотреть изображение (защита для новичков)

1
задан 16 April 2020 в 17:26
1 ответ

Проблема была вызвана слишком высоким dirty_ratio и dirty_background_ratio . Поскольку оперативная память относительно велика, кеш страниц тоже был большим. Система блокирует ввод-вывод, если кеш страницы заполнен, и ожидает его очистки. Это то, что вызвало большое ожидание ввода-вывода.

Уменьшение их до гораздо меньшего значения (64 МБ для background_ratio и 4 ГБ для dirty_ratio) решило мою проблему.

2
ответ дан 16 April 2020 в 22:48

Теги

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