UNIX上的进程大小

时间:2008-08-04 07:34:44

标签: unix size

Solaris, HP-UXAIX上获取流程大小的正确方法是什么?我们应该使用top还是ps -o vsz还是别的什么?

4 个答案:

答案 0 :(得分:17)

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:4)

是的,你是正确的锁定VSZ。

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

答案 3 :(得分:2)

我总结了所有进程的驻留集大小(以root身份):

ps ax -o rss | awk '{rss += $1;} END { print rss}'