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