web-dev-qa-db-fra.com

pourquoi l'utilisateur peut-il augmenter Nice de processus mais diminuer nécessite root?

Je me suis arrêté et un programme utilisait environ 80 à 90% de CPU. J'ai augmenté la gentillesse, pour voir si je pouvais réduire la charge. Ensuite, j'ai essayé de ramener le Nice du même processus à son niveau initial et on m'a dit que je n'avais pas les privilèges appropriés. Y a-t-il une bonne raison à la disparité des privilèges requis ici?

4
blanket_cat

Oui. Lorsque chaque utilisateur du système a la possibilité de réduire la gentillesse de son processus, chaque utilisateur peut provoquer la mort d'autres processus.

Les priorités de processus dans le noyau linux signifient quelque chose. Si vous donnez à un processus la valeur Nice de -20 il obtient d'énormes morceaux de temps processeur. C'est pourquoi seul root peut diminuer ces valeurs.

Addition suggérée par Eliah Kagan :

Pourquoi les utilisateurs ne peuvent pas ramener leurs propres processus au niveau de gentillesse avec lequel ils les ont eux-mêmes lancés?

Le fait est que le système ne note pas qui a fait l'augmentation de la gentillesse. Donc, il n'y a aucun mécanisme pour savoir si vous ou root avez fait l'incease.

Une autre approche consiste à dire: un utilisateur normal ne devrait pas pouvoir écraser les actions d'un utilisateur privilégié. Si root est connecté et qu'il souhaite changer la finesse de vos processus en 20: il le peut, et il devrait vous être interdit d'annuler ces modifications. Jusqu'à ce que le noyau ne se souvienne pas qui a fait les changements de gentillesse, vous serez interdit.

Peut-être qu'un jour, les développeurs du noyau Linux incluront cette fonctionnalité dans le code du noyau. Vous pouvez faire une demande de fonctionnalité. Mais, soyez averti, les développeurs du noyau n'aiment pas les nouvelles choses simplement parce que c'est cool.

4
chaos