Skip to Main Content

Breadcrumb

Hyperthreading für Oracle Datenbanken

Was ist Hyperthreading überhaupt?

Hyperthreading ist eine Technologie für einige Intel CPUs, die virtuell doppelt so viele Cores zur Verfügung stellt wie die CPU eigentlich hat. Das Problem dabei ist, dass ein Prozess, der das Pech hat, auf einem Hyperthread Core (also nicht native Core) zu laufen, nur jene CPU Resourcen nutzen kann, die der Prozess auf dem nativen Core nicht benötigt.

Was bringt Hyperthreading bei einem System das unter starker CPU Last steht?

Auf diese Frage gab es lange keine fundierte Antwort - weil dies sehr stark von der Applikation abhängt und Intel nicht daran gelegen ist, dass das Marketing Instrument Hyperthreading genauer unter die Lupe genommen wird. In der Zeitschrift c´t Ausgabe 9/2014 vom 7. April findet man im Artikel "Von Kernen und Kacheln" quasi als Abfallprodukt eine fundierte Messung zu diesem Thema. Im CPU SPECint/SPECfp 2006 Benchmark liegt der Performancegewinn zwischen 3% und 10%.

Ist somit Hyperthreading für Oracle Datenbanken sinnvoll?

Nein! Zwar belegt der Benchmark, dass der Durchsatz mit Hyperthreading geringfügig höher ist, aber man weiss ja nie, welcher Prozess jetzt den native Core und welcher Prozess den hyperthreading Core nutzt - somit kann es passieren, dass ein performancekritischer Prozess wie der LGWR oder der DBWn auf einem hyperthreading Core läuft und damit alle anderen Verarbeitungen "ausbremst".

Ist Hyperthreading somit grundsätzlich nicht sinnvoll?

Nein! Es gibt Bereiche wie WebServer oder Applikationsserver, die sehr viele - mehr oder weniger - gleichzeitige Verarbeitungen laufen haben, hier hilft jedes Quäntchen mehr Durchsatz / Performance, zumindest solange die Benutzer dadurch keine Verzögerungen in den Antwortzeiten bemerken (also solange das Ergebnis deutlich weniger als eine Sekunde braucht).