PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : seltsam hohe CPU-last bei exec



kallekraemer
04-05-2007, 12:07
moin,

ich probiere gerade 3 programme parallel aus einem shellscript zu starten:
ich dachte das geht so:

start_record(){
lla_dmxrecorder $filename &
arecord -f cd | lame - $filename.wav &
}

danach starten die auch alle brav aber:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5881 mart 25 0 2904 1024 888 R 99.5 0.2 0:12.15 lla_dmxrecorder


das eine programm hat auf einmal 99% cpu usage...hmmm
normalerweise, wenn ich das starte nur 0,2%

und wenn ich das "&" weglasse hats auch nur 0,2%

irgendwas verstehe ich falsch...oder mein lla_dmxrecorder programm hat einen bug...

wär schön wenn euch dazu was einfällt.

peace
mart

jan61
07-05-2007, 23:33
Moin,

ich kenne die Programme nicht, die Du da anschmeisst, aber gehe ich recht in der Annahme, dass arecord bzw. lame als Input die von lla_dmxrecorder erzeugte Datei verarbeiten?

Mit dem & am Zeilenende schickst Du die Programme in den Hintergrund, das nächste Kommando legt also los, bevor das davor stehende fertig ist. So geht das natürlich nicht - da murksen die Programme ja parallel in den Dateien rum. Du musst schon darauf achten, dass das liefernde Programm fertig ist, wenn die Weiterverarbeitung startet. Wenn ich mit meiner Annahme richtig liege, dann probier mal das (ungetestet):

start_record(){
(lla_dmxrecorder $filename && arecord -f cd | lame - $filename.wav) &
}


Das sollte dafür sorgen, dass lla_dmxrecorder erst brav seine Aufgabe erledigt, und nur wenn der mit Returncode 0 zurück ist starten arecord und lame - die Klammern verbannen das in eine Subshell und das & dahinter schickt die in den Hintergrund.

Jan