UNIX上的进程大小

Translate

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

This question and all comments follow the "Attribution Required."

所有的回答

Translate

的确切定义vsize, rss, rprvt, rshrd以及其他晦涩的缩写因操作系统而异。的手册页topps命令将具有某种描述,但是所有这些描述都得到了大大简化(或基于长期不存在的内核实现)。
在一般情况下,很难确定“过程大小”的概念。在特定情况下,答案在很大程度上取决于操作系统中实际的内存管理实现,并且很少像大多数用户(和大多数开发人员)所想到的整齐的“过程大小”概念那样令人满意。

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

来源
TLS
Translate

在Solaris上,您可以通过以下方式获取有关进程的内存使用情况的详细信息:pmap命令。特别是,pmap -x <pid>显示您共享一个进程的内存量,以及该进程专门使用的内存量。这对于确定进程的“边际”内存使用情况很有用-使用此技术,您可以避免重复计算共享库。

来源
Translate

是的,锁定VSZ是正确的。

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

来源
Translate

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

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