Firefox 占用了大量内存,机器几乎停滞,因为 kswapd/kworker 占用了大部分 CPU。没有交换空间,vm.swappiness
在 Linux 4.5.7 (Fedora 24) 上为 =0。
我不明白的是,有将近 1.5GB 的缓存,为什么 Linux 没有为 Firefox/plugin-container 回收这些缓存?kswapd 在做什么?
top - 13:17:15 up 2:47, 4 users, load average: 9.78, 5.38, 2.35
Tasks: 197 total, 4 running, 193 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.8 us, 47.0 sy, 0.0 ni, 10.0 id, 36.9 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 3922860 total, 105508 free, 2353620 used, 1463732 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 6828 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
49 root 20 0 0 0 0 R 100.0 0.0 2:35.25 kswapd0
6395 kevin 20 0 1152968 371132 4292 R 31.7 9.5 3:16.59 plugin-containe
3449 root 20 0 0 0 0 S 26.3 0.0 0:24.49 kworker/u16:3
5885 root 20 0 0 0 0 S 23.8 0.0 0:34.12 kworker/u16:2
4246 root 20 0 0 0 0 S 22.9 0.0 0:42.11 kworker/u16:4
6236 root 20 0 0 0 0 R 19.0 0.0 0:38.84 kworker/u16:1
4700 root 20 0 0 0 0 S 17.8 0.0 0:40.57 kworker/u16:5
3473 kevin 20 0 1662688 402008 460 D 8.3 10.2 7:36.45 thunderbird
1846 elastic+ 20 0 4238960 401324 124 S 5.7 10.2 3:05.58 java
6107 kevin 20 0 2133616 602096 20920 S 5.1 15.3 4:03.21 firefox...
我认为我最近没有做任何与 I/O 写入相关的操作,因此我预计不会有任何脏页刷新到磁盘(SSD),尽管等待时间为 37%,这有点令人惊讶。我抓取了大约 30 秒的时间,top
并buff/cache
没有发生太大变化,因此我认为它实际上没有将任何页面刷新到磁盘(尽管我不明白为什么等待百分比很高):
$ grep -e "top -" -e "buff/cache" top.txt
top - 13:17:11 up 2:47, 4 users, load average: 9.41, 5.23, 2.29
KiB Mem : 3922860 total, 103468 free, 2353456 used, 1465936 buff/cache
top - 13:17:15 up 2:47, 4 users, load average: 9.78, 5.38, 2.35
KiB Mem : 3922860 total, 105508 free, 2353620 used, 1463732 buff/cache
top - 13:17:21 up 2:47, 4 users, load average: 10.44, 5.59, 2.43
KiB Mem : 3922860 total, 108700 free, 2354532 used, 1459628 buff/cache
top - 13:17:24 up 2:47, 4 users, load average: 10.72, 5.73, 2.50
KiB Mem : 3922860 total, 107004 free, 2355112 used, 1460744 buff/cache
top - 13:17:43 up 2:47, 4 users, load average: 12.64, 6.39, 2.77
KiB Mem : 3922860 total, 108264 free, 2352820 used, 1461776 buff/cache
top - 13:17:46 up 2:47, 4 users, load average: 12.27, 6.42, 2.79
KiB Mem : 3922860 total, 108580 free, 2352584 used, 1461696 buff/cache
终止firefox
并使plugin-container
系统恢复正常。我更希望缓存完全刷新以提供更多空间,或者至少 OOM 终止程序在这种情况下运行,而不是Ctrl+Alt+F2
因为 KDE 没有响应而不得不这样做,等待登录提示很长时间,最后执行pkill
。
答案1
这是一个超级用户问题,而不是服务器故障,但我在 Fedora 24 上自己也遇到过这个问题。
这是由 ffmpeg-libs、VDPAU 和我的 GPU/内核引起的。我禁用了 VLC 中的 VDPAU 来“修复”它。
如果“renderD128”的映射显示数百个并且不断增加,则它看起来就像 Shmem 的大小不断增加/proc/meminfo
以及受影响的过程。pmap
这很可能是一个执行错误——在视频处理应用程序中禁用 VDPAU 输出。