Как настроить параметры sysctl.vm для восстановления файлового кэша до нажатия min_free_kbytes? - PullRequest
0 голосов
/ 07 сентября 2018

Кажется, что в нашем коде возникают задержки, когда доступная память приближается к min_free_kbytes, и наш код пытается выделить большой объем памяти (1-2 ГБ в течение 15-30 секунд). Мы видим, что большая часть памяти используется файловым кешем и обычно восстанавливается всякий раз, когда мы приближаемся к min_free_kbytes. Однако, когда мы приближаемся к пределу, и нашему коду внезапно требуется много памяти, мы видим, что kswapd срабатывает, и он блокирует процессор на 5-40 секунд.

Мы смогли почти полностью решить эту проблему, подняв значение min_free_kbytes до 3 ГБ (из 64 ГБ), но затем мы поняли, что это фактически не позволяет существующим процессам использовать эту доступную оперативную память. Казалось, что повышение этого значения заставляло ОС чаще восстанавливать память из файлового кэша, что приводило к снижению пиковых задержек на 99% просто потому, что оно было менее вероятно вблизи значения min_free_kbytes. В идеале мы хотели бы использовать всю доступную оперативную память и не иметь этих пиков задержки.

Есть ли способ заставить файловый кеш начать восстанавливаться со значением выше min_free_kbytes? Мы думали о запуске «sync && echo 3> / proc / sys / vm / drop_caches» всякий раз, когда оно опускается ниже определенного нами значения, но я сомневаюсь, что это рекомендуемый или лучший вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...