Я витратив 2 години на читання запитань з цього приводу, і все ж є непорозуміння.
У мене цей процес:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1452 0.4 1.8 1397012 19308 ? Sl 04:23 3:48 ./transaction_server
Це показує, що він використовує 19.3Mbсистемну пам'ять резидентів (у мене немає файлу підкачки), навколо 1.8%всієї 1GBсистемної пам'яті. Віртуальний розмір 1.39GB?!?. Я читав, що ulimit -mне працює. Люди використовують, ulimit -vнаприклад, налаштування віртуальної пам’яті для цього процесу. Чи є ця віртуальна пам'ять однією з перелічених VSZ ps? Яке значення я повинен встановити, якщо хочу обмежити цей процес, щоб використовувати 100MBмаксимум системну пам'ять. Я прочитав документацію, setrlimitі це здається законним:
RLIMIT_AS
This is the maximum size of a process' total available memory,
in bytes. If this limit is exceeded, the malloc() and mmap()
functions shall fail with errno set to [ENOMEM]. In addition,
the automatic stack growth fails with the effects outlined above.
Але для інших версій документації цей RLIMIT_ASпараметр встановлює розмір віртуальної пам'яті. Що таке правда?