Большая копия файла приводит к тому, что пользовательские потоки не планируются на CPU

Мы запускаем Xenial (16.04) с ядром Linux 4.15.0-36-generic и запускаем скрипт, который выполняет приведенное ниже в цикле

  1. Копирование файла из одного места в другое на диске.
  2. SFTP вышеупомянутый файл на внешний сервер

Ubuntu rootfs работает btrfs и размер копируемого файла обычно составляет около 2 ГБ.

Мы видим высокую задержку в потоках пользовательского уровня, когда скрипт активен в системе. Задержка находится в диапазоне 1 с-3 с. Если размер файла увеличен до 10 ГБ, задержка потока находится в диапазоне 10-20 с

Подробнее:

Тип диска - SSD, а система имеет 64 ГБ ОЗУ. Файловые системы Btrfs, смонтированные с использованием следующих параметров:

rw,noatime,compress=lzo,ssd,space_cache

Параметры виртуальной машины sysctl:

vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 10
vm.dirty_bytes = 0
vm.dirty_expire_centisecs = 3000
vm.dirty_ratio = 20
vm.dirty_writeback_centisecs = 500
vm.dirtytime_expire_seconds = 43200

. Мы хотим, чтобы активность на диске не замораживала пользовательские потоки, поскольку они критически важны для мы.

Обновление с дополнительной информацией:

Добавление дополнительной информации. Когда мы изменяем параметры виртуальной машины sysctl на что-то агрессивное (см. Ниже), ситуация улучшается.

sysctl -w vm.dirty_background_ratio=1
sysctl -w vm.dirty_ratio=2
sysctl -w vm.dirty_expire_centisecs=1000
sysctl -w vm.dirty_writeback_centisecs=100

Имеет ли смысл иметь вышеуказанные настройки? Или нам нужно изменить планировщик ввода-вывода на что-то отличное от значения по умолчанию [CFQ]?

1
задан 18 April 2019 в 16:35

0 ответов

Другие вопросы по тегам:

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