Почему пользователь может увеличить хороший процесс, но для уменьшения требуется root?
Я поднял верх, и программа использовала процессор на 80-90%. Я увеличил милость, чтобы посмотреть, смогу ли я уменьшить нагрузку. Затем я попытался снизить значение этого же процесса до его первоначального уровня, и мне сказали, что у меня нет надлежащих привилегий. Есть ли веская причина для несоответствия привилегий, требуемых здесь?
1 ответ
Да. Когда у каждого пользователя в системе есть возможность уменьшить привлекательность своего процесса, тогда каждый пользователь может заставить другие процессы голодать.
Приоритеты процессов в ядре Linux действительно что-то значат. Если вы дадите процессу хорошее значение -20
он получает огромные куски времени процессора. Вот почему только root
может уменьшить эти значения.
Дополнение, предложенное Eliah Kagan:
Почему пользователи не могут вернуть свои собственные процессы на тот уровень, с которого они их сами начали?
Дело в том, что система не замечает, кто сделал увеличение привлекательности. Таким образом, нет механизма, чтобы выяснить, root
сделал замер.
Другой подход заключается в том, чтобы сказать: обычный пользователь не должен иметь возможность перезаписывать действия привилегированного пользователя. Если root
вошел в систему, и он хочет изменить приятность ваших процессов на 20
: он может, и вам должно быть запрещено отменять эти изменения. Пока ядро не помнит, кто изменил милость, вам будет запрещено.
Возможно, однажды разработчики ядра Linux включат эту функциональность в код ядра. Вы можете сделать запрос функции. Но, будьте осторожны, разработчики ядра не любят новые вещи только потому, что это круто.