Hallo allerseits, folgendes Problem: Ich haben beim Kunden Server-Software laufen, die schlechte Performance liefert, Faktor 2-3 zu langsam. Der (Windows 2008-)Server dort ist mit VMware virtualisiert. Selbe Konstellation läuft bei mir auf einem (gut ausgestatteten) Notebook ebenfalls virtualisiert (VMware Workstation) zufriedenstellen. Verdacht: Server hat zwar 2 GHz Xeons, aber ich kriegen nur einen Bruchteil davon ab, den Rest verteilt die Virtualisierung auf andere VMs. Habe ich mit einem simpelsten Perl-Skript nachgewiesen, welches in einer schleife total dumme Berechnungen ausführt, sozusagen ein "poor mans benchmark", ebenfalls bei mir ca. 3 mal schneller als beim Kunden. Server langweilt sich aber. nun möchte ich das auf etwas belastbarere Beine stellen. Kann mir jemand ein einfaches aber aussagekräftiges kleines Tool empfehlen, mit dem ich die tatsächliche CPU-Leistung messen kann (single threaded!), welches ich dann der IT-Abteilung des Kunden vor die Nase halten kann? Danke!
I/O-Lastig? notebook mit SSD, und server mit spindeln?
Michael Reinelt schrieb: > 2008-)Server dort ist mit VMware virtualisiert. Was für ein VMware? Bei ESXi gibts recht ordentliche Statistiken direkt im VMware selbst. Notfalls ESXi testweise auf freiem Standard-PC installieren - VMware auf SATA ist nicht der Renner, aber der CPU ist es egal. > Verdacht: Server hat zwar 2 GHz Xeons Das Xeon kann auch ein Pentium 4 sein, das heisst nichts. > Kann mir jemand ein einfaches aber aussagekräftiges kleines Tool > empfehlen, mit dem ich die tatsächliche CPU-Leistung messen kann Der Windows eigene "perfmon" beispielsweise, wenn du Kurven brauchst. Oder suchst du ein Benchmark-Programm?
:
Bearbeitet durch User
c.m. schrieb: > I/O-Lastig? notebook mit SSD, und server mit spindeln? Nö, Bottleneck ist wirklich nur die CPU
A. K. schrieb: > Michael Reinelt schrieb: >> 2008-)Server dort ist mit VMware virtualisiert. > > Was für ein VMware? Bei ESXi gibts recht ordentliche Statistiken > direkt im VMware selbst. Notfalls ESXi testweise auf freiem Standard-PC > installieren - VMware auf SATA ist nicht der Renner, aber der CPU ist es > egal. Weiss ich leider nicht so genau, und die IT ist nicht sonderlich kooperativ (externe IT, Kunde sucht Schuldigen, ich glaube den zu kennen, brauche aber belastbare Daten) >> Verdacht: Server hat zwar 2 GHz Xeons > Das Xeon kann auch ein Pentium 4 sein, das heisst nichts. Normalerweise wird der CPU-Typ doch recht verläßlich in die VM durchgereicht? >> Kann mir jemand ein einfaches aber aussagekräftiges kleines Tool >> empfehlen, mit dem ich die tatsächliche CPU-Leistung messen kann > > Der Windows eigene "perfmon" beispielsweise, wenn du Kurven brauchst. > Oder suchst du ein Benchmark-Programm? Eher Benchmark. Bottleneck kenn ich ja.
Michael Reinelt schrieb: > Eher Benchmark. Bottleneck kenn ich ja. Hab nur noch nicht verstanden, was du eigentlich willst. Zeigen, dass dein Rechner 3x schneller ist als deren Rechner?
A. K. schrieb: > Michael Reinelt schrieb: >> Eher Benchmark. Bottleneck kenn ich ja. > > Hab nur noch nicht verstanden, was du eigentlich willst. Zeigen, dass > dein Rechner 3x schneller ist als deren Rechner? Umgekehrt: Dass deren Rechner nicht meinen Vorgaben entspricht (ich forderte 4 Kerne zu 2 GHz, ich habe 4 kerne, Windows zeigt 2 GHz, aber ich befürchte ich krieg von VM-Host nur ~500 MHz)
Michael Reinelt schrieb: > Umgekehrt: Dass deren Rechner nicht meinen Vorgaben entspricht (ich > forderte 4 Kerne zu 2 GHz, ich habe 4 kerne, Windows zeigt 2 GHz, aber > ich befürchte ich krieg von VM-Host nur ~500 MHz) Und du bist in der Lage, auf deren VM diesen Benchmark laufen zu lassen? Ein CPU Benchmark Programm im Internet aufzutreiben ist ja wohl nicht so arg schwer. Dass ein VM-Host, der nicht nur eine VM trägt, mitunter keine 100% deiner VM zu Verfügung stellt ist klar. Man kann im ESXi auch Leistungsreservierung definieren, d.h. was mindestens zur Verfügung stehen sollte. Nicht bekannt wäre mir aber eine vorsätzliche Bremse, die auch bei freier CPU drosselt.
:
Bearbeitet durch User
Michael Reinelt schrieb: > Umgekehrt: Dass deren Rechner nicht meinen Vorgaben entspricht (ich > forderte 4 Kerne zu 2 GHz, ich habe 4 kerne, Windows zeigt 2 GHz, aber > ich befürchte ich krieg von VM-Host nur ~500 MHz) Ein 10 Jahre alter Pentium 4 Xeon kann auch 2GHz haben, wird aber im Vergleich mit einem aktuellen Haswell-EP 3GHz Xeon nicht einmal dein Drittel an Leistung erreichen. Frequenz gefordert, Frequenz gekriegt. ;-)
:
Bearbeitet durch User
640k RAM reichen wohl doch nicht für MS? Wenn etwas langsam ist, würde ich erst mal nach dem verfügbaren und dem benutzten RAM fragen. Evtl. reicht der RAM nicht und es wird recht bald auf die langsame Platte ausgelagert?
Kann es sein, dass die VM in einer vollvirutalisierten Umgebung läuft und nicht in einer paravirtualisierten? Das kann ganz beträchtliche Leistungsunterschiede verursachen, allerdings meistens eher im I/O-Bereich. Erkennen kann man dies z.B. an den durch die VM verwendeten Festplatten- und Netzwerktreibern. Die Vollvirtualisierung wird z.B. dann verwendet, wenn der Betriebssystemtyp zum Zeitpunkt der Installation der VM unbekannt war oder falsch ausgewählt wurde. Und wenn der zuständige Mitarbeiter der IT-Abteilung unmotiviert war, hat er nach Abschluss der Installation auch nicht den Virtualisierungstyp überprüft. Im Anhang befindet sich ein Screenshot des Gerätemanagers eines mittels Xen virtualisierten Windows Server 2008 R2. Das "PV" für Netzwerk- und SCSI-Controller kennzeichnet den paravirtualisierten Betrieb.
Andreas Schweigstill schrieb: > Kann es sein, dass die VM in einer vollvirutalisierten Umgebung läuft > und nicht in einer paravirtualisierten? Hier steht ja VMware, und das ist allenfalls in Form von 1-2 I/O-Treibern paravirtualisiert. Es verwendet jedoch per Default keine Paravirtualisierung. Ausserdem betrifft dieser Unterschied nicht die CPU, und um die geht es hier erklärtermassen. > Das kann ganz beträchtliche > Leistungsunterschiede verursachen, Ist mir in der hier angedachten Dimension noch nicht begegnet. Aber ja, ich halte das auch bei der CPU für prinzipiell möglich, wenn der relevante Code gegen bestimmte Mechanismen der Virtualisierung quasi systematisch ankämpft. Nur wäre das bei seiner VMware Workstation nicht viel anders als bei dem VMware des Kunden.
:
Bearbeitet durch User
Welche Anzahl an Prozessoren und Prozessorkernen ist denn in den Einstellungen der VM zugewiesen worden? Standardmäßig steht dieser Wert bei VMware ja auch 1/1. Kann Deine Anwendung denn überhaupt mehr als einen Prozessorkern ausnutzen? Und wie schon von jemand anderem erwähnt, beschreibt der Begriff Xeon eine Vielzahl von Prozessoren unterschiedlichster Art. Es gab sogar Xeons auf Basis des Pentium III, aber die gingen nicht bis 2GHz. Gerade zu Pentium 4-Zeiten gab es sehr hoch getaktete Prozessoren mit gigantischer elektrischer Leitungsaufnahme, aber kaum Rechenleistung dahinter. Zwischen den ersten Xeons auf Basis der Core-2-Architektur und aktuellen Prozessoren liegen mittlerweile auch etliche Generationen, bei denen ebenfalls eine Vervielfachung der Instruktionen pro (Hertz*Sekunde) stattgefunden hat. Ich hatte auch einmal einen Kunden, der sich über die geringe Rechenleistung seines Xeon-basierten Servers beschwerte, auf dem er Simulationsrechnungen durchführte. Wie sich in unserem Gespräch herausstellte, hatte er einen schon damals uralten Server gekauft und sich nur von dem Begriff Xeon blenden lassen.
A. K. schrieb: > Und du bist in der Lage, auf deren VM diesen Benchmark laufen zu lassen? Innerhalb "meiner" VM kann ich mich (fast) frei bewegen, nur außerhalb sehe ich nix, auch keine VMware-Einstellungen und Statistiken. > Ein CPU Benchmark Programm im Internet aufzutreiben ist ja wohl nicht so > arg schwer. Für einen Windows-Hasser schon :-) ich suche eine Empfehlung oszi40 schrieb: > Wenn etwas langsam ist, würde > ich erst mal nach dem verfügbaren und dem benutzten RAM fragen. Ram ist nicht das Problem. CPU ist eindeutig als Bottleneck identifiziert. Andreas Schweigstill schrieb: > Welche Anzahl an Prozessoren und Prozessorkernen ist denn in den > Einstellungen der VM zugewiesen worden? Standardmäßig steht dieser Wert > bei VMware ja auch 1/1. Keine Ahnung, ich seh ja "von außen" nicht drauf. Kann mir jemand einen einfachen und trotzdem belastbaren benchmark empfehlen? Idealerweise einen der verbreitet und bekannt ist?
Michael Reinelt schrieb: > Andreas Schweigstill schrieb: >> Welche Anzahl an Prozessoren und Prozessorkernen ist denn in den >> Einstellungen der VM zugewiesen worden? Standardmäßig steht dieser Wert >> bei VMware ja auch 1/1. > > Keine Ahnung, ich seh ja "von außen" nicht drauf. Die Anzahl der Prozessoren bzw. Kerne wird doch auch im Geräte-Manager unter Prozessoren angezeigt... > Kann mir jemand einen einfachen und trotzdem belastbaren benchmark > empfehlen? Idealerweise einen der verbreitet und bekannt ist? SPECint
Andreas Schweigstill schrieb: > Die Anzahl der Prozessoren bzw. Kerne wird doch auch im Geräte-Manager > unter Prozessoren angezeigt... da er aber nur 1 CPU messen will, spielt das doch überhaupt keine rolle > mit dem ich die tatsächliche CPU-Leistung messen kann > (single threaded!),
mit was verwaltest du die VMs? Mach bitte ein screenshot der betreffenden VM bzw. schau mal nach "collecting diagnostic information from an ESX or ESXi host". Im Anschluss ist der Knoten schnell gelöst. Das hier ist ja schlimmer als bei rate mal mit Rosenthal - würg...
Bernd schrieb: > mit was verwaltest du die VMs? Mach bitte ein screenshot der > betreffenden VM bzw. schau mal nach "collecting diagnostic information > from an ESX or ESXi host". soviel dazu; > Innerhalb "meiner" VM kann ich mich (fast) frei bewegen, nur außerhalb > sehe ich nix, auch keine VMware-Einstellungen und Statistiken.
Noch eine Idee: Auf dem Host laufen einige VMs, die entweder im Bootmanager festhängen oder beim Herunterfahren. Dort dann der Prozessor in einer Warteschleife und konsumiert einfach nur so viel CPU-Zeit, wie er nur bekommen kann, denn es gibt keine blockierenden Systemaufrufe. Solche hängenden VMs habe ich auch schon mehrmals erlebt. Das kann aber natürlich auch nur der Administrator des Hosts feststellen.
Den genauen CPU Typ kann man auch innerhalb der VM identifizieren. Die wird durchgereicht, wenn auch nicht zwingend mit allen Features.
Die für dich interessanten Einstellungen siehst du nicht im Gast sondern in der ESXi/vCenter-Konsole. Wieviele Maschinen laufen auf dem Host? Wenn du die Cores für rechenlastige Aufgaben nutzt sollte man sicherstellen dass du die auch exklusiv zur Verfügung hast. Wenn man mehr Cores provisioniert als das System hat kommt es zwangsläufig dazu dass die vorhandenen Kerne zwsichen den Maschinen aufgeteilt werden müssen und dann hast du zwar 4 Cores aber eben nur einen Bruchteil der Leistung zur Verfügung. Im Normalfall wirkt sich das nicht aus da typische Systeme eher vor sich hin dümpeln und Engpässe beim Arbeitsspeicher oder im IO auftreten. Es gibt weiterhin noch Reservierungen und Beschränkungen, sowie Gewichtungen für CPU und Speicheranforderungen die sich pro Maschine oder Ressourcengruppe festlegen lassen. Manche Software hat mit externen Einschränkungen der Ressourcen generell ein Problem. Früher war das ein Drama mit Novell - aber das ist ja mittlerweile nahezu ausgestorben ;-) Aber wehe du hast da eine Beschränkung eingetragen - auch wenn sie noch so großzügig war. Die Kiste ist sofort in die Knie gegangen. Man kann auf dem Host in den Maschineneinstellungen auch eine Affinität zu bestimmten CPU-Cores eintragen um Ressourcenfressende Maschinen zu bevorzugen, im Normalfall sollte das aber selten nötig sein. Da muss man auch in Hinblick auf vMotion etwas aufpassen. Ich denke, dass du nicht umhin kommst mal einen Blick auf die VM-Umgebung zu werfen.
Leider fehlt immer noch der CPU Typ. Schau halt mal nach im Gerätemanager. Unter VMware können auch Ressourcen reserviert werden. Vielleicht wäre das eiene Option für dich. Die Geschwindigkeit mit der dein Perl Script läuft ist fast ausschließlich von der CPU Frequenz abhängig nicht von der Anzahl der Cores. So läuft ein Prozess welcher nicht Multicore Unterstützung hat auf einer CPU mit 4x 3 GHz schneller auf einer mit 8x 2 GHz. Wir haben hier auch ESXI laufen ich kenne die Statistiken und die Möglichkeiten. Ich kenne auch das Problem mit den zu langsamen Server usw. Auch wenn die VMWare Statistik immer super aussieht rennen die Server darauf zu langsam. Als Nachweis das dies so ist würde ich deinen Benchmark vom Laptop und der Server akzeptieren. Das ist aber dann Ermessungssache von dem Admin. Lass dir Erstmal CPU Leistung reservieren. Biete einen Server an welcher genug Leistung hat.
Michael Reinelt schrieb: > A. K. schrieb: >> Michael Reinelt schrieb: >>> Eher Benchmark. Bottleneck kenn ich ja. >> >> Hab nur noch nicht verstanden, was du eigentlich willst. Zeigen, dass >> dein Rechner 3x schneller ist als deren Rechner? > > Umgekehrt: Dass deren Rechner nicht meinen Vorgaben entspricht (ich > forderte 4 Kerne zu 2 GHz, ich habe 4 kerne, Windows zeigt 2 GHz, aber > ich befürchte ich krieg von VM-Host nur ~500 MHz) https://www.cpubenchmark.net/ damit kannst du in deiner VM der CPU auf den Zahn fühlen. Vergleichswerte werden gleich mitgeliefert. Von daher kannst du abschätzen in welcher Leistungsklasse sich deine Gurke befindet. http://www.iometer.org/ Mit dem iometer kannst du sehr speziell auf deine Bedürfnisse hin die CPU testen. So wie ich das hier lese bist du nicht der Admin und hast überhaupt kein Einfluss auf die Host-Konfiguration (Berechtigungen...). Von daher sind alle gutgemeinten Ratschläge sinnfrei, denn du kannst eh nichts umsetzen.
Danke, Bernd! Genau das was ich brauche!
freut mich. Normalerweise sauge ich hier nur bzgl. Elektronik. Schön etwas beisteuern zu können ...
Das Ausführen mancher langlaufenden Benchmarks kann aber einen Nebeneffekt haben... nämlich dass der der den Host verwaltet deine vermeintlich teilabgestürzte/in einer CPU-fressenden Schleife hängende VM erst recht drosselt oder gar rebootet... Und schlechte I/O-Performance kann sich sehr wohl als vermeintlicher CPU-Engpass darstellen wenn man nicht sehr genau hinguckt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.