Я потратил 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
параметр устанавливает размер виртуальной памяти. Что правда?