top: priorität

Antworten
Nachricht
Autor
pl2003

top: priorität

#1 Beitrag von pl2003 » 19. Jan 2006 18:18

Hallo,

es wurde in diesem Forum schon mal angesprochen, aber nicht beantwortet, drum hier mein Versuch :).

Ich möchte es an einem konkreten Beispiel festmachen:

Code: Alles auswählen

11 user1 0 -19 86224  62m 5824 S 22.7 12.3  18:31.87 prozess1
22 user2 34 19 87252  70m 6100 R 22.4 14.1  25:33.97 prozess2
prozess1 wurde mit nice -n -19 und prozess2 mit nice -n 19 gestartet. Warum hat prozess2 eine höhere Priorität? Oder gilt beim Wert Priorität wie bei nice weniger=mehr?

Bin für jede Info dankbar!

Greets,
pl2003

Benutzeravatar
jochen
prolinux-forum-admin
Beiträge: 699
Registriert: 14. Jan 2000 15:37
Wohnort: Jülich
Kontaktdaten:

#2 Beitrag von jochen » 19. Jan 2006 18:43

Der nice-Wert geht in die Berechnung der Priorität mit ein, aber viele andere EInflüsse ebenfalls. Ein Prozess, der seine Zeiteinheiten voll ausnutzt, erhält einen niedrigere Priorität als einer, der seine Zeiteinheiten schnell freiwillig aufgibt (weil er auif I/O warten muss beispielsweise).

Ein "nice -n 19" sagt, dass der Prozess supernett sein und allen den Vortritt lassen soll -> niedrige Priorität. Da ein hoher Prio-Wert eine niedrige Priorität darstellt, wird der nice-Wert (zumindest überschlagstechnisch auf meinem System) wohl einfach addiert.

Ganz analog "nice -n -19": Gar nicht nett sein, sondern vordrängeln. Der Nice-Wert wird zur Prio addiert -> da negativ, niedriger Prio-Wert -> hohe Priorität des Prozesses im System.

OK?

Jochen
Die grösste Lüge der EDV? "Mal eben..."

pl2003

#3 Beitrag von pl2003 » 19. Jan 2006 21:12

Dank Dir, Jochen!

Diese Info, niedrigerer PRI-Wert gleich höhere Priorität, konnte ich nirgends finden. Und nach der einiger Lektüre über die Load Average war ich wohl noch etwas verwirrt :wink:.

Ich bin derzeit hobbymäßig damit befasst, einen Gameserver zu administrieren (komme berufsmäßig aus der w2k3server ecke, schlagt mich bitte nicht). Beim Versuch zu verstehen, wann ein Linux denn nun eigentlich ausgelastet ist, scheitere ich im Moment :).

Nach einigem ge-renice stellt sich mir noch die Frage, wo ich meinem Suse denn beibringen kann, alle Prozesse eines bestimmten Users hoch/runterzunicen. Vielleicht weiß jemand spontan Rat?

Greets,
pl2003

Benutzeravatar
jochen
prolinux-forum-admin
Beiträge: 699
Registriert: 14. Jan 2000 15:37
Wohnort: Jülich
Kontaktdaten:

#4 Beitrag von jochen » 20. Jan 2006 8:31

Schau mal in die man-Page zu renice:
renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
...
Options supported by renice:

-g Force who parameters to be interpreted as process group ID's.

-u Force the who parameters to be interpreted as user names.

-p Resets the who interpretation to be (the default) process ID's.
OK?

Jochen
Die grösste Lüge der EDV? "Mal eben..."

pl2003
Beiträge: 5
Registriert: 19. Jan 2006 21:13

#5 Beitrag von pl2003 » 20. Jan 2006 15:38

Verzeihung, da habe ich ein kleines, aber wichtiges Wörtchen vergessen:

... alle neu gestarteten Prozesse eines bestimmten Users hoch/runterzunicen.

Hintergrund: Wenn bspw. wwwrun eine Mail versenden möchte oder php bemüht, soll er damit keine anderen Prozesse stören, auch wenn es etwas länger dauert.
Renice nutze ich zur Zeit. Damit erwische ich aber nur was bereits läuft.

Die crontab wäre eine Möglichkeit die mir einfällt, aber über die User zu gehen erscheint mir sinnvoller. Nur weiß ich nicht wie :(.

Benutzeravatar
jochen
prolinux-forum-admin
Beiträge: 699
Registriert: 14. Jan 2000 15:37
Wohnort: Jülich
Kontaktdaten:

#6 Beitrag von jochen » 22. Jan 2006 17:33

Kommt ganz darauf an, wie die Prozesse gestartet werden. Wenn Du zum Versenden von EMail explizit aus dem Apache heraus sendmail aufrufst, kannst Du einfach ein "nice" vor den Aufruf schreiben.

Bei PHP bin ich mir allerdings nicht sicher: Wenn Du mittels mod_php arbeitest, wird das Skript ja im Prozessbereich des Apaches gestartet - oder? Dann müsste ja einer Apache-Worker heruntergenicet werden - das ist sicherlich nicht Sinn der Sache. Wenn Du allerings ein "php skript.php" aufrufst, kannst Du vor den Start wieder ein nice setzen wie bei sendmail.

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Antworten