Définit la valeur nice par défaut pour un utilisateur donné (limits.conf)

12

Quelqu'un pourrait-il me dire comment définir la valeur par défaut nice(telle qu'affichée par top) d'un utilisateur? J'ai trouvé que /etc/security/limits.conf est l'endroit mais si je mets soit:

username_of_a_guy  -  nice  19
username_of_a_guy  soft  nice  19
username_of_a_guy  hard  nice  19

Cela ne fonctionne pas (alors qu'il devrait, non?).

Notez que j'ai redémarré depuis.

Merci beaucoup d'avance pour toute aide. J'utilise debian unstable (uptodate).

Le contexte:

À mon travail, nous avons un réseau local: chacun a son propre ordinateur et chacun peut créer un compte sur la machine de quelqu'un d'autre si on le souhaite. La règle de base est tout simplement que si vous travaillez sur un autre ordinateur, veuillez agréer vos processus ( nice 19).

Je voudrais définir la valeur de Nice par défaut pour un utilisateur donné à 19 une fois pour toutes.

Alex
la source

Réponses:

13

Je crois que le format correct est:

@users      -       priority        10
username    -       priority        19

Ceci est un exemple des paramètres que j'utilise en production (évidemment avec de vrais utilisateurs / groupes).

Le niceparamètre consiste à déterminer la valeur de Nice minimale (c'est-à-dire la priorité maximale) à laquelle quelqu'un peut définir son processus, et non sa priorité par défaut.

jsbillings
la source
2
Tout d'abord, merci pour votre réponse (merci aussi, @mattdm). Il semble que cette méthode fonctionne. Cependant, je suis toujours confus quant à la différence entre "nice" et "priorité": les deux sont affichés par "top" mais la valeur citée pour nice est celle que je dois définir pour la priorité. Cela me semble un peu étrange. De plus, une priorité plus grande (disons 39 au lieu de 20) signifie-t-elle un processus moins important que pour nice? Je vous remercie.
Alex
4
La belle priorité «NI» en haut est celle qui serait définie par le priorityparamètre de limites . Ce sera la priorité par défaut de tous les processus pour cet utilisateur / groupe lorsqu'ils se connectent. Vous ne pouvez le définir qu'entre -20 et 20. La valeur 'PR' en haut est la priorité réelle du planificateur, qui est déterminée par plusieurs facteurs par l'ordonnanceur du noyau.
jsbillings
1
En outre, oui, une priorité plus élevée signifie qu'il est moins susceptible d'être planifié pour obtenir des cycles de processeur.
jsbillings
1
Ok, merci beaucoup pour cette désambiguïsation. BTW, je n'ai pas essayé les autres méthodes (impliquant andou cgroup) qui pourraient être meilleures dans d'autres situations que la mienne (besoin d'une vérification continue, ou gestion de nombreux utilisateurs - ce qui est un peu trop dans mon cas).
Alex
Hmmmm ... Cela a fonctionné pour un utilisateur mais pas pour l'autre sur ma machine Ubuntu. Je reviendrai si je peux comprendre pourquoi. ;-)
Ken Sharp
3

Je peux confirmer que cela ne fonctionne pas non plus sur mon système. Les documents disent "noyau 2.6.11 et supérieur", et je suis sur Fedora rawhide avec le noyau 2.6.38-rc6. Je me demande s'il dépend du planificateur et ne fonctionne pas avec le CFQ introduit en 2.6.23 ("Completely Fair Scheduler").

Quelque chose qui fonctionnera, cependant, est le nom impossible à rechercher à cause de son nom horrible and- le démon auto-nice. Voir http://and.sourceforge.net/ . Il est disponible auprès de Fedora avec yum install and, mais ne semble malheureusement pas être dans EPEL. Et il est dans Debian aussi: apt-get install and.

Cependant, si vous utilisez une distribution moderne, il existe une méthode encore meilleure. Vous pouvez utiliser les outils de libcgroup pour mettre en place un niveau du noyau cgroup limitant les parts de CPU et de « classer » automatiquement les processus de cet utilisateur dans ce groupe de contrôle. Avec cela, vous pouvez également hiérarchiser les E / S et limiter l'utilisation de la mémoire (y compris le partage du cache disque).

mattdm
la source
Je suis d'accord que l'utilisation de cgroups est un excellent moyen d'empêcher d'autres personnes de monopoliser tous les cycles du processeur sur votre ordinateur. Malheureusement, les systèmes que je supporte (RHEL5) n'ont pas de noyaux qui le prennent en charge, je dois donc m'en tenir à l'ajustement de la priorité. Une fois que nous aurons mis à jour vers RHEL6, je suis sûr que nous aurons des paramètres de groupes de contrôle assez complexes.
jsbillings