getrusage 系统调用:什么是“最大驻留集大小”

getrusage 系统调用:什么是“最大驻留集大小”

man getrusage 2

ru_maxrss (since Linux 2.6.32)
              This is the maximum resident set size used (in kilobytes). For RUSAGE_CHILDREN, this is the resident set size of the largest
              child, not the maximum resident set size of the process tree.

那么这个数字到底意味着什么呢?

答案1

进程的驻留集大小是属于该进程且当前存在(驻留)在 RAM(真实 RAM,未交换或非驻留)中的内存量。

例如,如果一个进程分配一块内存(例如 100Mb)并主动使用它(读/写),则其驻留集大小将约为 100Mb(加上开销、代码段等)。如果进程停止使用(但不释放)该内存一段时间,操作系统可以选择交换该内存的块,为其他进程(或缓存)腾出空间。然后,驻留集大小将减少内核换出的数量。如果进程唤醒并开始重新使用该内存,内核将从交换区重新加载数据,驻留集大小将再次增加。

ru_maxrss的字段是struct rusage驻留集大小的“高水位线”。它指示此进程的 RAM 使用峰值(使用 时RUSAGE_SELF)。

您可以限制进程的驻留集大小,以避免单个应用程序“耗尽”系统上的所有 RAM 并强制其他应用程序进行交换(或因内存不足而完全失败)。

相关内容