Legen Sie den Standardwert für einen bestimmten Benutzer fest (limit.conf).


12

Kann mir jemand sagen, wie der Standardwert nice(wie von angezeigt top) eines Benutzers festgelegt wird? Ich habe festgestellt, dass /etc/security/limits.conf der richtige Ort ist, aber wenn ich beides sage:

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

Es funktioniert nicht (solange es sollte, oder?).

Beachten Sie, dass ich seitdem neu gestartet habe.

Vielen Dank sehr viel im Voraus für jede Hilfe. Ich benutze Debian instabil (aktuell).

Kontext:

Bei meiner Arbeit haben wir ein lokales Netzwerk: Jeder hat seinen eigenen Computer und jeder kann ein Konto auf dem Computer eines anderen erstellen, wenn er möchte. Die Faustregel lautet einfach: Wenn Sie an einem anderen Computer arbeiten, können Sie Ihre Prozesse verbessern ( nice 19).

Ich möchte den Standardwert für einen bestimmten Benutzer ein für alle Mal auf 19 setzen.


Antworten:


13

Ich glaube, das richtige Format ist:

@users      -       priority        10
username    -       priority        19

Dies ist ein Beispiel für die Einstellungen, die ich in der Produktion verwende (offensichtlich bei echten Benutzern / Gruppen).

Die niceEinstellung dient dazu, den minimalen Nizza-Wert (dh die maximale Priorität) zu bestimmen, auf den jemand seinen Prozess einstellen kann, nicht seine Standardpriorität.


2
Zunächst einmal vielen Dank für Ihre Antwort (auch danke, @mattdm). Es scheint, dass diese Methode funktioniert. Ich bin jedoch immer noch verwirrt über den Unterschied zwischen "nett" und "Priorität": Beide werden durch "oben" angezeigt, aber der für nett angegebene Wert ist derjenige, den ich für die Priorität festlegen muss. Es sieht für mich etwas seltsam aus. Bedeutet eine größere Priorität (sagen wir 39 statt 20) einen weniger wichtigen Prozess als für Nizza? Vielen Dank.
Alex

4
Die 'NI'-Priorität oben ist die, die durch die Grenzwerteinstellung festgelegt wird priority. Dies ist die Standardpriorität aller Prozesse für diesen Benutzer / diese Gruppe, wenn sie sich anmelden. Sie können diesen Wert nur auf -20 bis 20 einstellen. Der 'PR'-Wert oben ist die tatsächliche Scheduler-Priorität, die von mehreren bestimmt wird Faktoren durch den Scheduler des Kernels.
jsbillings

1
Ja, eine höhere Priorität bedeutet auch, dass es weniger wahrscheinlich ist, CPU-Zyklen zu erhalten.
jsbillings

1
Ok, vielen Dank für diese Begriffsklärung. Übrigens habe ich nicht die anderen Methoden (einschließlich andoder cgroup) ausprobiert, die in anderen Situationen als meinen besser sein könnten (Notwendigkeit einer kontinuierlichen Überprüfung oder Verwaltung vieler Benutzer - was in meinem Fall etwas zu viel ist).
Alex

Hmmmm ... Dies funktionierte für einen Benutzer, aber nicht für den anderen auf meinem Ubuntu-Computer. Ich komme wieder, wenn ich herausfinden kann, warum. ;-)
Ken Sharp

3

Ich kann bestätigen, dass dies auch auf meinem System nicht funktioniert. Die Dokumente sagen "Kernel 2.6.11 und höher" und ich bin auf Fedora Rawhide mit Kernel 2.6.38-rc6. Ich frage mich, ob es vom Scheduler abhängig ist und nicht mit dem in 2.6.23 eingeführten CFQ ("Completely Fair Scheduler") funktioniert.

Etwas, das jedoch funktionieren wird, ist das Unmögliche, nach dem man wegen seines schrecklichen Namens suchen kann and- der automatisch nette Daemon. Siehe http://and.sourceforge.net/ . Dies ist bei Fedora mit erhältlich yum install and, scheint aber leider nicht in EPEL zu sein. Und es ist auch in Debian : apt-get install and.

Wenn Sie jedoch eine moderne Distribution verwenden, gibt es einen noch besseren Weg. Mit den Tools von libcgroup können Sie eine cgroup auf Kernelebene einrichten, die die CPU-Freigaben begrenzt, und die Prozesse dieses Benutzers automatisch in diese cgroup "klassifizieren". Auf diese Weise können Sie auch E / A priorisieren und die Speichernutzung (einschließlich der Freigabe des Festplatten-Cache) begrenzen.


Ich bin damit einverstanden, dass die Verwendung von cgroups eine hervorragende Möglichkeit ist, andere Personen daran zu hindern, alle CPU-Zyklen auf Ihrem Computer zu belasten. Leider haben die von mir unterstützten Systeme (RHEL5) keine Kernel, die dies unterstützen, daher muss ich mich an die Anpassung der Priorität halten. Sobald wir auf RHEL6 aktualisiert haben, werden wir sicher einige ziemlich komplexe Einstellungen für Gruppen haben.
jsbillings
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.