Warum zeigt For-Schleife in Linux eine geringe Leistung als in Solaris?

257
Arjun

Ich habe ein Shell-Skript, das sowohl unter Linux als auch unter Sun Solaris ausgeführt wird. Es gibt jedoch einen erheblichen Zeitunterschied, den das Skript zur Ausführung benötigt.

Beim Debuggen des Skripts auf beiden Servern mit 'set -x' habe ich festgestellt, dass eine for-Schleife, die die Ausgabe einer 'awk'-Anweisung entnimmt, unter Linux viel mehr Zeit benötigt als unter Solaris. Nachdem ich die Debug-Option eingestellt habe, kann ich die zeilenweise Ausführung von Skripten beobachten, und ich beobachte, dass die Leistung unter Linux viel langsamer ist, obwohl auf beiden Servern derselbe Satz von Zeilen ausgeführt wird.

Folgendes ist der Teil des Skripts, der Zeit braucht:

for k in `awk ' ' StartAppTemp` 

Ich habe auch die Zeit berechnet, die die for-Schleife mit dem folgenden Befehl benötigt:

time `for k in `awk ' ' StartAppTemp`` 

O / P unter Linux:

real 0m0.002s user 0m0.000s sys 0m0.003s 

O / p unter Solaris

real 0m0.00s user 0m0.00s sys 0m0.00s 

Hier ist die Genauigkeit nur 2 Stellen nach dem Dezimalpunkt.

Komplettes Skript:

for k in `awk ' ' StartAppTemp`;do ps -p $k >/dev/null; if test $? -eq 0 ; then echo "running"; else echo "Stopped"; fi; done; 

Gibt es eine Möglichkeit, die Leistung unter Linux zu verbessern?

0
Haben beide Maschinen die gleichen Hardwarespezifikationen? Wenn man von "beträchtlich" spricht, wenn es um Millisekunden geht, hört sich das irgendwie komisch an oder läuft das Skript auf diesen Servern jede Sekunde? Seth vor 7 Jahren 1
Ich sehe keinen Unterschied in der Leistung von den von Ihnen geposteten Daten. "Real 0m0.002s" rundet auf "Real 0m0.00s" - das sind eigentlich die gleichen Werte. Sie geben auch an, "nachdem Sie die Debug-Option eingestellt haben, kann ich die zeilenweise Ausführung von Skripten beobachten und beobachten, dass die Leistung unter Linux viel langsamer ist". Ich glaube nicht, dass es wahrscheinlich ist, dass Sie tatsächlich einen Unterschied von einigen tausendstel Sekunden * beobachten * können - was bedeutet, dass Ihre Leistungsdifferenz nicht in der awk-Anweisung liegt. Andrew Henle vor 7 Jahren 3

0 Antworten auf die Frage