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 并强制其他应用程序进行交换(或因内存不足而完全失败)。