Почему пользователь может увеличить хороший процесс, но для уменьшения требуется root?

Я поднял верх, и программа использовала процессор на 80-90%. Я увеличил милость, чтобы посмотреть, смогу ли я уменьшить нагрузку. Затем я попытался снизить значение этого же процесса до его первоначального уровня, и мне сказали, что у меня нет надлежащих привилегий. Есть ли веская причина для несоответствия привилегий, требуемых здесь?

1 ответ

Решение

Да. Когда у каждого пользователя в системе есть возможность уменьшить привлекательность своего процесса, тогда каждый пользователь может заставить другие процессы голодать.

Приоритеты процессов в ядре Linux действительно что-то значат. Если вы дадите процессу хорошее значение -20 он получает огромные куски времени процессора. Вот почему только root может уменьшить эти значения.

Дополнение, предложенное Eliah Kagan:

Почему пользователи не могут вернуть свои собственные процессы на тот уровень, с которого они их сами начали?

Дело в том, что система не замечает, кто сделал увеличение привлекательности. Таким образом, нет механизма, чтобы выяснить, root сделал замер.

Другой подход заключается в том, чтобы сказать: обычный пользователь не должен иметь возможность перезаписывать действия привилегированного пользователя. Если root вошел в систему, и он хочет изменить приятность ваших процессов на 20: он может, и вам должно быть запрещено отменять эти изменения. Пока ядро ​​не помнит, кто изменил милость, вам будет запрещено.

Возможно, однажды разработчики ядра Linux включат эту функциональность в код ядра. Вы можете сделать запрос функции. Но, будьте осторожны, разработчики ядра не любят новые вещи только потому, что это круто.

Другие вопросы по тегам