Oracle und mehrere Sockel
-
Hallo zusammen,
ich bin seit letzter Woche leider etwas ratlos und hoffe, dass ich hier richtig bin. Ich weiß nämlich nicht so genau ob es ein Windows(Server 2012 R2 Standard, seit dem Wochenende komplett mit den neuesten Updates versorgt) Problem oder ein Oracle DB Problem ist.
Wir haben auf der Arbeit einen Server für unsere Oracle Datenbank. Es handelt sich hierbei um einen HP Server mit 2 CPU's in Sockel 0 und 1. Bei jeder CPU handelt es sich um einen Intel Xeon E5-2637 v3. Im Windows Taskmanager werden uns 16 Kerne angezeigt. HT ist aktiviert. Im Procexp aus der SysinternalSuite werden uns jedoch nur 8 Kerne angezeigt. Das finde ich schon sehr merkwürdig. Mit Prime95, dem 7-Zip Benchmark und einer kleinen selbstgeschrieben Anwendung wollten wir die CPU's auf allen Kernen mal auslasten, da uns aufgefallen ist, dass gerade die Oracle Engine nur 8 der im taskmgr angezeigten 16 Kerne nutzt. Fazit war, dass die oben genannten Anwendungen auch nur 8 Kerne auslasten konnten. Die anderen langweilten sich(Sockel 0 war beschäftigt). Das komische ist, dass manchmal auch etwas auf den Kernen(Sockel 1) zu laufen scheint. Gelegentlich sieht man ein Zucken bis 5% aber das wars dann auch. Alles in allem ist fast eine horizontal gerade Linie zu sehen. Nun habe ich mir mal den Spaß erlaubt, die Affinität für unseren Oracle Prozess zu ändern. Dass die Engine plötzlich nicht weiß dass ich ihr über den taskmgr mehr oder etwas anderes zuwesein will ist schon klar. Aber nach dem die Affinität geändert wurde(von Sockel 0 zu 1) konnte man sehen, dass die Arbeit verschoben(nicht aufgeteilt oder sonst was) wurde und Sockel 1 plötzlich Langeweile hatte. Teile ich der Oracle Engine mit, dass ich bspw. 15 Cores nutzen möchte, dann juckt diese das überhautpt nicht.
Kann jemand dieses Verhalten irgendwie erklären? Irgendwie hat das schon mehr was mit Windows ansich zu tun als mit der Oracle DB glaube ich. Vielleicht was mit HT?
Verbindlichsten Dank im Vorraus.
Gruß
-
Die CPU hat doch auch nur 4 physikalische Kerne. Der Rest wird von Hyperthreading pseudo-verdoppelt
-
Das ist der Sinn von HT;-) Das ist uns schon bekannt. Erklärt aber nicht das Problem.
-
Welches Problem meinst du denn jetzt genau? Dass Dualcpu-Boards eine eigene Geschichte zu diesem Thema sind und das es nicht so einfach ist, mehr als x-Kerne auszunutzen, sollte bekannt sein.
Oder siehe auch hier Dualgpu:
https://www.golem.de/news/dual-graphics-und-frame-pacing-im-test-symbiose-aus-kern-und-karte-1402-104829-3.htmlund:
http://ppbm7.com/index.php/tweakers-page/95-single-or-dual-cpu/109-single-or-dual-cpuAuslasten geht nicht immer, wie gewünscht oder erwartet
http://www.tecchannel.de/a/intels-8-core-system-im-test,455565,27(-> mehr testen, Software finden wie z.B. Beispielprogramme zu Multithreadingvergleichen bei Programmiersprachen usw. und dann noch mal gucken/fragen)
(generell macht es ja technisch Sinn, bei 8 Kernen auf einem Cpu zu bleiben, sofern nicht hochoptimierte Parallelsoftware/Parallisiertechniken/Compiler) hier nachhilft um noch mehr Kerne als sinnvoll hinzubekommen bzw. eigenständige Betriebssysteme/Virtuelle darauf laufen)
-
SpieltKeineRolle schrieb:
Das ist der Sinn von HT;-) Das ist uns schon bekannt. Erklärt aber nicht das Problem.
Informiere dich mal, wie HT funktioniert.
Du hast pro CPU nur 4 echte Kerne, bei einem Mainboard mit 2 Sockel sind es 2 CPUs, also 8 Kerne. Mehr hast du nicht.
Wenn die nun von den Threads durchgehend voll ausgelastet sind, dann kommt HT kaum zum Zug.
-
Arbeitet ne Rolle schrieb:
Informiere dich mal, wie HT funktioniert.
Du hast pro CPU nur 4 echte Kerne, bei einem Mainboard mit 2 Sockel sind es 2 CPUs, also 8 Kerne. Mehr hast du nicht.
Wenn die nun von den Threads durchgehend voll ausgelastet sind, dann kommt HT kaum zum Zug.Der Scheduler des OS sollte aber trotzdem auf jeden virtuellen Kern einen Thread packen, sofern denn so viele verschiedene Threads erzeugt wurden. Da das nicht so ist (und wir wohl davon ausgehen dürfen, dass das OS korrekt funktioniert), sind wohl nur 8 Threads erzeugt worden und der TE fragt sich nun zurecht warum.
PS: Die Beschreibung des TE ist ein bisschen wirr. Sind bei den anderen Benchmarks ebenfalls nur 8 Kerne belegt worden? Falls ja, dann ist vielleicht doch etwas am Scheduler so eingestellt, dass er die virtuellen Kerne gar nicht belegt. So eine Einstellung kann zwar in manchen Fällen Sinn machen (daher wird diese Option sicher existieren), aber nicht wenn es darum geht, die Maximalleistung aus der CPU zu holen.
-
Welches Problem meinst du denn jetzt genau? Dass Dualcpu-Boards eine eigene Geschichte zu diesem Thema sind und das es nicht so einfach ist, mehr als x-Kerne auszunutzen, sollte bekannt sein.
Um ehrlich zu sein war uns das nicht bekannt.
Welches Problem meinst du denn jetzt genau? Dass Dualcpu-Boards eine eigene Geschichte zu diesem Thema sind und das es nicht so einfach ist, mehr als x-Kerne auszunutzen, sollte bekannt sein.
Weshalb diverse Programme nur auf einem Sockel(8Cores(mit HT)) laufen statt auf allen 16 über 2 Sockel verteilt. Gerade die Oracle Engine. Laut einigen Benchmarks bringt HT in unserem Fall zwischen 15-30% mehr Performance. Haben oder nicht haben. Da muss ich nicht lange überlegen. Wir haben schließlich dafür bezahlt.
(-> mehr testen, Software finden wie z.B. Beispielprogramme zu Multithreadingvergleichen bei Programmiersprachen usw. und dann noch mal gucken/fragen)
(generell macht es ja technisch Sinn, bei 8 Kernen auf einem Cpu zu bleiben, sofern nicht hochoptimierte Parallelsoftware/Parallisiertechniken/Compiler) hier nachhilft um noch mehr Kerne als sinnvoll hinzubekommen bzw. eigenständige Betriebssysteme/Virtuelle darauf laufen)Also ich kann mit natürlich noch 27 andere Programme herunterladen. Ich befürchte nur, dass das Ergebnis dasselbe sein wird. Aber schaden kann es nicht.
Informiere dich mal, wie HT funktioniert.
Du hast pro CPU nur 4 echte Kerne, bei einem Mainboard mit 2 Sockel sind es 2 CPUs, also 8 Kerne. Mehr hast du nicht.
Wenn die nun von den Threads durchgehend voll ausgelastet sind, dann kommt HT kaum zum Zug.Ich würde behaupten dass wir recht gut informiert sind! Oben habe ich bereits beschreiben was HT uns bringen würde.
Der Scheduler des OS sollte aber trotzdem auf jeden virtuellen Kern einen Thread packen, sofern denn so viele verschiedene Threads erzeugt wurden. Da das nicht so ist (und wir wohl davon ausgehen dürfen, dass das OS korrekt funktioniert), sind wohl nur 8 Threads erzeugt worden und der TE fragt sich nun zurecht warum.
PS: Die Beschreibung des TE ist ein bisschen wirr. Sind bei den anderen Benchmarks ebenfalls nur 8 Kerne belegt worden? Falls ja, dann ist vielleicht doch etwas am Scheduler so eingestellt, dass er die virtuellen Kerne gar nicht belegt. So eine Einstellung kann zwar in manchen Fällen Sinn machen (daher wird diese Option sicher existieren), aber nicht wenn es darum geht, die Maximalleistung aus der CPU zu holen.
Ja wurden sie. Die anderen 8 waren gelangweilt. Wie kann man denn den Scheduler konfigurieren? Mir wäre unter Windows keine Möglichkeit bekannt. Lasse mich da natürlich sehr gerne eines Besseren belehren. Zumal der Server nach der Installation kaum modifiziert wurde. Ich musste heute sogar feststellen, dass jemand vergessen hat den Energieplan von Ausbalanciert auf Höchstleistung umzustellen. 1.) Ich finde es bei einem Sever total bescheuert nach der Installation das Ding nicht automatisch auf volle Power zu stellen. 2.) Selbst nach einem Umstellen war keine Änderung zu erkennen.
Außerdem mussten wir heute feststellen, dass drei andere Server ebenfalls ein solches Verhalten aufweisen. Wir haben dazu mal ein Ticket bei HP aufgemacht und warten da auf eine Antwort. Vielleicht hat ja trotzdem noch jemand eine Idee. Auch über einen Vorschlag für ein Benchmark Programm würde ich mich freuen.
-
Könnte eine Lizensierungsgeschichte dahinter stecken?
-
SpieltKeineRolle schrieb:
Ja wurden sie. Die anderen 8 waren gelangweilt. Wie kann man denn den Scheduler konfigurieren? Mir wäre unter Windows keine Möglichkeit bekannt. Lasse mich da natürlich sehr gerne eines Besseren belehren. Zumal der Server nach der Installation kaum modifiziert wurde. Ich musste heute sogar feststellen, dass jemand vergessen hat den Energieplan von Ausbalanciert auf Höchstleistung umzustellen. 1.) Ich finde es bei einem Sever total bescheuert nach der Installation das Ding nicht automatisch auf volle Power zu stellen. 2.) Selbst nach einem Umstellen war keine Änderung zu erkennen.
Außerdem mussten wir heute feststellen, dass drei andere Server ebenfalls ein solches Verhalten aufweisen. Wir haben dazu mal ein Ticket bei HP aufgemacht und warten da auf eine Antwort. Vielleicht hat ja trotzdem noch jemand eine Idee. Auch über einen Vorschlag für ein Benchmark Programm würde ich mich freuen.Keine Ahnung, ich kann nur Linux. Aber wenn die anderen Benchmarks ganz normal ausgeführt, dann ist es das nicht. nachtfeuers Idee würde ich mal prüfen, das klingt nach einer sehr vielversprechenden Spur.
-
Fehler ist behoben. Ticket bei MS aufgemacht nur um den Techniker feststellen zu lassen, dass uns HP in einer Online Session Schwachsinn erzählt hat und unser BIOS NICHT auf dem aktuellen Stand war. Update eingespielt und dann lief es auch schon.