Performanz auf virtueller Maschine

kasselkarsten

Benutzer
Beiträge
7
Hallo Zusammen,

ich habe eine recht große (120Gb) Datenbank InnoDB von einem Desktop-PC (8Gb, 1xSATA) auf eine virtuelle Maschine (2CPU, 16Gb RAM, Windows 7) portiert.
Auf beiden System läuft die Server-Version 5.5.28 (64Bit). Die MySQL-Systemvariablen sind identisch. Ich benchmarke mit einem komplexem Statement direkt (remote) auf den Maschinen und musste feststellen, dass der Desktop-PC 3-4 mal schneller ist als die virtuelle Maschine!
Beim genaueren Betrachten liegt es wohl an der Datenübertragungsrate zu den Festplatten, obwohl auf der virtuellen Maschine die Plattenanbindung (SAN) hochperformant ist. Beim Kopieren von Daten mit dem Windows-Explorer werden auch sehr hohe Geschwindigkeiten erreicht. Die Zugriffszeit ist unter 4ms und ich operiere mit einem RAW-Device mit 16k Blockgröße.

Schaue ich mir aber die Datentransferraten mit dem Windows-Resourcen-Manager an, kann ich sehen, dass die virtuelle Maschine kaum mehr als 600 kb/s schafft die SATA-Platte im Desktop-PC aber >50 MB/s erreicht.

Nun weis ich nicht mehr weiter, habe schon manchen Abend mit Recherchen verbracht und alles Mögliche erfolglos probiert.

Was kann das sein?
Was mache ich falsch?

vielen Dank für Eure Antworten
Karsten
 
Werbung:
Beim genaueren Betrachten liegt es wohl an der Datenübertragungsrate zu den Festplatten, obwohl auf der virtuellen Maschine die Plattenanbindung (SAN) hochperformant ist.

....

Schaue ich mir aber die Datentransferraten mit dem Windows-Resourcen-Manager an, kann ich sehen, dass die virtuelle Maschine kaum mehr als 600 kb/s schafft die SATA-Platte im Desktop-PC aber >50 MB/s erreicht.

Nun, dann ist wohl die SAN-Anbindung nicht wirklich hochperformant. Wie las ich mal: "virtuelle Hardware - virtuelle Performance'.


Warum betreibt man einklich einen DB-Server unter Windows?


Andreas
 
es ist auch eine Frage des Preises, ein dedizierter Server ist eben kein Schnäppchen und Windows taugt 'eigentlich' allemal für meine Ansprüche.

Aber mal im Ernst, wieso erreiche ich beim Kopieren von Dateien auf der VM 150 MB/s und MySQL nicht?
Ist eine Frage der MySQL-Einstellung oder eher die Konfiguration des SAN?

Gruß
Karsten
 
Aber mal im Ernst, wieso erreiche ich beim Kopieren von Dateien auf der VM 150 MB/s und MySQL nicht?


Kann man erst mal nur wild raten. Vielleicht macht der Explodierer kein fsync. Wenn Du das richtig messen willst, brauchst bonnie oder sowas. Dem Windows-Explorer würde ich eher nicht als sinnvolles Benchmak-Tool betrachten ...

Andreas
 
Du hast Recht. Das erste Posting ist wohl eher als verzweifelter Hilferuf zu verstehen.
Ich konkretisierte:

Als Benchmarker-Tool nehme ich auf beiden Systemen den Windows-Resource-Manager und kann damit ganz gut die Schreib- und Lesegeschwindigkeiten auf den relevanten Dateien zumindest vergleichen.
Kopierte ich Dateien mit dem Windows-Explorer ist das SAN sehr schnell, aber die Zugriffe via MySQL-Server-Software sind unglaublich langsam. Die Transferrate bricht während eines querys bis auf 500kb/s ein, wobei die 2 CPU kaum etwas leisten müssen. RAM 16 Gb genügt.

Was ich schon probiert habe:
Verschiedene Plattenkonfigurationen
Cpu-Anzahl
Virenscanner deinstalliert
Die üblichen performance-Parameter von MySQL
Unterschiedliche Konstellationen der tablespaces und log-dateien inkl. one file per table


Der Admin meint eine andere DB (MSSql) läuft problemlos ohne besondere Maßnahmen in der gleichen Umgebung - hmmm...
Was genau meinst Du mit der Explodierer kann kein fsynch?

Karsten
 
Was genau meinst Du mit der Explodierer kann kein fsynch?

Karsten

Es geht um fsync(), das ist ein System-Call. Wenn eine transaktionsbasierte Datenbank (InnoDB) der Applikation melden will, daß alles auf Platte geschrieben ist, dann darf sie an dieser Stelle nicht 'lügen'. Also gibt es fsync(), welches alle Caches (Betriebssystem, Plattencontroller, Platte) *wirklich* dahin schiebt, wo es hingehört: auf diese komischen runden Scheiben da, wissn's schon.

Der Windows-Dateiexplodierer hat soviel Ehrlichkeit nicht nötig. Wenn Du was auf USB-Stick kopierst, wird das sehr schnell gehen. Erst wenn Du das 'auswerfen' willst macht es dann einen fsync() - der dauert dann halt nochmal.

Andreas
 
Ja klar: google nach 'bonnie iops'.

Andreas

Also, um das mal auf den Punkt zu bringen: Dein Problem ist offenbar nicht datenbanktechnisch, sondern in Deiner Virtualisierung zu suchen. Insofern bist Du hier falsch.
Bringe Deine Virtualisierung gescheit zum laufen, dann klappt auch der Rest. Bis dahin kannst ja auch prüfen, ob es *wirklich* MySQL unter Windows sein muß ;-)

Andreas
 
Zusätzlich zu den hilfreichen Tipps von Andreas noch ein Hinweis:

Bei vielen Installationen von Mysql ist die my.cnf nur für Myisam optimiert und für Innodb wurde gar nichts eingestellt - d.h. die Defaultperformance ist mehr als lausig! Kontrolliere bitte die my.cnf ob die gängigen Innodb-Performance-Einstellungen klug gewählt sind (oder überhaupt vorhanden).
 
Eventuell ist die SAN Performance auch nur bei großen Dateien lausig, in jedem Fall interessiert mich der Grund auch :) Darf man fragen womit virtualisiert wird und was für ein SAN im Einsatz ist? (iSCSI / FC? welches Storrage?)
 
Werbung:
Ich hatte auch die Option OneFilePerTable eingestellt, so daß keine riesige Datei entsteht - hat aber leider auch nichts gebracht.

so, hier die Daten der Umgebung:

VMWare 5.1
Host – Dell PowerEdge R720, 2x E5-2640, 8x 8GB RAM, Broadcom BCM57711
Switche – Dell Powerconnect 8024F
Storage – Dell Equallogic PS4100X iSCSI

 
Zurück
Oben