PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wie Resourcen fressende Prozesse richtig drosselnd starten?



Noether
30.10.11, 19:15
Um Resourcen fressende Prozesse zu Drosseln, damit sie ohne zu stören im Hintergrund weiterlaufen können, habe ich "nice -n19 ionice -c3 " vorangestellt.
Aber das wirkt nur auf den Anfang, also beispielsweise nicht auf das dupmerge beim folgenden Beispiel:



nice -n19 ionice -c3 find ./ -type f -print0 | dupmerge 2>&1 | tee ../dupmerge_log.txt


Es scheitert daran, das mit den Pipes jeweils eine Subshell geöffnet wird und nice wie ionice darauf nicht wirken.
Also habe ich es mit einer Subshell probiert, aber zu



nice -n19 ionice -c3 ( find ./ -type f -print0 | dupmerge 2>&1 | tee ../dupmerge_log.txt )


kommt die Fehlermeldung



bash: syntax error near unexpected token `('


Wie bekomme ich die Kommandozeile in eine Subshell, die mit dem richtigen nice- und ionice-Level :confused:

DrunkenFreak
30.10.11, 20:33
Schon versucht jedem Befehl nice und ionice voranzustellen?

Noether
30.10.11, 20:41
Schon versucht jedem Befehl nice und ionice voranzustellen?

Das geht nicht wegen den Pipes.

Efraim
30.10.11, 20:47
Wirkt eine Zusammenfassung?


{ nice -n19 ionice -c3 find ./ -type f -print0 | dupmerge 2>&1 | tee ../dupmerge_log.txt ; }

Noether
30.10.11, 21:15
Wirkt eine Zusammenfassung?


{ nice -n19 ionice -c3 find ./ -type f -print0 | dupmerge 2>&1 | tee ../dupmerge_log.txt ; }


Nein, warum auch sollte die wirken? :confused:

Noether
30.10.11, 21:25
Also als Woraround habe ich



ionice -c3 -p $$; renice +19 -p $$; find ./ -type f -print0 | dupmerge 2>&1 | tee ../dupmerge_log.txt


aber unschön ist daran das die aufrufende Shell danach gedrosselt ist.
Wie bekommt man es ohne diesen Nebeneffekt und ohne Skript hin? :confused:

lkwg82
30.10.11, 22:03
genau dafür wurden cgroup konzipiert.

kurz die Idee:

für Prozessbäume (das was du brauchst) werden Ressourcenbegrenzungen festgelegt (IO,Memory,CPU etc.).

du müßtest nun diesen Prozeß in ein niedrig priorisierte Gruppe packen.

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/cgroups/blkio-controller.txt#l80

du kannst auch einfach eine Gruppe aufmachen in der du die Bandbreite drosselst und dann ist gut

schaue auch mal hier: http://lwn.net/Articles/330533/

Noether
30.10.11, 22:16
genau dafür wurden cgroup konzipiert.


Das passt aber nicht in eine Zeile und mit Kernel patchen und Rebooten ist es weit umständlicher als ein Skript.

lkwg82
31.10.11, 00:28
wieso Kernel patchen? Ist seit >2.6.24 im Kernel.

hier mal schön einfach und kurz

http://tuxion.com/2009/10/13/ubuntu-resource-managment-simple-example.html

gibt bestimmt noch andere tools