% CPU für einen Prozess

1257
Tim

Bei der Ausgabe von top auf unserem Server sagte mir einer meiner Kollegen, dass einige Prozesse weniger als 100% CPU haben, weil ich zu viele Prozesse ausgeführt habe. Er fügte hinzu, dass aufgrund seiner Erfahrung, wenn ich weniger als 6 Prozesse ausführen würde, wahrscheinlich alle Prozesse 100% CPU hätten.

Ich möchte keine Belästigung für andere Benutzer sein, aber ich bezweifle, dass das, was er gesagt hat, richtig ist. Der Server hat 16 Kerne und der aktuelle Lastdurchschnitt liegt zwischen 10 und 11. Nach meiner Erfahrung ist er nicht überlastet. Aber ich weiß nicht, warum manche Prozesse weniger als 100% CPU haben. Liegt es wirklich an mir?

Danke und Grüße!

Hier kommt die Ausgabe von top:

top - 16:34:13 up 32 days, 1:36, 12 users, load average: 10.61, 10.39, 10.22 Tasks: 380 total, 10 running, 370 sleeping, 0 stopped, 0 zombie Cpu(s): 55.0%us, 1.7%sy, 0.0%ni, 42.2%id, 0.5%wa, 0.1%hi, 0.4%si, 0.0%st Mem: 130766620k total, 39859784k used, 90906836k free, 849412k buffers Swap: 47351548k total, 279456k used, 47072092k free, 19792956k cached  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND  17197 tim 18 -2 1315m 1.3g 1504 R 100 1.0 4510:11 MLtest  28762 tim 18 -2 1315m 1.3g 1504 R 100 1.0 4633:01 MLtest  29249 tim 18 -2 1315m 1.3g 1504 R 100 1.0 4623:03 MLtest  29560 tim 18 -2 1315m 1.3g 1504 R 100 1.0 4626:59 MLtest  4904 tim 18 -2 1315m 1.3g 1504 R 100 1.0 4757:12 MLtest  5143 tim 18 -2 1315m 1.3g 1504 R 100 1.0 4759:40 MLtest  29389 tim 18 -2 1315m 1.3g 1504 R 99 1.0 4622:11 MLtest  5285 tim 18 -2 1315m 1.3g 1504 R 97 1.0 4758:49 MLtest  4763 tim 18 -2 1315m 1.3g 1504 R 93 1.0 4754:22 MLtest  9456 zma 18 -2 206m 85m 11m S 48 0.1 60:46.78 dropbox  7527 vals 18 -2 1266m 436m 42m S 4 0.3 613:57.10 MATLAB  2903 root 15 -5 0 0 0 S 1 0.0 19:00.01 rpciod/0  19133 vals 18 -2 1380m 503m 42m S 1 0.4 798:47.99 MATLAB  12454 tim 18 -2 19248 1588 1024 R 1 0.0 0:48.88 top  12 root RT -5 0 0 0 S 1 0.0 35:01.05 migration/3  2924 root 15 -5 0 0 0 S 1 0.0 27:20.92 nfsiod  12690 jun 18 -2 913m 84m 2684 S 1 0.1 121:55.65 MATLAB  19650 jun 18 -2 19244 1600 1028 S 1 0.0 6:5 
3
16 Kerne und 128G physischer RAM? Das ist schon eine Maschine. Doug Harris vor 15 Jahren 3
Es ist ein Server, der in unserer Schule zur Berechnung verwendet wird. Tim vor 15 Jahren 0
Danke Doug! Haben Sie alle Leerzeichen eingegeben, um die Top-Ausgabe so gut auszurichten? Tim vor 15 Jahren 0
Interessant an dieser Frage ist, dass ich das Gefühl habe, dass Tim versucht, diesen Server an seine Grenzen zu bringen. Viele von uns, die Dienste ausführen, die von tatsächlichen Menschen genutzt werden (anstelle von Berechnungen), sind besorgt über die Reaktionsfähigkeit und streben daher nach dem Gegenteil. Sobald ein Server eine Kapazität von mehr als 60% erreicht, müssen Sie einen weiteren Server zum Mix hinzufügen. Ich sage nicht, dass Tims Ansicht falsch ist - es ist richtig für diesen Anwendungsfall. Nur interessant ist alles, was ich sage. Doug Harris vor 15 Jahren 0
Tim - nein, ich habe Emacs benutzt, um ein paar schnelle Bearbeitungen vorzunehmen. Doug Harris vor 15 Jahren 0
@Doug: Wenn Sie der Meinung sind, dass meine Tätigkeit aus Sicht des Teilens und der Effizienz nicht richtig ist, zögern Sie nicht, mich zu informieren. Verwenden Sie den Org-Modus unter Emacs, was ich letzte Woche gehört habe? Tim vor 15 Jahren 0

2 Antworten auf die Frage

2
avelldiroll

Die alte Faustregel, die ich verwende, lautet:

Zulässiger Lastdurchschnitt ≤ Anzahl der Kerne +1

Dies stellt sicher, dass nie mehr als ein Prozess wartet, während Ihre Ressourcen vollständig genutzt werden. Unabhängig davon, ob die Maschine auf diese Weise geladen ist, scheint sie bei interaktiver Verwendung etwas unrealistisch zu sein. Möglicherweise müssen Sie einige Ressourcen für diesen Zweck freigeben.

Der Rückgang, den Sie in% cpu für mehr als 6 gleichzeitige Prozesse sehen, kann durch viele verschiedene Faktoren verursacht werden (cpus sind nicht die einzige gemeinsam genutzte Ressource ...), um zu wissen, für welche (n) Prozesse Sie ein Profil erstellen müssen Ihr Programm

Da diese Maschine zu Berechnungszwecken von mehreren Benutzern gemeinsam genutzt wird, empfiehlt es sich dringend, eine Art Job-Scheduling einzurichten, auch für den Shell-Zugriff (Sie können auf diese Weise auch eine Lastverteilung durchführen). Es gibt einige Werkzeuge, um dies zu ermöglichen. Die beiden, die ich verwende, sind Torque / PBS und Sun Grid Engine (beide OSS-Projekte).

1
PEra

Nach allem, was ich in der von topIhnen geposteten Ausgabe sehe, glaube ich, dass mltestsie nicht mehr Zyklen auffressen kann. Es verbraucht fast 8x 100%. Ich bin kein Spezialist für CPU-Architektur, aber ich denke, Sie stoßen an eine Grenze dieser Multicore-Technologie. Wie viele Kerne pro CPU hat Ihr Server?

Übrigens: Sie haben eine Last von 10 oder 11 auf Ihrer "Quad-Quad-Maschine"? Oder ist das die durchschnittliche "% CPU", die Sie sehen? loadist die Anzahl der Prozesse, die auf einen CPU-Zyklus warten, also ist 10 ziemlich hoch.

Update nach dem Kommentar:
Vielen Dank für die Neuformatierung der topAusgabe und für die Erläuterung des loadWertes. Ich stimme meinen Kollegen hier nicht zu - eine Last von 10 ist ziemlich hoch, egal wie viele Kerne Sie haben. Aber Sie führen einen Benchmark- oder CPU-Burn-In-Test durch, oder?

Weitere Antworten finden Sie im Cross Post auf ServerFault: https://serverfault.com/questions/71510/cpu-for-a-process .

Der Server verfügt über 16 Kerne. Lastmittelwert wird am Ende der ersten Zeile angezeigt. Sind Sie das, was Sie gefragt haben? Tim vor 15 Jahren 0
Mein Verständnis von Lastdurchschnittswerten ist die durchschnittliche Anzahl von Prozessen, die auf CPU warten. Ich denke nicht, dass 10 oder 11 mit 16 Kernen zu hoch sind. Auf meinen 4 Core Servern freue ich mich, wenn die Last unter 4 liegt. Doug Harris vor 15 Jahren 0
Ähnliches Verhalten bei Serverfault: "Wenn Ihre Auslastung unter Ihrer Prozessoranzahl liegt, sind Sie im Allgemeinen in Ordnung." http://serverfault.com/questions/63319/acceptable-load-average Doug Harris vor 15 Jahren 0
Danke Doug! Denken Sie, dass einige Prozesse wegen mir nur unter 100% CPU liegen? BTW, was ist der Unterschied zwischen SuperUSsr und SeverFault an diesen beiden Standorten? Soll ich meine Fragen dort posten? Tim vor 15 Jahren 0
re SuperUser v. ServerFault: http://superuser.com/about http://serverfault.com/about SuperUser richtet sich an Computerliebhaber und Serverfault richtet sich an Sys Admins und IT-Experten. Wenn genug Leute das Gefühl haben, dass ein Umzug gewährleistet ist, kann Ihre Frage zu einem der drei Trios migriert werden (diese beiden plus StackOverflow für die Programmierung). JMD vor 15 Jahren 0