有时 kswapd0 会占用一个核心的 100%。此问题在所有 4.0 以上内核中都会发生。drop_caches 不起作用。添加 swap 不起作用。问题出现的时间没有规律。它可以等待 1-2 周。它可能一天出现两次。大多数情况下,它会存在很长时间,直到我重新启动服务器。很少情况下它可以在不重新启动的情况下自行解决。
更换电源没有改变任何东西。RAM 测试运行了一整夜,没有发现任何东西。
在我的研究过程中,我尝试了较旧的内核(一些 3.0+) - 没有结果,问题仍然存在。
一些 perftop 输出:
这是加载了 i915 内核模块的 perftops:
+ 98,22% 0,90% [kernel] [k] kswapd
+ 93,07% 0,32% [kernel] [k] shrink_zone
+ 87,41% 3,71% [kernel] [k] shrink_slab
+ 56,55% 1,11% [i915] [k] i915_gem_shrinker_scan
+ 50,65% 46,24% [i915] [k] i915_gem_shrink
+ 23,28% 4,32% [kernel] [k] super_cache_count
+ 18,22% 2,33% [kernel] [k] list_lru_count_one
+ 15,26% 0,00% [kernel] [k] ret_from_fork
+ 15,26% 0,00% [kernel] [k] kthread
+ 11,84% 11,83% [kernel] [k] _raw_spin_lock
46,24% [i915] [k] i915_gem_shrink
12,11% [kernel] [k] _raw_spin_lock
4,28% [kernel] [k] super_cache_count
3,74% [i915] [k] i915_vma_unbind
3,67% [kernel] [k] shrink_slab
3,20% [i915] [k] i915_gem_object_put_pages
2,78% [kernel] [k] __list_lru_count_one.isra.0
这是将 i915 列入黑名单后的情况。除了以下输出外,它不会以任何方式改变此错误行为:
+ 97,30% 2,32% [kernel] [k] kswapd
+ 83,40% 0,65% [kernel] [k] shrink_zone
+ 69,79% 7,77% [kernel] [k] shrink_slab
+ 59,73% 10,66% [kernel] [k] super_cache_count
+ 46,97% 5,76% [kernel] [k] list_lru_count_one
+ 30,73% 30,73% [kernel] [k] _raw_spin_lock
+ 23,84% 0,00% [kernel] [k] ret_from_fork
+ 23,84% 0,00% [kernel] [k] kthread
+ 9,63% 7,23% [kernel] [k] __list_lru_count_one.isra.0
+ 6,18% 0,82% [kernel] [k] zone_balanced
+ 5,05% 2,28% [kernel] [k] shrink_lruvec
30,63% [kernel] [k] _raw_spin_lock
10,84% [kernel] [k] super_cache_count
7,66% [kernel] [k] shrink_slab
7,28% [kernel] [k] __list_lru_count_one.isra.0
5,29% [kernel] [k] list_lru_count_one
3,69% [kernel] [k] memcg_cache_id
3,62% [kernel] [k] _raw_spin_unlock
2,63% [kernel] [k] zone_watermark_ok_safe
2,53% [kernel] [k] mem_cgroup_iter
2,44% [kernel] [k] shrink_lruvec
2,36% [kernel] [k] kswapd
1,35% [kernel] [k] _raw_spin_lock