De man renice
:
Les utilisateurs autres que le super-utilisateur ne peuvent modifier que la priorité des processus dont ils sont propriétaires et ne peuvent augmenter de manière monotone que leur `` valeur intéressante '' (pour des raisons de sécurité) dans la plage de 0 à PRIO_MAX (20) [...]
Donc, je peux renice
mes propres processus vers le haut (leur donner une priorité inférieure) mais jamais vers le bas:
$ renice 10 22316
22316 (process ID) old priority 0, new priority 10
$ renice 9 22316
renice: failed to set priority for 22316 (process ID): Permission denied
Pourquoi est-ce? Je peux comprendre pourquoi les utilisateurs normaux ne peuvent pas définir de bonnes valeurs inférieures à 0, mais pourquoi, puisque je peux réduire la priorité à 10, ne puis-je pas l'augmenter à nouveau à 9? Quelle «raison de sécurité» y a-t-il pour cela? J'ai le droit de lancer un processus avec une belle valeur de 9, alors pourquoi ne puis-je pas le remettre à 9?
EDIT: je devrais apprendre à faire défiler vers le bas. Il s'avère que cela est répertorié comme un bogue dans man renice
:
BUGS
Non super-users can not increase scheduling priorities of their own
processes, even if they were the ones that decreased the priorities
in the first place.
C'est encore plus déroutant. S'ils considèrent ce comportement comme un bug, pourquoi ne pas le changer? La renice
commande est apparue dans 4.0BSD qui, je pense, date de 1980. Cela devrait être très facile à corriger, donc d'une part ils semblent avoir choisi de la laisser et de l'autre ils la listent comme un bug.
Réponses:
Depuis linux 2.6.12, cela dépend de la valeur de la limite RLIMIT_NICE (
ulimit -e
). Ce qui peut prendre des valeurs de 0 à 40. Cette limite est plus la limite de la priorité du processus (plus ce nombre est élevé, plus la priorité qu'un utilisateur peut définir pour un processus est élevée).Vous remarquerez que la valeur par défaut est 20 sur Ubuntu 10.04 et 0 dans Debian Jessie par exemple.
Une valeur de
n
pour cette limite signifie qu'un processus sans la capacité CAP_NICE ne peut augmenter la priorité d'un processus que jusqu'àn
, ce qui signifie diminuer la gentillesse jusqu'à une gentillesse de20 - n
. Ainsi, pour une valeur de 0, cela signifie qu'aucun utilisateur non privilégié ne peut réduire la gentillesse en dessous de 20, donc aucun utilisateur non privilégié ne peut réduire la gentillesse.Avec une valeur de 20, les utilisateurs non privilégiés peuvent ramener la gentillesse à 0.
Il appartient à l'administrateur de choisir s'il autorise les utilisateurs à réduire leur priorité de processus et à quel niveau en fixant la limite stricte pour cela.
Pour savoir pourquoi un administrateur peut ne pas vouloir que les utilisateurs réduisent leur priorité de processus, voir la réponse de Flup .
la source
C'est pour ce que j'appellerais des raisons de politique . L'idée est que les utilisateurs normaux ne peuvent pas remplacer les actions des utilisateurs privilégiés.
Disons que vous êtes un utilisateur sur un énorme serveur partagé. Vous exécutez des processus monstrueux de monopolisation du processeur au détriment des autres utilisateurs. L'administrateur système utilise
renice
certains de vos processus, car il ne vous aime pas beaucoup. Le système d'exploitation ne se souvient pas qui a fait lerenice
, mais il sait que les utilisateurs normaux ne peuvent pas inverser l'action. De cette façon, l'administrateur système contrôle les priorités de processus des utilisateurs normaux.la source
man renice
.renice
ne peut être inversé que par un utilisateur privilégié.renice
cela aroot
fait.Étrange? ça marche pour moi sur
Exemple
2e édition
Changements de configuration
Et je suis membre du groupe audio, c'était pour réduire la latence avec les xruns jack / ardour et buffer lors de l'enregistrement.
renice
la source
cat /etc/lsb*
etrenice --version
.renice --version renice from util-linux-ng 2.17.2
mais toujours sous AIX ce n'est pas possible