UNIX上的进程大小

时间:2020-03-05 18:37:30  来源:igfitidea点击:

在Solaris,HP-UX和AIX上获取进程大小的正确方法是什么?我们应该使用top还是ps -o vsz或者其他?

解决方案

回答

是的,我们锁定VSZ的权利是正确的。

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

回答

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

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

回答

在Solaris上,可以通过pmap命令获得有关进程内存使用情况的详细信息。尤其是,pmap -x <pid>向我们显示一个进程共享了多少内存,以及该进程专门使用了多少内存。这对于确定进程的"边际"内存使用情况很有用-使用此技术,我们可以避免重复计算共享库。