getrusage系统调用:什么是“最大居民人数”


23

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.

那么这个数字到底是什么意思?


只是ru_maxrss在Mac / BSD机器上以字节为单位的注释。
艾萨克·特纳

1
澄清ru_maxss一下:在Mac OS X(Darwin)计算机上以字节为单位,在BSD计算机和Linux计算机上以千字节为单位。请参阅stackoverflow.com/q/40773924/781723stackoverflow.com/q/12050913/781723
DW

Answers:


27

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

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

ru_maxrss字段struct rusage是居民集大小的“高水位线”。它指示此过程的最大RAM使用量(使用时RUSAGE_SELF)。

您可以限制进程的常驻集大小,以避免一个应用程序“耗尽”系统上的所有RAM并迫使其他应用程序交换(或在内存不足的情况下完全失败)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.