Сейчас я настраиваю сервер на 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 (Tue, 17 Mar 2020 16:33:19 +0100) x86_64 GNU/Linux
Твердотельные накопители, с которых я позволил dd читать, - это два корпоративных SAS-SSD Toshiba в массиве RAID 1. Жесткие диски - это некоторые жесткие диски SATA со скоростью 5400 об / мин (так что ... не самые быстрые). Они также находятся в RAID 1.
RAID управляется DELL PERC H710 mini (встроенный). Все RAID имеют Adaptive Read Ahead
как Прочтите Политику и Write Through
как Политика записи.
Я также заметил странно выглядящий график Dirty / Writeback: нажмите, чтобы увидеть изображение (защита для новичков)
Проблема была вызвана слишком высоким dirty_ratio
и dirty_background_ratio
. Поскольку оперативная память относительно велика, кеш страниц тоже был большим. Система блокирует ввод-вывод, если кеш страниц заполнен, и ожидает его очистки. Это то, что вызвало большое ожидание ввода-вывода.
Уменьшение их до гораздо меньшего значения (64 МБ для background_ratio и 4 ГБ для dirty_ratio) решило мою проблему.