top: priorität

Post Reply
Message
Author
pl2003

top: priorität

#1 Post by pl2003 »

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: Select all

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

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#2 Post by jochen »

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 Post by pl2003 »

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

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#4 Post by jochen »

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
Posts: 5
Joined: 19. Jan 2006 21:13

#5 Post by pl2003 »

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 :(.

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#6 Post by jochen »

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..."

Post Reply