Des*_*awn 27 linux swap virtual-memory centos5
我看到 kswapd 使用 100% CPU ......我怎么知道代表哪个进程使用 kswapd 这么多?
Pau*_*aul 21
kswapd 正在管理交换空间以响应大于所有进程物理可用的内存需求。
它与流程无关,它只对访问哪些页面以及何时访问感兴趣(当然比这更复杂,但为了简单起见,我们也可以这样查看)。
所以真正的问题是“哪些进程对内存的负担最大,导致 kswapd 需要一直分页”。
使用“top”并切换到内存使用排序模式最容易回答。
Mik*_*ike 10
你可以编写脚本......但你也可以通过 top 来完成
运行 top 然后按O然后按p然后输入
现在所有进程都按交换使用情况排序,您可以看到哪些进程正在使用它
如果您使用的是 Ubuntu 15.10 或更高版本,这实际上可能是错误的结果,特别是如果您的系统是缺少交换分区的虚拟机(例如 AWS EC2)。该问题存在于其他发行版上,但在撰写本文时,尚不清楚相同的修复程序是否普遍适用。
临时解决方法:
sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot
Run Code Online (Sandbox Code Playgroud)
请注意,这将禁用 Xen 和 Hyper-V 虚拟机的热添加 RAM/CPU。
kswapd某处似乎也存在错误,希望仅在较旧的内核上。
现在,kswapd 几乎每天都会在更大的集群中的一些机器上随机发疯(尽管使用的是非当前内核)。两个 kswapd 进程上的 CPU 均为 100%。没有其他正在运行的进程(ssh shell 除外)、大量可用 RAM(超过 700 MB)并且根本没有使用 SWAP。没有换入,也没有换出。
还没有任何解释,为什么特定的机器被击中而另一台没有。它似乎不是完全随机的,因为它通常会在很短的时间内击中不止一台机器。看起来闲置的机器以及处于高压下的机器不太可能(!)受到这种影响。所以它必须对工作负载做一些事情,并且只有在机器既不空闲也不很忙时才会命中。
如果问题没有解决,就没有任何帮助了。杀死所有进程(并没有变得不可杀死),卸载所有文件系统,什么都没有。kswapd仍然保持在 100% CPU。我怀疑 SMP 内核中存在一些自旋锁竞争,但也可能是我错了。
也许看我的回答serverfault.com/questions/316995/#493257
笔记:
| 归档时间: |
|
| 查看次数: |
95756 次 |
| 最近记录: |