小编Pne*_*cat的帖子

为什么我的 Linux 系统会卡顿,除非我不断地删除缓存?

在过去的几个月里,我的 Linux 系统遇到了一个非常恼人的问题:它在 Firefox 音频播放、鼠标移动等方面卡顿,每隔几秒就会出现亚秒级(但仍然很明显)的卡顿。当内存缓存填满时,或者当我运行高度磁盘/内存密集型程序(例如备份软件restic)时,问题会恶化。然而,当缓存未满时(例如,在非常轻的负载下),一切都运行得非常顺利。

查看perf top输出,我发现list_lru_count_one在这些滞后期间有很高的开销(~20%)。htop还显示kswapd0使用了 50-90% 的 CPU(尽管感觉影响远大于此)。在极度滞后期间,htopCPU 仪表通常由内核 CPU 使用率决定。

我发现的唯一解决方法是强制内核保留可用内存 ( sysctl -w vm.min_free_kbytes=1024000) 或通过echo 3 > /proc/sys/vm/drop_caches. 当然,两者都不是理想的,也都不能完全解决口吃问题;它只会使它不那么频繁。

有没有人对为什么会发生这种情况有任何想法?

系统信息

  • i7-4820k 带有 20 GB(不匹配)DDR3 RAM
  • 转载于 Linux 4.14-4.18 on NixOS 不稳定
  • 在后台运行 Docker 容器和 Kubernetes(我觉得这不应该造成微口吃?)

我已经尝试过的

  • 使用多队列 I/O 调度程序更改 I/O 调度程序 (bfq)
  • 使用-ckCon Kolivas的补丁集(没有帮助)
  • 禁用交换,改变交换,使用 zram

编辑:为清楚起见,这里的图片htopperf这样的滞后穗期间。请注意高list_lru_count_oneCPU 负载和kswapd0+ 高内核 …

memory linux performance cache

6
推荐指数
1
解决办法
1843
查看次数

标签 统计

cache ×1

linux ×1

memory ×1

performance ×1