Answers:
出于多种原因,我将在一分钟内介绍每个进程的内存记帐技巧。对于简单的监视,使用gkrellmd或nagios脚本可能就足够了。如果想要更高的准确性,则需要更加努力。
smem引入了比例集大小的概念:
由于物理内存的大部分通常在多个应用程序之间共享,因此称为常驻集大小(RSS)的内存使用量的标准度量将大大高估内存使用量。PSS而是测量每个应用程序在每个共享区域中的“公平份额”,以给出一个实际的度量。
示例:启动GNOME,导致启动多个进程,每个小程序和程序一个。它们都链接到libglib。Linux将libglib加载到一个内存块中,并将其映射到每个需要libglib的进程中。天真的内存核算会根据链接到它的每个进程来计算完整的libglib大小。
smem将libglib的成本分摊到使用它的各个进程中,以更加真实地反映实际情况。它还具有许多显示内存使用情况的选项(来自网站):
但是,您将需要一个非常新的内核(> 2.6.27)。
想不到现成的东西
但是,执行ps -AH v |的PHP脚本组合。awk'{print $ 8,$ 9,$ 10}'并将其与pChart结合使用可以为您提供一个可以满足您需求的网页?(以千比特为单位的使用,总计和进程名称的百分比)
自己做。制作一个简单的Shell脚本来更新RRD数据库。然后使用rrdtool绘制图形。
如果您真的很关注细节,请不要忘记收集。这是可以报告的每个进程内存使用率类型的示例:
记录1 cag-dl585-02(1244758290.002)(2009年6月11日星期四18:11:30) 过程摘要(计数器为/秒) #PID用户S VmSize VmLck VmRSS VmData VmStk VmExe VmLib MajF MinF命令 9089根S 66856K 0 2328K 1440K 212K 736K 6812K 0 0 sendmail: 9097 smmsp S 57600K 0 1772K 1304K 204K 736K 5904K 0 0发送邮件: 9108根S 6428K 0 360K 180K 84K 88K 1944K 0 0 gpm 9120根S 74808K 0 1136K 476K 520K 48K 1920K 0 0 crond 9173 xfs S 20904K 0 1828K 1124K 88K 104K 3084K 0 0 xfs
如果您对特定的流程感兴趣,可以指定适当的过滤器(包括显示线程的开关)。
而且,如果您通常对内存感兴趣,它还可以显示slab详细信息,甚至可以输出vmstat格式。当现有工具已经这样做时,为什么要以vmstat格式显示数据?这很容易-通过收集,您可以将统计信息记录到文件中,然后以多种格式播放。
试试吧,你会喜欢的
我没有详细介绍,但是collectl具有生成定界符分隔的输出的选项,因此在gnuplot的情况下,只需生成包含空格的数据即可。它甚至可以很好地加载到excel中。如果需要逗号,可以更改定界符,如果您确实想执行rrd路线(请小心,因为绘图不必与数据匹配!),则可以将分度符更改为冒号,甚至将时间戳更改为UTC。-标记
kSar基于sar数据,但它基于Java,因此或多或少与平台无关,并且允许您ssh到远程主机以获取数据。
phpsysinfo不会以某种方式使您能够查看进程信息吗?