是否有一个脚本可以以图形(例如饼图)的形式显示内存使用情况,其中每个进程都是一个单独的部分?
我不是在寻找类似的东西穆宁绘制随时间变化的内存使用情况图表,而是显示某个时间点每个进程的内存使用情况。
为了使我的请求更加模糊,它是针对无头服务器(因此没有 X 应用程序)。最简单的方法是编写一个 PNG 文件,或者可能是 HTML 文件(可以使用 Javascript 来过滤进程、在图形类型之间切换等)
答案1
由于多种原因,每个进程的内存核算都很棘手,稍后我会解释。对于简单的监控,gkrellmd 或 nagios 脚本可能就足够了。如果你想要更高的准确性,你需要更努力地寻找。
微电子引入了比例集大小:
由于物理内存的很大一部分通常由多个应用程序共享,因此内存使用量的标准度量标准(称为驻留集大小 (RSS))将大大高估内存使用量。相反,PSS 会测量每个应用程序在每个共享区域中的“公平份额”,以提供实际的度量标准。
示例:您启动 GNOME,导致启动多个进程,每个小程序和程序一个进程。它们都链接到 libglib。Linux 将 libglib 加载到一个内存块中,并将其映射到需要 libglib 的每个进程中。简单的内存核算会针对链接到它的每个进程计算完整的 libglib 大小。
smem 将 libglib 的成本分摊给使用它的进程,以更接近实际情况。它还有许多选项来显示内存使用情况(来自网站):
- 显示基本进程信息 smem
- 显示系统视图 smem -R 4G -K /path/to/vmlinux -w
- 显示总计和百分比 smem -t -p
- 显示不同的列 smem -c “名称 用户 pss”
- 显示通过映射 smem -M libxml 过滤的进程
- 显示按进程 smem -m -P [e]volution 过滤的映射
- 从捕获 tarball smem --source capture.tar.gz 中读取数据
- 显示由 pid smem --bar pid -c "pss uss" 标记的条形图
- 显示按名称标记的 RSS 饼图 smem --pie name -s rss
但是,您需要一个非常新的内核(> 2.6.27)。
答案2
想不出任何现成的东西
然而,PHP 脚本的组合执行ps -AH v | awk'{打印$8,$9,$10}'并将其与图表可以为您提供一个可以满足您需求的网页吗?(以 KB 为单位的使用量、占总流量的百分比以及进程名称)
答案3
看一下表面- 它依赖于 sar 数据,您可以实时监控您的内存使用情况(以及所有其他 sar/sysstat 数据)。
答案4
自己动手。编写一个简单的 shell 脚本来更新 RRD 数据库。然后使用 rrdtool 绘制图表。