Виклик системи 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/781723 та stackoverflow.com/q/12050913/781723 .
DW

Відповіді:


27

Розмір набору резидента процесу - це об'єм пам'яті, що належить йому, і наразі присутній (резидент) в оперативній пам'яті (справжня ОЗУ, не замінена або іншим чином не резидент).

Наприклад, якщо процес виділяє шматок пам'яті (скажімо, 100Mb) і використовує його активно (читає / записує в нього), розмір його резидента буде приблизно 100Mb (плюс накладні витрати, сегмент коду тощо). Якщо після цього процес на деякий час перестане використовувати цю пам'ять (але не випускає), ОС може вирішити поміняти шматки цієї пам'яті на обмін, щоб звільнити місце для інших процесів (або кешу). Розмір набору резидентів потім зменшиться на суму, яку ядро ​​замінило. Якщо процес прокинеться і почне повторно використовувати цю пам'ять, ядро ​​перезавантажить дані з підкачки, і розмір набору резидента знову підніметься.

ru_maxrssПоле struct rusageє «високим водяним знаком» для резидентів встановленого розміру. Він вказує на пікове використання оперативної пам’яті для цього процесу (при використанні RUSAGE_SELF).

Ви можете обмежити розмір встановленого резидента процесу, щоб уникнути того, щоб одне додаток «з’їдало» всю оперативну пам’ять у вашій системі та змушувало інші програми змінюватись (або повністю виходити з ладу поза умовами пам’яті).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.