Ich arbeite in einer wissenschaftlichen Einrichtung, und eine der Aufgaben, an denen ich gerade arbeite, umfasst das Ausführen von Simulationen und die Ausgabe der Daten, die von der Festplatte auf Festplatte erzeugt werden. Wenn ich "on-the-fly" sage, meine ich, dass das Programm selbst jede Sekunde Daten auf die Festplatte spuckt. Diese Simulationen sind rein in Single Thread C ++ geschrieben und werden auf einem Mac Pro ausgeführt. Die relevanten Spezifikationen dieses Mac sind wie folgt:
OSX Version: 10.6.8
Model Name: Mac Pro
Model Identifier: MacPro4,1
Processor Name: Quad-Core Intel Xeon
Processor Speed: 2.66 GHz
Number Of Processors: 2
Total Number Of Cores: 8
Die Intel Xeons sind für bis zu 8 virtuelle Kerne mit Hyper-Threading versehen
Ich führe meine Simulationen in einer einfachen SH-Datei mit der folgenden Syntax aus:
nohup simulation1.o configfile 2> /dev/null > /dev/null &
nohup simulation2.o configfile 2> /dev/null > /dev/null &
und so weiter...
Die Verwendung von nohup bedeutet, dass ich mich bei Remote-Arbeiten nicht um zufällige Verbindungsabbrüche kümmern muss.
Wenn ich mich anschaue ps
Nach dem Ausführen von 10 Simulationen mit meiner bash-Datei stelle ich fest, dass die Prozesse in der Spalte STATE regelmäßig von "Laufen" zu "Stecken" wechseln. Darüber hinaus würde ich erwarten, dass die CPU-Auslastung für jeden Prozess 100% beträgt, aber stattdessen jeder Prozess etwa 28% beträgt. (Ich gehe davon aus, dass die CPU-Auslastung für jeden Prozess 100% beträgt. Wenn ich nur eine dieser Simulationen durchführe, ist die CPU-Spalte maximal 100%, zusätzlich zu der Tatsache, dass die Kerne Hyperthreading aufweisen. Dies sind sehr CPU-lastige Simulationen .)
Weiß jemand, was los ist? Speziell:
- Was bedeutet "stecken" in Bezug auf
ps
- Warum ist die CPU nicht für jeden Prozess voll ausgelastet?
Ich würde mich sehr über eine Hilfe freuen.