Согласно man-странице, «-l» в ulimit означает «Максимальный размер, который может быть заблокирован в памяти». Что именно означает это предложение? Как это может повлиять на работу программ?
Память, которая заблокирована, не может быть выгружена - это уменьшает объем памяти, доступный для других процессов. Этот параметр ограничивает объем памяти, который может быть заблокирован.
Это ограничивает объем памяти, который вы можете отключить с помощью mlock
Страница setrlimit сообщает:
Максимальное количество байтов памяти, которое может быть заблокировано в ОЗУ. По сути, этот предел округляется до ближайшего кратного размера страницы системы. Этот предел влияет на операции 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, нет ограничений на объем памяти, который может заблокировать привилегированный процесс, и вместо этого этот предел определяет объем памяти, который может заблокировать непривилегированный процесс.