sundays
Goto Top

VMWare und Mehrprozessor-/Dualcoresysteme

Hallo,

durch mein Studium und meinen Job bin ich auf eine Fragestellung gestoßen auf die ich leider noch keine Antwort gefunden habe.

Derzeit betreiben wir eine Simualtionssoftware auf mehreren Rechnern. Nachteil dieser Software ist das diese auf Mehrprozessorsystemen oder auch auf Multicoresystemen immer nur einen Prozessor/Prozessorkern ausnutzt. Dies bedeutet zwangsweise das min. 50% der Rechenleistung verloren geht. Es ist uns nicht möglich die Software in irgendeiner Art und Weise zu beeinflussen.

Wäre es möglich auf einem Mulicoresystem eine VMWare zu installieren die der Simulationssoftware einen einzigen Prozessor(kern) vorgaukelt und somit den gesammten Prozessor mit all seinen Kernen ausnutzt?

Angenommen es wäre möglich das die VMWare wirklich mehrere Prozessorkerne auf einen virtuellen Prozessor virtualisiert, wie verhält sich die VMWare in Bezug auf Prozessorauslastung und Speicherverwaltung wenn man nun auf einem Rechner auf verschiedenen Virtuellen Hosts Simulationen laufen lässt?

Welches Produkt von VMWare oder anderen Herstellern/Opsen Source würde dies Unterstützen?

Vielen Dank für die Antworten!

Sundays

Content-Key: 49721

Url: https://administrator.de/contentid/49721

Printed on: April 16, 2024 at 10:04 o'clock

Member: VoSp
VoSp Jan 24, 2007 at 15:40:27 (UTC)
Goto Top
Hallo Sunday,

also der VM Ware ESX Server kann auf jeden Fall die Rechenleistung auf die einzelnen VM's verteilen. Das geht sogar dynamisch, D.h. wenn eine VM gerade nix zu tun hat und eine ausgelastet ist wir die CPU Power auf die ausgelastete transferiert. Da gibts, ausser Lizenztechnisch, auch keine Beschränkung. Du kannst den ESX auch auf nem Itanium Server mit 16CPU's und 128GB RAm laufen lassen.

Ich weiss nicht ob der GSX oder der kostenlose VMWare Server das auch kann da müsstet Ihr mal bei VMWare nachfragen.

An eurer stelle würde ich mir mal den ESX von VMWare anschauen, sehr leistungsfähiges Produkt. Und wenn Du den Richtigen Rechner drunterstellst kannst Du auch noch ei n paar andere Server von euch in die VM Transferieren und so die Ausfallsicherheit erhöhren und Hardwarecosten, Stromkosten usw. minimieren.

Mit kostenloasen alternativen, XEN, MS Virtual Server, Innotek Virtual Box hab ich mich noch nicht genauer befasst.

Bis dann

VoSp
Member: DaSam
DaSam Jan 24, 2007 at 21:06:01 (UTC)
Goto Top
Hola,

ich glaube, Du hast seine "Begehrlichkeit" falsch verstanden. Meines Erachtens hat er folgendes vor:

Er hat einen DualCore Prozessor (meinetwegen 2 x 2.8 GHz = 5,6 GHz insgesamt). Jetzt sucht er eine Lösung, mit dessen er die 2 x 2.8 GHz der einzelnen Cores/Prozessoren als einen virtuellen "~5 GHz" Prozessor vorgaukeln kann.

vmWare kann sowas definitiv NICHT, ich wüsste auch nicht, dass irgendeine Software sowas machen könnte.

@sundays: Woher stammt denn diese Software? Ist die selbst gemacht?

cu,
Alex
Member: sundays
sundays Jan 24, 2007 at 21:35:18 (UTC)
Goto Top
Hallo,

danke erst mal für Eure Antworten! Ich stelle mir das so ähnlich vor wie Du das beschrieben hast, Alex. Die VM soll der Simulationssoftware eine CPU vorgaukeln, da wie schon gesagt, die Software nicht auf zwei Prozessoren/Cores zugreifen kann. Natürlich wäre es auch eine Idee wenn die VM die Berechnungen auf zwei Prozessoren/Cores verteilt ohne das die Simulationssoftware etwas bemerkt.

Die Software ist ein Eigengewächs aus älteren Tagen die jedoch noch tadellos läuft. Eine anpassung kann allerdings aus Resourcenmangel (leider) nicht stattfinden!

Grüßle Sundays
Member: meinereiner
meinereiner Jan 24, 2007 at 21:56:50 (UTC)
Goto Top
Beim ESX kannst du einstellen wieviele CPUs die virtuelle Maschine haben soll. Da erscheint dann ggf nur eine CPU auch wenn der ESX selbst eine oder mehr Multicore CPUs hat.
Member: DaSam
DaSam Jan 24, 2007 at 23:02:15 (UTC)
Goto Top
@meinereiner:

Ja, aber diese eine virtuelle CPU hat MAXIMAL die Taktung eine physikalischen CPU, wird also bei der virtualisierung auf einen Core/Prozessor abgebildet.

Mit ESX geht's definitiv nicht, glaub' mir ... ich hab' das gelernt face-wink

cu,
Alex
Member: meinereiner
meinereiner Jan 25, 2007 at 07:16:37 (UTC)
Goto Top
Ja, aber diese eine virtuelle CPU hat
MAXIMAL die Taktung eine physikalischen CPU,
wird also bei der virtualisierung auf einen
Core/Prozessor abgebildet.

ja, ,das stimmt so. Das wollte ich auch nicht anders behaupten.
So ganz klar ist mir selbst nämlich nicht, wieviel Rechenleistung von z.B. einer Quadcore CPU diesem einen Prozessor dann zur Verfügung steht. Mehr als ein viertel sollte es schon sein.
Member: DaSam
DaSam Jan 25, 2007 at 10:32:14 (UTC)
Goto Top
Hi,

wie soll denn ESX mehr als ein Viertel der Power einer Quadcore zur Verfügung stellen, wenn er für eine VM maximal auf einen Core dieser CPU zugreifen darf?

Dazu kommt noch der Virtualisierungsoverhead, der je nach Software und Betriebssystem sehr massic sein kann. ESX kann nur bestimmte Sachen in Hardware laufen lassen, für einige muss ESX auch CPU Zugriffe "virtualisieren", welche gerade bei älterer Software (um die es sich hier vermutlich auch handelt) massiv ausfallen können.

In der Praxis wird er wohl eher nur 80-90% der Power eines Cores abbekommen.

cu,
Alex
Member: sundays
sundays Jan 25, 2007 at 23:36:06 (UTC)
Goto Top
Hi,

vielen Dank für Eure Antworten die mich in der Entscheidungsfindung wirklich weitergebracht haben!

Nachdem ich eingesehen habe es nun wohl nicht mit einer VMWare realisierbar ist, aus mehreren Prozessorkerenen einen virtuellen Prozessorkern zu machen, habe ich überlegt was wohl Softwareseitig zu ändern wäre damit die Software mehrere Prozessorkerne nutzen kann.

Wäre es "nur" damit getan die Berechnungen auf verschiedene Threads zu verteilen? So das je ein Thread auf einem Core verarbeitet werden kann? Ob es sich lohnt so eine alte, jedoch auch mächtige Software Multiprozessorfähig zu machen, ist eine andere Frage! Wäre es mit mehreren parallelen Threads getan oder was ist generell gegenüber "normaler" Software die auf einem Prozessor läuft zu beachten?

Späte Grüße ;)
Sun
Member: DaSam
DaSam Jan 26, 2007 at 07:53:31 (UTC)
Goto Top
Hi,

na, das mit dem Multithreading ist ja ein ganz anderes Thema. Wenn das Programm vom Ablauf her "kompliziert" ist, dann würde ich die Finger davon lassen ehrlich gesagt.

Multithreading ist dann besonders einfach zu implementieren, wenn man zuvor voneinander relativ isolierte Aufgaben sequentiell programmiert hatte, die miteinander wenig zu tun haben. Greifen diese Aufgaben aber auf gemeinsame Ressourcen zu (erstellen z.B. die gleichen Dateien), muss man natürlich schon ganz genau aufpassen, dass der eine Thread nicht die gleiche Datei liest, die der andere gerade neu anlegen möchte u.s.w.

Hängt jetzt auch im wesntlichen davon ab, welche Programmiersprache verwendet werden muss - die eine bietet zusätzliche Bibliotheken für parallelverarbeitung (in der c't war da ein recht guter Artikel), die anderen unterstützen den Programmierer kaum.

cu,
Alex