linux – 获取进程的交换使用情况

前端之家收集整理的这篇文章主要介绍了linux – 获取进程的交换使用情况前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找一种方法,从 shell脚本中获取特定进程的交换使用情况. Top可以显示此信息,但仅限于交互模式.批处理模式仅在存在.toprc时显示自定义,但您无法在命令行上指定特定的.toprc.我找到了 this script,但我的服务器上/ proc / * / smaps中没有交换条目:
# find /proc/ -maxdepth 1 -type d -regex '^/proc/[0-9]+$' -exec grep -Hi swap '{}'/smaps \;
#

所以脚本只为每个进程输出0.

有没有办法找到这些信息?我在RHEL5.1 2.6.18-53.el5 x86_64.

编辑:

需要说明的是,当我询问“交换使用”时,我的意思是已经被分页到交换文件系统的进程所使用的内存量(当前不在主内存中的内容).假设没有更好的方法,我将通过ps -o vsz,RSS的值默认使用(virtual-RSS)计算它.

解决方法

一个有趣的问题让我摸不着头脑.

首先,为什么你没有Swap行:虽然理论上是在内核2.6.16中添加的,但直到5.3左右它才出现在RHEL中(内核2.6.18-99.el5).这是提交(遗憾的是在RH Bugzilla中无法访问;如果您碰巧拥有具有适当权限的帐户,则Bugzilla ID为443749). http://sophie2.aero.jussieu.fr/distrib/Scientific%20Linux/5x/i386/by-pkgid/351d529f9beeb4e5d936a6d5e3e7813a/files/645

其次,这意味着顶级数据不可靠,因为它不是从smaps中读取的(即它是virt-res):

case P_SWP:
       MKCOL(scale_num(PAGES_TO_KB(p->size - p->resident),w,s));

第三,我遗憾地说内核是关于使用了多少交换的One True Oracle,并且据我所知,各种补丁使得信息以smaps和状态可用是暴露该信息的唯一方式.不幸的是,我认为更新内核是获取准确信息的唯一方法;通过自己修补源(sample patch,no warranty)或更新到内核2.6.18-99.el5.

我希望有一个更简单的答案;责备莱纳斯.

原文链接:https://www.f2er.com/linux/397624.html

猜你在找的Linux相关文章