Может ли кто-нибудь объяснить (или знает источник), который предоставляет подробную информацию об элементах в limits.conf? На странице руководства нет подробностей.
Например, он говорит:
rtprio
maximum realtime priority allowed for non-privileged processes (Linux 2.6.12 and higher)
priority
the priority to run user process with (negative values boost process priority)
Чем они отличаются? Какие ценности они могут принять? Что они делают по умолчанию?
Некоторые элементы очевидны, но где я могу найти более подробные объяснения (значения по умолчанию, диапазоны, что они на самом деле означают и т. Д.):
data
maximum data size (KB)
fsize
maximum filesize (KB)
memlock
maximum locked-in-memory address space (KB)
cpu
maximum CPU time (minutes)
nice
maximum nice priority allowed to raise to (Linux 2.6.12 and higher) values: [-20,19]
Что происходит при превышении ЦП? Процессы убиты? Только одному процессу или всему пользователю запрещено использовать CPU? Это для одного сеанса или на максимальное время в каждую минуту?
Я пытался найти ответы, но все, что я смог найти, - это единственная справочная страница, на которой почти нет подробностей.
rtprio
maximum realtime priority allowed for non-privileged processes (Linux 2.6.12 and higher)
priority
the priority to run user process with (negative values boost process priority)
Почему они разные?
В Linux существуют разные классы планировщиков процессов. Параметр по умолчанию (CFQ) в основном дает равное количество отрезков времени каждому процессу, который хочет запустить, и ставит в очередь запускаемые задачи таким образом, чтобы каждый ожидал в среднем равное количество времени своей очереди. Существуют некоторые исключения из этого правила, но это основная идея.
Другой класс планировщика - это планировщик реального времени. Реальное время немного отличается, задачи, запускаемые в очередь, превращаются в справедливую схему очередей, процесс реального времени будет получать процессорное время, как только оно понадобится процессу, это вытесняет запущенный процесс из ЦП, чтобы освободить место для `` реального времени ''. ' обработать.
Какие ценности они могут принять?
Что делает «приоритет», так это изменяет удобство процедуры, так что при входе в систему ваш основной процесс запускается с определенной аккуратности, любые дочерние процессы, которые вы порождаете, также запускаются с такой же аккуратностью.
Это увеличивает вероятность того, что он будет запланирован в пользу других конкурирующих процессов, и пользовательский интерфейс может быть либо более отзывчивым / интерактивным для более низких значений приятности, либо менее отзывчивым / интерактивным, если удобство повышается.
Для обычных пользователей может быть важно иметь более низкий приоритет, чем, например, обслуживаемых демонов, или чтобы root имел более высокий приоритет при входе в систему, чем все остальное.
Что касается реального времени, конкуренция обрабатывается с помощью поля «rtprio». Если у вас есть две задачи в реальном времени, которые обе хотят запустить, то значение «rtprio» используется для определения того, какой из процессов выбрать для приоритета первым. Чем выше rtprio, тем выше приоритет задач.
Установка этого параметра в limits.conf позволяет устанавливать задачи реального времени с определенным диапазоном приоритетов без необходимости установки значения root. Это не влияет на задачи, не настроенные для выполнения с использованием планировщика реального времени.
Значение «nice» должно действовать так же, как «rtprio», но для стандартного планирования CFQ. Но я никогда не пробовал. Он устанавливает начальный процесс, порожденный, когда PAM устанавливает эти ограничения на этот хороший уровень, затем обычный пользователь может перейти на этот хороший уровень или выше без необходимости root для их установки. Если вы не изменяете явно, это означает, что все процессы, порожденные оболочкой из этого имени входа (например), унаследуют значение nice, установленное в файле limits.conf, от родительского процесса, который был изначально создан.
Какие значения по умолчанию?
Ограничения по умолчанию - технически все они установлены на то, что pid 1, если явно не установлено, ограничения ресурсов наследуются от родительского процесса, если никакие ограничения не были определены или отменены где-либо, то наследование от init
по умолчанию.
Прочие ценности
data
maximum data size (KB)
Когда процесс инициализируется, он выделяет некоторую память, известную как «сегмент данных», когда процесс копируется в память, это место для глобальных объектов, возможно, некоторых других инициализированных данных и памяти, выделенной из кучи. Предел управляет максимальной выделенной суммой, которую может принять процесс.
Маловероятно, что вы когда-нибудь достигнете этого предела, потому что malloc () редко чрезмерно использует сегмент данных для хранения данных.
fsize
maximum filesize (KB)
Это буквально просто устанавливает максимальный размер файла, который может быть записан для этого пользователя.
memlock
maximum locked-in-memory address space (KB)
Практически вся память, полученная приложением, «выселяется». То есть можно поменять местами. Заблокированная память никогда не заменяется и остается резидентной. Это значение строго контролируется, поскольку люди могут злоупотреблять им, чтобы лишить систему памяти и вызвать подкачку. Обычно это полезно с приложениями безопасности (которые никогда не хотят, чтобы их страницы менялись местами - и чтобы их можно было читать из раздела подкачки).
cpu
maximum CPU time (minutes)
Это представляет собой общее количество времени, которое процесс может потреблять на ЦП. Процесс, превышающий это значение, прекращается. Обратите внимание, что это НЕ то же самое, что время, прошедшее с момента запуска процесса. I.E ограничение времени процессора в 1 минуту потребовало бы 1 минуты, если бы процесс был загружен на 100%, но 2 минуты для использования, если бы процесс использовал 50% -ное использование.
Что происходит при превышении ЦП?
Процесс получает сигнал уничтожения SIGXCPU
который завершает процесс. Затем это может быть перехвачено родительским процессом и обработано там.
Только один процесс или весь пользователь не могут использовать CPU?
Почти все указанные ограничения обрабатываются для каждого процесса. Время процессора включено. Единственные, которых нет Я верю быть общее количество входов в систему и общее количество процессов этого пользователя.
Некоторые другие ошибки с ограничениями:
Быстрые ответы - хорошие ответы, так что приступим.
schedtool -r
; иulimit -a
.Не забудьте установить как мягкие, так и жесткие ограничения, даже если они будут иметь одинаковое значение. В моих тестах это было единственное, что показало разницу в команде ulimit.
Надеюсь, это тебе поможет.
Это для pam_limits
модуль ... это setrlimit(2)
и sysctl(8)
ценности. Мой поиск не выявил каких-либо жестких ограничений, но процитированные справочные страницы дают некоторые пояснения.