获取进程大小的正确方法是什么 Solaris, HP-UXAIX?我们应该使用 top 或者 ps -o vsz 或者是其他东西?

有帮助吗?

解决方案

的确切定义 vsize, rss, rprvt, rshrd, ,以及其他看起来晦涩难懂的缩写因操作系统而异。的手册页 topps 命令将有某种描述,但所有这些描述都被大大简化(或基于早已灭绝的内核实现)。
在一般情况下,“流程规模”作为一个概念很难确定。特定实例中的答案在很大程度上取决于操作系统中实际的内存管理实现,并且很少像大多数用户(和大多数开发人员)心中存在的整洁的“进程大小”概念那样令人满意。

例如,这些数字(也可能是它们的任何组合)都不能用于准确告诉您在给定的可用内存量中可以同时运行多少个此类进程。但实际上,你最好的选择是从这一点开始:您为什么需要这个号码?您将用它做什么?有了这些信息,我想您会得到更有用的答案。

其他提示

在 Solaris 上,您可以使用以下命令获取有关进程内存使用情况的详细信息 pmap 命令。尤其, pmap -x <pid> 显示进程共享的内存量以及该进程专门使用的内存量。这对于计算进程的“边际”内存使用量非常有用——通过这种技术,您可以避免重复计算共享库。

是的,你锁定 VSZ 是对的。

ps u 将为您提供 VSZ 和 RSS,它们是虚拟内存大小和驻留集大小。RSS 是已分配给进程的物理内存大小,VSZ 是进程的虚拟内存大小。如果您有一个程序的多个副本正在运行,则 VSZ 中的大量内存将在这些进程之间共享。

我总结了所有这样的进程的驻留集大小(作为 root):

ps ax -o rss | awk '{rss += $1;} END { print rss}'
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top