за последние несколько месяцев у меня была чрезвычайно раздражающая проблема с моей системой Linux: она заикается при воспроизведении звука Firefox, движении мыши и т. д., с крошечным секундным (но все еще заметным) заиканием каждые несколько секунд. Проблема усугубляется по мере заполнения кэша памяти или при запуске программ, интенсивно использующих диск/память (например, backup software restic
). Однако, когда кэш не заполнен (например, при очень небольшой нагрузке), все работает очень гладко.
просмотр через perf top
вывод, я вижу, что list_lru_count_one
имеет высокие накладные расходы (~20%) в эти периоды задержки. htop
также показывает kswapd0
использование 50-90% CPU (хотя кажется, что влияние намного больше). Во времена крайнего отставания,htop
CPU meter часто доминирует использование процессора ядра.
единственный обходной путь, который я нашел, - это либо заставить ядро сохранить свободную память (sysctl -w vm.min_free_kbytes=1024000
) или непрерывно сбрасывать кэши памяти через echo 3 > /proc/sys/vm/drop_caches
. Не идеально, конечно, и ни один полностью не решает заикание либо; это только делает его менее частым.
у кого-нибудь есть идеи, почему это может происходить?
Сведения О Системе
- i7-4820k с 20 ГБ (несогласованной) оперативной памяти DDR3
- воспроизводится на Linux 4.14-4.18 на NixOS unstable
- запускает контейнеры Docker и Kubernetes в фоновом режиме (что, по моему мнению, не должно создавать микростаттеринг?)
что у меня есть уже пробовал
- изменение планировщики ввода-вывода (значения), используя multiqueue планировщики ввода-вывода
- С помощью
-ck
набор патчей от Con Kolivas (не помогло) - отключение swap, изменение swappiness, используя zram
EDIT: для ясности, вот изображение htop
и perf
в ходе такой ЛАГ Спайк. Обратите внимание на высокий list_lru_count_one
загрузка процессора и kswapd0
+ ЦП высокий ядра использование.