kswap, использующий 100% ЦП даже с более чем 100 ГБ ОЗУ

Я использую виртуальную машину Centos 7 ESXi с почти 300 ГБ ОЗУ и 24 виртуальными ЦП.

Средняя нагрузка составляет 3, а приложения почти никогда не используют более 150 ГБ оперативной памяти. Остальная часть доступной памяти используется Linux для кеширования.

Проблема в том, что, когда кеш заполняет доступную оперативную память, два процесса kswapd начинают использовать 100% ЦП, и внезапно я вижу, что все ЦП также показывают 99% использования sys (это не ожидание или пользователь, это в основном sys).

Это вызовет высокую нагрузку (100+) в течение нескольких минут, пока система не восстановится и нагрузка снова не упадет до 3.

На данный момент у меня нет раздела подкачки, но даже когда он у меня был, он возникла проблема.

Одно из найденных мною "решений" - выполнять следующую команду каждый день:

 echo 3 > /proc/sys/vm/drop_caches

, которая удаляет буферы / кеши. Это «исправит» проблему, поскольку использование кеша никогда не достигает 100%.

Мои вопросы:

  • Есть ли реальное решение этой проблемы?

  • Разве ядро ​​Linux не должно быть достаточно умным, чтобы просто очистить старый кеш страниц из памяти вместо запуска kswap?

В конце концов, насколько я понимаю, основная функция оперативной памяти должна использоваться приложениями. Кэширование - это всего лишь второстепенная функция, от которой можно отказаться / игнорировать, если у вас недостаточно памяти.

Моя версия ядра - 3.10.0-229.14.1.el7. x86_64.

5
задан 10 December 2015 в 02:41
1 ответ

Похоже, у вас заканчивается ОЗУ на одном узле NUMA, и система пытается освободить память на этом узле. Это может произойти, если у вас есть один процесс, использующий большой объем памяти, которая (по умолчанию) выделяется преимущественно на узле, на котором выполняется процесс.

Посмотрите, поможет ли это:

sysctl -w vm.zone_reclaim_mode=0

Более подробное описание проблем которые могут возникнуть при использовании политики NUMA по умолчанию в большинстве систем, см. https://engineering.linkedin.com/performance/optimizing-linux-memory-management-low-latency-high-throughput-databases

2
ответ дан 3 December 2019 в 01:57

Теги

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