如何检查 Solaris 进程消耗了多少内存?我想要分配的总地址空间和驻留在 RAM 中的空间量。
我尝试使用一些 awk 脚本对 pmap 输出进行求和,但这是一个丑陋的黑客行为。有没有更好的方法来编写脚本?
答案1
prstat -s rss
'-s' 按 rss 列对 prstat 输出进行排序(有关其他列,请参阅手册页)。还可以尝试使用 '-a' 选项进行每个用户的累积。
ps -eo pid,pmem,vsz,rss,comm | sort -rnk2 | head
前 10 个 RAM 消费者。'-o pmem' 显示驻留内存的百分比,即进程使用的 RAM。
ls -lh /proc/{pid}/as
显示进程总地址空间 (vsz) 的简单方法。与 pgrep 结合使用,可按用户、模式等进行累积……例如:
for pid in `pgrep -U webserver`; do ls -lh /proc/$pid/as; done
答案2
好吧,在我读了一些手册页之后,我得到了以下内容
ps -o vsz -p $PID | tail -1
很简单,常驻大小的格式是rss。
答案3
prstat
或者也许是 dtrace 脚本?
答案4
作为 Zenoss 社区经理,我的花费为 $.02...
Zenoss 可以监控所有网络设备和服务器的运行状况,以及服务器上运行的进程。我们的一位社区成员最近提交了通过 SNMP 监控 Solaris 的进程:http://community.zenoss.org/docs/DOC-5882