Hyperthreading und CPU Last unter Linux
Stephan
- webserver
Hallo zusammen,
ich teste gerade ein bisschen mit dem neuen xxl root-server von 1und1.
1und1 schreibt in der Beschreibung:
Root-Server XXL
Maximale Power für höchste Ansprüche
Wenn ich die Prozessorlast im top beobachte dann mache ich folgende beobachtung:
3 root 18 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd_CPU0
4 root 18 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd_CPU1
Das würde zu den 2 virtuellen Prozessoren passen was ja von mir aus okay ist, wenn ich auch nicht ganz kapier was das bringen soll.
Leider muss ich nun beobachten dass ich die Prozessorlast nicht unter 50% bringe. Sprich wenn ich nen Datenbankjob starte der nen Rootserver L den Server voll in die Knie zwingt geht der XXL nur auf 50% Last. Somit ist der Job zwar noch schneller wie auf dem L aber nur unwesentlich. Jetzt vermute ich dass der Job nur einem der beiden virtuellen Prozessoren läuft. Kann das sein?
Und wie bekomme ich Ihn dazu dass der den Job mit voller Power rechnet?
Viele Grüße
Stephan
Moin!
Leider muss ich nun beobachten dass ich die Prozessorlast nicht unter 50% bringe. Sprich wenn ich nen Datenbankjob starte der nen Rootserver L den Server voll in die Knie zwingt geht der XXL nur auf 50% Last. Somit ist der Job zwar noch schneller wie auf dem L aber nur unwesentlich. Jetzt vermute ich dass der Job nur einem der beiden virtuellen Prozessoren läuft. Kann das sein?
Und wie bekomme ich Ihn dazu dass der den Job mit voller Power rechnet?
Es gibt gewisse Dinge, die lassen sich nun mal nur auf einer einzelnen CPU rechnen. Ob eine Datenbankabfrage dazugehört, vermag ich hier nicht sagen, aber ausschließen würde ich es nicht.
Was dir eine "virtuelle" 2. CPU (Intel-Hyperthreading) dann bringt? Parallel kann der Apache-Prozess, für den die DB-Abfrage gemacht wird, weiterlaufen - bzw. die anderen Apache-Prozesse, die gerade nicht auf die Datenbank warten, sondern statische Seiten ausliefern. Ist doch auch toll, oder?
- Sven Rautenberg
Hallo Stephan,
Das würde zu den 2 virtuellen Prozessoren passen was ja
von mir aus okay ist, wenn ich auch nicht ganz kapier was
das bringen soll.
Das bringt eine bessere Lastverteilung. Bei hoher
Auslastung kann so besser reagiert werden. Das Linux
Scheduling ist gerade bei hoher Last nicht immer unbedingt
so sonderlich gut, da ist die Verteilung auf zwei virtuelle
Prozessoren ein Trick, um die Last besser bewältigen zu
können.
Leider muss ich nun beobachten dass ich die Prozessorlast
nicht unter 50% bringe. Sprich wenn ich nen Datenbankjob
starte der nen Rootserver L den Server voll in die Knie
zwingt geht der XXL nur auf 50% Last. Somit ist der Job
zwar noch schneller wie auf dem L aber nur unwesentlich.
Jetzt vermute ich dass der Job nur einem der beiden
virtuellen Prozessoren läuft. Kann das sein?
Das ist sogar sehr wahrscheinlich.
Und wie bekomme ich Ihn dazu dass der den Job mit voller
Power rechnet?
Ohne die Software anzupassen? Gar nicht. Von mehreren CPUs
kann ein Prozess allein nur dann profitieren, wenn er
multithreaded ist. Ansonsten kann ein Prozess nur von einer
CPU berarbeitet werden. Ist technisch ohne einen sehr
grossen Overhead nicht anders möglich.
Grüße,
CK