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

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

Ответы

Ответ 1

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

Ответ 2

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

setrlimit manpage говорит:

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