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 создает задачи с более высоким приоритетом.
Установка этого значения в файле limit.conf позволяет задавать задачи реального времени с определенным диапазоном приоритетов, не используя root для установки значения. Это не влияет на задачи, не настроенные для запуска с использованием планировщика реального времени.
Значение 'nice' должно делать то же самое, что и 'rtprio', но для стандартного планирования CFQ. Я никогда не пробовал это все же. Он устанавливает начальный процесс, порождаемый, когда PAM устанавливает эти пределы в это хорошее значение, тогда обычный пользователь может перейти на этот хороший уровень или выше, не требуя root для их установки. Если вы не используете явное ренизинг, это означает, что все процессы, порожденные из оболочки из этого логина (например), унаследуют значение nice, установленное в limit.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)
Это представляет общее количество времени, которое процесс может потреблять на процессоре. Процесс, который превышает это значение, уничтожается. Обратите внимание, что это НЕ то же самое, что количество времени, прошедшее с момента запуска процесса. То есть ограничение на процессорное время в 1 минуту потребует 1 минуту, если процесс будет загружен на 100%, но 2 минуты, если процесс использует 50%.
Что происходит, когда превышен процессор?
Процесс получает сигнал уничтожения, SIGXCPU
который завершает процесс. Это может быть перехвачено родительским процессом и обработано там.
Только один процесс или весь пользователь лишен возможности использовать процессор?
Почти все указанные ограничения обрабатываются для каждого отдельного процесса. Процессорное время включено. Я полагаю , что единственное, что не является общим количеством входов в систему и общим числом процессов, выполненных этим пользователем.
Некоторые другие проблемы с ограничениями:
- Макс процессов включает в себя количество легких потоков.
- Предел RSS ничего не делает и не имеет в течение ряда лет его бессмысленно устанавливать.