Что означает ulimit -l?

Согласно справочной странице, «-l» в ulimit означает «Максимальный размер, который может быть заблокирован в памяти». Что именно означает это предложение? Как это может повлиять на запуск программ?


person Eric Yung    schedule 10.06.2009    source источник


Ответы (2)


Заблокированная память не может быть выгружена — это уменьшает объем памяти, доступной для других процессов. Этот параметр ограничивает объем памяти, который можно заблокировать.

person 1800 INFORMATION    schedule 10.06.2009
comment
означает ли это, что если я установлю его на 100M, а затем запущу программу (скажем, java-программу), она сохранит ее в памяти и не будет выгружать? - person Eric Yung; 10.06.2009
comment
Не совсем. Затем программа должна будет заблокировать память, и это ограничение для пользователя, а не для каждой программы, поэтому другие программы могут заблокировать память и использовать часть выделения. - person 1800 INFORMATION; 10.06.2009
comment
ulimit ограничивает только то, сколько вы можете заблокировать. Вам нужно вызвать mlock или mlockall, чтобы он был действительно заблокирован. - person brian-brazil; 10.06.2009

Это ограничивает объем памяти, который вы можете сделать неподкачиваемым с помощью mlock.

В справочной странице setrlimit говорится:

Максимальное количество байтов памяти, которое может быть заблокировано в ОЗУ. Фактически это ограничение округляется до ближайшего кратного размера системной страницы. Это ограничение влияет на mlock(2) и mlockall(2), а также на операцию MAP_LOCKED в mmap(2). Начиная с Linux 2.6.9, это также влияет на операцию SHM_LOCK shmctl(2), где он устанавливает максимальное количество байтов в сегментах разделяемой памяти (см. shmget(2)), которые могут быть заблокированы реальным идентификатором пользователя вызывающего процесса. Блокировки shmctl(2) SHM_LOCK учитываются отдельно от блокировок памяти для каждого процесса, установленных mlock(2), mlockall(2) и mmap(2) MAP_LOCKED; процесс может блокировать байты до этого предела в каждой из этих двух категорий. В ядрах Linux до версии 2.6.9 это ограничение контролировало объем памяти, который мог быть заблокирован привилегированным процессом. Начиная с Linux 2.6.9, нет ограничений на объем памяти, который может заблокировать привилегированный процесс, и вместо этого этот предел определяет объем памяти, который может заблокировать непривилегированный процесс.

person brian-brazil    schedule 10.06.2009