Linux:如何检测进程是否过度颠簸?

时间:2012-08-15 16:10:32

标签: linux process virtual-memory

有没有办法以编程方式检测?

另外,用于检测哪些进程正在颠簸的linux命令是什么?

1 个答案:

答案 0 :(得分:9)

我假设这里的“颠簸”是指所有进程的活动内存集太大而无法容纳到内存中的情况。在这种情况下,每个上下文切换都会导致读取和写入磁盘,最终服务器可能会崩溃,以至于硬件重启是重新获得对盒子控制权的唯一选择。

在/ proc / vmstat中有全局计数器swin和swout - 如果它们在很短的时间间隔内增加,则该框可能会遇到颠簸问题。

在过程级别,它是非平凡的AFAIK。 / proc / $ pid / status包含一些有用的东西,但不包括swin和swout。从2.6.34开始,有一个VmSwap条目,使用的交换总量,以及/ proc / $ pid / state中的变量#12是主要页面错误的数量。 / proc / $ pid / oom_score也值得研究。如果VmSwap增加和/或主要页面错误的数量增加和/或oom_score非常高,那么这个过程很可能会导致颠簸。

我写了一个脚本thrash-protect - 它可以在https://github.com/tobixen/thrash-protect获得 - 它试图找出导致颠簸和临时挂起进程的进程。它对我来说非常好,并最终从一些服务器重新启动中解救了我。