On Tuesday 06 October 2009 17:51:22 Christian Perle wrote:
Hallo Bernhard,
On Tue, Oct 06, 2009 at 11:32:54 +0200, Bernhard Schiffner wrote:
Ich bekomme als non-root bei getrlimit( RLIMIT_RTPRIO, ...) immer 0 zurueck und will wissen, wie ich das fuer bestimmte Nutzer | Gruppen | Programme aendern kann. Ein erster Eintrag in /etc/security/limits half nicht weiter.
Die Datei heisst /etc/security/limits.conf, nicht /etc/security/limits.
.-)
Auf einem Testsystem (Ubuntu 8.04 mit selbstkompiliertem 2.6.27.10) hat es mit folgenden Zeilen in der /etc/security/limits.conf funktioniert:
ich soft rtprio 20 ich hard rtprio 20
Debian dito. (Ich hatte nur hard eingetragen. Und nach der Zeile #End of File. Woran's wohl nur lag?)
Nachdem sich der User "ich" per ssh[*] neu eingeloggt hat, sitzt die real-time prio auf 20, zu sehen mit cat /proc/$$/limits bzw. ulimit -a in der Shell.
Geht bei mir auch. Danke für den Befehl ulimit, der war mir unbekannt.
Danach kann ich mit Deinem Tool die Prio eines sleep-Prozesses auf 10 setzen:
$ sleep 1h & [1] 17011 $ ./rtlim 17011 10 Resource-Limits: RLIMIT_RTPRIO (soft): 20 RLIMIT_RTPRIO (hard): 20 Request: Policy of pid 17011 = 1 Priority of pid 17011 = 10 Status: Policy of pid 17011 = 1 Priority of pid 17011 = 10
Damit bist Du Realtimer: GLÜCKWUNSCH!
Das mit den Prioritäten ist (gewollt) _die_ zentrale Steuerstelle. Der Rest ist checken, ob es auch klappt. Im negativen Fall sind die Hindernisse abzustellen. Das kann zwischen trivial (z.B. Powermanagement einstellen) und extrem anspruchsvoll (preempt RCU, (Jahre für ein paar Zeilen Code)) schwanken.
Wenn ich stattdessen versuche, die Prio auf 50 zu setzen, geht es schief, weil damit das rlimit von 20 ueberschritten wird.
Klar.
[*] Jede andere Login-Methode, die pam_limits.so in ihrer PAM-Konfiguration benutzt, sollte auch funktionieren.
Gruss, Chris
Danke sehr!
Bernhard