VM Performance schlecht


Tiras

Recommended Posts

Hallo Zusammen,

 

mir ist aufgefallen, dass die Performance meiner laufenden VMs extrem schlecht ist. Die Programme brauchen sehr lange bis sie geladen sind, dass verschieben von Fenster zieht nach - sprich es wird als Diashow angezeigt - und der Aufbau via RDP braucht auch sehr lange.

 

Das Problem hatte ich nicht, als ich die VMs auf einem Windows Client mit Hyper-V laufen ließ. 

Zu meinem System:

CPU: AMD Ryzen 5 4650G Pro

RAM: 2 x Kingston DIMM 32 GB DDR4-3200

Mainboard: Gigabyte x570 Gaming X

HDDs:

  • 2 x WDC_WD40EFRX-68N32N0_WD-WCC7K2KAS797 (4 TB)
  • 2 x WDC_WD50EZRZ-00GZ5B1_WD-WX11D17L7AUV (5 TB) (eine als Parity)
  • 2 x ST5000DM000-1FK178_W4J0FWLB (5 TB)

NVMe: 2 x 1 TB Samsung Evo 970 Plus (Cache_Default und Cache_VM)

 

Cache_VM wird nur für den Virtualizations Share als Cache mit Prefed genutzt. Der Virtualizations Share ist auf Disk 1 (4 TB) erstellt.

VMs:

  • Windows Server 2012 (Active Directory Controller)
    • 4096 Mb RAM
    • 80 GB Festplatten größe
    • 2 Cores
  • Windows Server 2016 (MS SQL Server 2016)
    • 16GB RAM
    • 80 GB Festplatte
    • 4 Cores
  • Windows Server 2016 (SSRS)
    • 4 GB RAM
    • 2 Cores
    • 80 GB Festplatte
  • Windows Server 2016 (Dynamics CRM 9.1)
    • 8 GB RAM
    • 80 GB Festplatte
    • 4 Cores
  • Windows Server 2016 (TFS)
    • 8 GB RAM
    • 4 Cores
    • 80 GB Festplatte
  • Windows 10 (Workstation)
    • 8 GB RAM
    • 4 Cores
    • 2 x 120 GB Festplatte

 

Da ich ausschließlich mit der Workstation arbeite ist mir das dort, beim öffnen von VS 2017 Pro oder öffnen des Explorers etc. aufgefallen.

 

Hat jemand eine Idee? Wenn ihr noch Informationen braucht, dann lasst es mich wissen.

Danke schon mal im voraus für eure Hilfe.

 

VG

Link to comment
21 minutes ago, Tiras said:

Cache_VM wird nur für den Virtualizations Share als Cache mit Prefed genutzt. Der Virtualizations Share ist auf Disk 1 (4 TB) erstellt.

Liegen deine VMs nun auf der NVME oder auf den HDDs? Letzteres wäre sehr ungünstig.

 

Hast du die VirtIO Treiber auf den VMs installiert und die Grafiktreiber?

 

Ansonsten ist das ganze vielleicht etwas viel für dein System. Du hast 64GB RAM, deine VMs benötigen aber 48GB. Unraid ist kein ESXi oder Hyper-V, wo du sowas immer noch mit halbwegs brauchbarer Performance machen kannst, da hier die freien Resourcen einfach besser verteilt werden. Was du den VMs in Unraid zuteilst, belegen die auch voll, wenn die aktiv sind. Egal, ob genutzt oder nicht.

 

Unraid selbst benötigt auch etwas RAM. Wenn du auch Docker am laufen hast, wird das ganze langsam knapp. Das könnte deine Probleme erklären.

Edited by Gorosch
Link to comment
17 minutes ago, Gorosch said:

Liegen deine VMs nun auf der NVME oder auf den HDDs? Letzteres wäre sehr ungünstig.

 

Hast du die VirtIO Treiber auf den VMs installiert und die Grafiktreiber?

 

Ansonsten ist das ganze vielleicht etwas viel für dein System. Du hast 64GB RAM, deine VMs benötigen aber 48GB. Unraid ist kein ESXi oder Hyper-V, wo du sowas immer noch mit halbwegs brauchbarer Performance machen kannst, da hier die freien Resourcen einfach besser verteilt werden. Was du den VMs in Unraid zuteilst, belegen die auch voll, wenn die aktiv sind. Egal, ob genutzt oder nicht.

 

Unraid selbst benötigt auch etwas RAM. Wenn du auch Docker am laufen hast, wird das ganze langsam knapp. Das könnte deine Probleme erklären.

Also der Virtualizations Share liegt wie gesagt auf der Disk 1 (HDD) mit Cache_VM (NVMe) Prefered. Das Problem war schon, als ich den Virtualization Share mit Cache_VM als Only genutzt hatte. Die RAM Auslastung liegt bei 88% und die CPU Auslastung bei 55%, wenn alle VMs und Docker laufen. Docker habe ich nur 2 installiert.

 

Ich habe hier noch 2 x G.SKILL 16 GB F4-3200C15D-32GTZR liegen, die zuvor verbaut waren. Aber bei diesem RAM war das Problem, dass ich kein XMPProfil aktivieren konnte, weil ich beim Kauf nicht richtig auf die Kompatibilität mit dem Board geachtet habe. Ich könnte ihn wieder installieren, aber dann wird dieser auf 2666 MHz gedrosselt und es ist kein XMPProfil mehr möglich.

Link to comment
1 minute ago, Gorosch said:

Im Zweifel lieber mehr RAM als die paar 100 MHz mehr Taktung, die du wahrscheinlich eh nur bei Benchmarks siehst.

Aber das würde mir nichts bringen und auch das Problem nicht beheben. Das Problem tritt ja nicht nur auf, wenn alle VMs gestartet sind, sondern auch, wenn nur eine aktiv ist.

Link to comment

Also irgendwie liest sich das mit dem Virtualization Share komisch.

Hast du Mal alle VMs beendet, dann den VM Dienst deaktiviert und danach den Mover angeschmissen? Ich könnte mir vorstellen dass da immer noch etwas auf der HDD liegt. Wobei das nicht die CPU Last erklärt

Link to comment
8 hours ago, Tiras said:

2 x 1 TB Samsung Evo 970 Plus (Cache_Default und Cache_VM)

Du hast zwei Pools? Du weißt schon, dass du dann keine Ausfallsicherheit hast? Siehe auch:

https://forums.unraid.net/topic/99393-häufig-gestellte-fragen/?tab=comments#comment-951565

 

8 hours ago, Tiras said:

Die Programme brauchen sehr lange bis sie geladen sind, dass verschieben von Fenster zieht nach - sprich es wird als Diashow angezeigt - und der Aufbau via RDP braucht auch sehr lange.

Ein Intel System wäre für dich eindeutig die bessere Wahl gewesen:

https://forums.unraid.net/topic/108650-plugin-intel-gvt-g/

 

8 hours ago, Tiras said:

Der Virtualizations Share ist auf Disk 1 (4 TB) erstellt.

Wo liegen die VDisks? Prüfe, in dem du bei den Shares rechts auf den Ordner klickst. In der Spalte "Location" steht ob sie auf dem Cache oder der Disk 1 liegen. Gerne auch Screenshots posten.

 

8 hours ago, Tiras said:

Das Problem hatte ich nicht, als ich die VMs auf einem Windows Client mit Hyper-V laufen ließ. 

Mit der selben Hardware und da haben sich die Workstation und die Server auch die selben Kerne geteilt?

 

Link to comment
45 minutes ago, mgutt said:

Du hast zwei Pools? Du weißt schon, dass du dann keine Ausfallsicherheit hast? Siehe auch:

https://forums.unraid.net/topic/99393-häufig-gestellte-fragen/?tab=comments#comment-951565

Ja, dass ist mir bewusst. Aus diesem Grund mache ich wöchentlich ein VM Backup auf 3 verschiedene Disks.

45 minutes ago, mgutt said:

Ein Intel System wäre für dich eindeutig die bessere Wahl gewesen:

https://forums.unraid.net/topic/108650-plugin-intel-gvt-g/

Das Problem hatte ich ehrlich gesagt nicht als ich auf Unraid umgestiegen bin. Der einzige Unterschied ist, dass ich zurvor einen AMD Ryzen 5 2600 gegen den Ryzen 5 4650G Pro und den gesagten RAM getauscht habe. Der neue Prozessor hat mehr Leistung und ist im Single auch besser. Der neue RAM ist auf das Board abgestimmt und würde ich als Fehlerquelle ausschließen.

45 minutes ago, mgutt said:

Wo liegen die VDisks? Prüfe, in dem du bei den Shares rechts auf den Ordner klickst. In der Spalte "Location" steht ob sie auf dem Cache oder der Disk 1 liegen. Gerne auch Screenshots posten.

Sie liegen wirklich auf dem Cache_VM Pool

image.thumb.png.a4f838da1e536cdc78d689f8971fd31b.png

 

45 minutes ago, mgutt said:

Mit der selben Hardware und da haben sich die Workstation und die Server auch die selben Kerne geteilt?

Mit dem Ryzen 5 2600 und dem inkompatiblen RAM, ja. 

 

Ich habe jetzt mal die Core Verteilung neu konfiguriert und nochmal alle Virtrio Treiber installiert. Leider könnte man echt wahnsinnig werden, wenn man Visual Studio startet oder im Team Explorer ein neues Repository erstellen möchte. Dann erscheint immer die Meldung "Keine Rückmeldung". Die längste Wartezeit war knapp 3 Minuten.

Normal finde ich das nicht. Hier nochmal ein Screenshot vom Dashboard:

image.thumb.png.0ae6a507452e82754f7114779b2bfedc.png

 

In einem Beitrag habe ich gelesen, dass es nicht ratsam ist, bei VMs den RAM mit einem Von und Bis Wert zu erstellen sondern beide auf den gleichen Wert zu setzen.

Wie macht ihr das und könntet ihr als Unraid Profis evtl. ein Beispiel eurer Hardware und die Einstellungen geben, die ihr in euren VMs macht?

 

Danke für Eure Hilfe.

Edited by Tiras
Link to comment
9 hours ago, mgutt said:

Wie ist denn die Performance der Workstation, wenn die anderen VMs nicht laufen?

Die Performance ist leider genau so schlecht. 

9 hours ago, mgutt said:

Und der virtio Grafiktreiber ist aktiv? Siehst du ja an der besseren Auflösung.

Also die Auflösung ist die gleiche, wie die des PCs mit dem ich eine RDP Verbindung aufbaue. 

image.thumb.png.890a06b0e0392a568c60448edf5b5ad5.png

 

Hier hast du einen Einblick in die Konfiguration der VM.

 

image.thumb.png.ba35469c7640200247d1e95b0215b423.png

Link to comment
11 hours ago, mgutt said:

Du hast zwei Pools? Du weißt schon, dass du dann keine Ausfallsicherheit hast? Siehe auch:

https://forums.unraid.net/topic/99393-häufig-gestellte-fragen/?tab=comments#comment-951565

Das Tutorial habe ich zu beginn auch gesehen. Da ich kein 10 GB/s Netzwerk habe und nur kleine Dateien (Dokumente und Home Streaming) über das Netzwerk geschoben werden, habe ich mich für Medien erst einmal für "keinen" Cache entschieden.

Die 2 x 1 TB NVMe´s hatte ich zuvor in einem Pool als BTRFS (RAID1) genutzt. Im Thread "Backupmethoden" habe ich euch jedoch so verstanden, dass ich das Dateisystem der/des Pools auf XFS ändern sollte. Da dort die VMs immer drauf lagen (Share erstellt und Pool als "Only" eingestellt) habe ich vor einigen Tagen ein neues Share auf Disk 2 (HDD 4 TB) erstellt und dort ein Backup der VMs gespeichert. Anschließend habe ich den Pool gelöscht und aus einem BTRFS (RAID 1) Pool 2 x 1 TB Pool (Cache_default für Docker, Dokumente etc. und einen Cache_vm für die VMs) erstellt. Im Share appdata habe ich den Pool Cache_default als Prefer angegeben und das gleiche im Share Virtual_Machines. Den Mover gestartet und alle Dateien waren anschließend auf den jeweiligen Pools.

 

Meine Frage:

  1. Warum sollte ich das Dateisystem des alten Pools von BTRFS in XFS ändern, wenn jetzt wieder empfohlen wird, Pools in BTRFS im RAID 1 zu nutzen, oder habe ich das in dem andern Thread falsch verstanden?
  2. Wenn Linux / Unraid standardmäßig 20 % meines DDR RAMs als Read / Write Cache nutzt, was sollte mir das bringen, wenn ich 2 weitere Riegel (2 x 32 GB) verbaue? Ich könnte der/den VM/s nicht mehr Speicher zuweisen, weil das Problem ja wieder auftreten könnte, dass durch die Reservierung wieder nicht genug RAM zur Verfügung steht.
  3. Habe ich nicht wieder einen Nachteil bei der Übertragung/Nutzung, wenn ich das Dateisystem des Pools "Cache_vm" wieder von XFS in BTRFS ändere?
  4. In dem Video wird beschrieben, dass man den RAM Cache ändern kann. Ist die Änderung dauerhaft aktiv, wenn ich den dort gezeigten Befehl in der Console eingebe oder wird er nach einem Neustart wieder zurückgesetzt? Wenn ja, wie kann diesen Wert dauerhaft ändern und vor allem, welcher Wert ist hier empfohlen, da es sich bei meinen Caches um NVMe Hardware handelt, die standardmäßig schon mehr als 1 GB/s bringen?
  5. Würde es das Problem mit der Workstation beheben?
  6. Da ich vermute, dass die ein- oder andere VM neu erstellt werden muss, welchen Wert für das Image der VM/s würdet ihr empfehlen? Wäre es eine gute Idee, wenn ich einen Share "VM_Images" erstelle und dort weitere Images für die VMs speichere, die dann auf den HDDs liegen?

Danke für eure Hilfe.

 

VG

Link to comment
3 hours ago, Tiras said:

Warum sollte ich das Dateisystem des alten Pools von BTRFS in XFS ändern, wenn jetzt wieder empfohlen wird, Pools in BTRFS im RAID 1 zu nutzen, oder habe ich das in dem andern Thread falsch verstanden?

Habe ich nicht wieder einen Nachteil bei der Übertragung/Nutzung, wenn ich das Dateisystem des Pools "Cache_vm" wieder von XFS in BTRFS ändere?

Jedes Dateisystem hat Vor- und Nachteile. BTRFS hat als Copy on Write Dateisystem den Nachteil der Write Amplification. Es wird also deutlich mehr geschrieben als "notwendig". Das geht zu Lasten der SSD Haltbarkeit. Hat man hochwertige SSDs oder genug Kohle in der Tasche, ist das einem vermutlich egal. Ein weiterer Nachteil von BTRFS ist dessen Empfindlichkeit bei Stromausfall. Das kann einem sogar das ganze Volume zerschießen. Mit einer USV und/oder regelmäßigem Scrub kann einem aber auch das egal sein. Bei XFS hat man wiederum das Problem, das man damit kein RAID aufsetzen kann. Es fehlt also die Ausfallsicherheit bei Defekt. Was für dich nun Grund dafür war auf XFS umzustellen, weißt du nur du 😉

 

3 hours ago, Tiras said:

Wenn Linux / Unraid standardmäßig 20 % meines DDR RAMs als Read / Write Cache nutzt, was sollte mir das bringen, wenn ich 2 weitere Riegel (2 x 32 GB) verbaue? Ich könnte der/den VM/s nicht mehr Speicher zuweisen, weil das Problem ja wieder auftreten könnte, dass durch die Reservierung wieder nicht genug RAM zur Verfügung steht.

Korrekt. Ich glaube auch nicht, das es am RAM liegt.

 

3 hours ago, Tiras said:
  • Würde es das Problem mit der Workstation beheben?

Nein

3 hours ago, Tiras said:

Wenn ja, wie kann diesen Wert dauerhaft ändern

Config Editor installieren und dann über Tools den Befehl in die "go" Datei packen. Diese Datei wird beim Start von Unraid ausgeführt.

 

3 hours ago, Tiras said:

Da ich vermute, dass die ein- oder andere VM neu erstellt werden muss

Glaube ich nicht.

 

Wenn ein Fenster beim Bewegen ruckelt, gibt es meiner Ansicht nach nur zwei Optionen:

1.) Die GPU Leistung stimmt nicht (in dem Fall also die virtuelle GPU berechnet durch die CPU)

2.) Die Netzwerk Leistung stimmt nicht

 

Letzteres könntest du schon mal testen, in dem mal eine direkte Verbindung testest. Also PC und Server ohne Switch direkt verbinden (beide müssen dann logischerweise eine feste IP besitzen).

 

Außerdem ließe sich das System entlasten, in dem Du so einen USB 3.0 LAN Adapter verwendest (oder eine LAN Karte) und die dann an die VM durchschleifst:

https://www.amazon.de/Anker-Gigabit-Ethernet-Netzwerkadapter-Ultrabook/dp/B00NPJV4YY/

 

Damit fiele schon mal die komplette Virtualisierung für das Netzwerk weg, was ja auch noch mal die CPU entlastet.

 

Teste bitte auch mal die Workstation alleine ohne Kerne zu isolieren. Also gib der Workstation testweise mal alle Kerne. Bitte beachte, dass du Windows dann richtig herunterfahren musst (Schnellstart deaktivieren). Ansonsten kann es sein, dass Windows die neuen Kerne verpeilt.

 

Ach ja noch was. Nutzt du Energiesparmaßnahmen wie zB den CPU Governor Powersave (zB über das Tipps & Tweaks Plugin)? Der wäre auch ein Grund für solche Probleme. Immer Performance verwenden.

 

Link to comment
20 hours ago, mgutt said:

Was für dich nun Grund dafür war auf XFS umzustellen, weißt du nur du 😉

Ok, ich muss gestehen, dass ich euch in dem "Backupmethoden" Thread vermutlich falsch verstanden habe. Ich glaube ihr meintet, dass BTRFS nichts im Array zu suchen hat. Aber das ist glaube ich jetzt hier nicht die richtige Stelle für eine Diskussion.

 

20 hours ago, mgutt said:

Teste bitte auch mal die Workstation alleine ohne Kerne zu isolieren. Also gib der Workstation testweise mal alle Kerne. Bitte beachte, dass du Windows dann richtig herunterfahren musst (Schnellstart deaktivieren). Ansonsten kann es sein, dass Windows die neuen Kerne verpeilt.

Ich habe nun alle VMs gestartet und der Workstation zusätzlich alle Kerne zugewiesen und ich muss sagen, dass Visual Studio sich nicht mehr aufhängt beim Check In von Änderungen im Repository.

Es ist jedoch noch nicht ganz behoben, da beim öffnen des bspw. Task Managers oder des Windows Explorers weiterhin zu einer sehr langen Wartezeit kommt, bis das entsprechende Fenster angezeigt wird.

 

Es ist nicht wirklich eine Lösung der Workstation sämtliche Kerne zuzuweisen. Auf einer anderen VM mit Windows 10 und dem gleichen Patch Stand, jedoch ohne Visual Studios etc. habe ich diese Probleme nicht und dieser VM sind nur 4 Kerne zugewiesen. 

Da ich so wieso eine neue VM mit Windows 10 erstellen muss, werde ich hier mal anstelle von i440fx-5.1 die Q35-5.1 und OVMF testen. 

 

20 hours ago, mgutt said:

Glaube ich nicht.

Das Image für die VMs ist zu viel. In dem anderen Thread hast du gefragt, wieso die Images der VMs zu hoch sind, dass die Platte voll ist. Bis auf die Workstation und Playground VM haben alle Images 80 GB. Das bedeutet 7/9 VM * 80 = 560 GB + (3 + 120 GB) = 920 GB und aus diesem Grund werde ich die VMs wahrscheinlich neu erstellen. Blöd ist nur, das Windows Server 2012 und 2016 sowie Windows 10 min. 20 GB für das System benötigt.

Es würden wahrscheinlich 40 GB ausreichen, aber das ist den wirklich das Minimum. Für Windows 10 sollte ich mir etwas anderes einfallen lassen. Eventuell eine NVME in den 2. M2 Slot und dann durchschalten. Auch wenn dieser Slot über den SATA-Controller läuft und somit die Übertragung des Arrays ebenfalls beeinträchtigt wird. 

 

Leider kann ich nicht sagen, ob ich so tiefe Konfigurationsmöglichkeiten bei einem Bekannten und QNAP OS gesehen habe, aber bei unRAID sind die Einstellungsmöglichkeiten schon enorm.

Link to comment
1 hour ago, Tiras said:

Ich habe nun alle VMs gestartet und der Workstation zusätzlich alle Kerne zugewiesen und ich muss sagen, dass Visual Studio sich nicht mehr aufhängt beim Check In von Änderungen im Repository.

Manche haben weniger Probleme, wenn die VMs die Kerne 1 bis 4 bekommen und unRAID 5 und 6. Daher wollte ich, dass du das testest. Eventuell solltest du das umdrehen. Hatte ich von hier:

https://forums.unraid.net/topic/102962-windows-10-vm-stutter-lag-issues/?tab=comments#comment-951725

 

Was ist mit Powersave? Darauf hattest du nicht geantwortet.

 

Die VMDisk Größe hatte ich damals nur moniert, weil du unnötig deinen Cache vollballerst, aber das hat nichts mit dem Ruckeln zu tun.

 

Hast du eigentlich auch die Kerne der VMs isoliert? Also nicht nur im Template ausgewählt, sondern in den VM Settings auch dafür gesorgt, dass unRAID die nicht nutzen darf? Das war hier mit ein Grund:

https://forums.unraid.net/topic/86502-win-10-vfio-vm-videohdmi-audio-stuttering-amd-ryzen-3000x570/?tab=comments#comment-812639

 

Und wie gesagt denk über einen USB LAN Adapter für die Workstation nach. Der ist günstig und entlastet die CPU. Würde ich einfach mitnehmen.

 

Link to comment
53 minutes ago, mgutt said:

Manche haben weniger Probleme, wenn die VMs die Kerne 1 bis 4 bekommen und unRAID 5 und 6. Daher wollte ich, dass du das testest. Eventuell solltest du das umdrehen. 

Auf dem Screenshot sieht man, dass der VM die Kerne 2-11 zugewiesen sind, oder was genau meinst du mit Kerne 1-4?

 

1 hour ago, mgutt said:

Was ist mit Powersave? Darauf hattest du nicht geantwortet.

Der Schnellstart in der VM ist deaktiviert und der Energiesparplan ist auf "Hochleistung" eingestellt.

 

1 hour ago, mgutt said:

Hast du eigentlich auch die Kerne der VMs isoliert? Also nicht nur im Template ausgewählt, sondern in den VM Settings auch dafür gesorgt, dass unRAID die nicht nutzen darf? Das war hier mit ein Grund:

https://forums.unraid.net/topic/86502-win-10-vfio-vm-videohdmi-audio-stuttering-amd-ryzen-3000x570/?tab=comments#comment-812639

Sorry, jetzt bin ich raus. So Einstellungen habe ich nicht gemacht. Ich habe lediglich die VM erstellt, die Cores angegeben, die Image größe festgelegt, die iso und die virtio treiber eingebunden und das wars auch schon. Das man weitere Einstellungen vornehmen muss, damit die VM evtl. performant läuft, finde ich für einen Anwender der sich evtl. nicht damit auskennt etwas to much.

Ich habe hier noch eine PCIe x1 Netzwerkkarte liegen, aber das wird nicht funktionierten, da die VM in der AD ist. Und rein theoretisch gedacht, würde ein WLAN Adapter zwar die Verarbeitung übernehmen aber trotzdem via USB über die South-Bridge und demnach über die CPU gehen. Du hast wahrscheinlich recht, dass das Ausmaß nicht so hoch ist, aber dennoch den gleichen Effekt hat. Vielleicht irre ich mich auch.

Link to comment
1 hour ago, Tiras said:

Auf dem Screenshot sieht man, dass der VM die Kerne 2-11 zugewiesen sind, oder was genau meinst du mit Kerne 1-4?

Ich habe jetzt "normal" durchgezählt. Bezogen auf deinen Screenshot also die Kernpaare 0/6 1/7 2/8 3/9.

 

1 hour ago, Tiras said:

Der Schnellstart in der VM ist deaktiviert und der Energiesparplan ist auf "Hochleistung" eingestellt

Ich sprach von unRAID. Dort kann man mit dem Tips und Tweaks Plugin die CPU in Powersave versetzen und das führt dann gerne mal zu Ruckeln.

 

1 hour ago, Tiras said:

Das man weitere Einstellungen vornehmen muss, damit die VM evtl. performant läuft, finde ich für einen Anwender der sich evtl. nicht damit auskennt etwas to much

In der Virtualisierung ist die Kern-Isolierung bei latenzkritischen Anwendungen das A und O. Es ist daher kein Muss für jede VM, aber deine Anwendung "Workstation" ist latenzkritisch und mit deiner aktuellen Einstellung, die übrigens nicht dem Standard entspricht, hast du das Problem verursacht oder zumindest vergrößert.

 

Standardmäßig werden bei VMs nämlich alle Kerne ausgewählt und du hast diese Einstellung verändert ohne dich darüber zu informieren was daraus resultiert. Zugegeben könnte man Anfängern hier Warnungen anzeigen. Ich werde das als Verbesserungsvorschlag einreichen.

 

Jedenfalls hast du der VM gesagt, dass sie nur Kerne C bis F nehmen darf, obwohl mangels Isolation unRAID / Qemu diese ebenfalls nutzen dürfen. Während also die CPU die Prozesse sauber je nach Auslastung auf alle Kerne verteilt, ist da ein Prozess, nämlich deine VM, die das nicht einsieht. Die nutzt zB Kern C, obwohl da gerade ein unRAID Prozess zugeordnet wurde und Kern A aktuell der mit der geringsten Last ist und er da eigentlich besser aufgehoben wäre. Bedenke: Nicht das Betriebssystem, sondern die CPU entscheidet welcher Prozess von welchem Kern verarbeitet werden soll und selbst ein gerade laufender Prozess "springt" ständig zwischen den Kernen.

 

Daher musst du unRAID die 4 Kernpaare verbieten, die deine Workstation exklusiv nutzen können soll.

 

In den Einstellungen beim CPU Pinning / Isolation wird auch explizit darauf hingewiesen:

Quote

CPU isolation allows the user to specify CPU cores that are to be explicitly reserved for assignment (to VMs or Docker containers).

 

This is incredibly important for gaming VMs to run smoothly because even if you manually pin your Docker containers to not overlap with your gaming VM, the host OS can still utilize those same cores as the guest VM needs for things like returning responses for the webGui, running a parity check, btrfs operations, etc.

Allerdings werden deine anderen VMs wie gehabt sauber "reingrätschen", denn die nutzen ja ebenfalls die Workstation Kerne. Perfekt kann das daher nicht werden. Mein Vorschlag wäre daher, dass man gar keine Kerne isoliert und allen VMs alle Kerne zuweist und der CPU die Verteilung überlässt. Oder man probiert es erstmal mit der Isolation, ob die anderen VMs gar nicht so viel Last verursachen.

 

Trial & Error gehört eben dazu, wenn man keine "Nobrainer-Hardware" verwendet. Ich würde dir zb zu einem i9-10600 raten, wo die Kerne exklusiv in 2/4/4 für unRAID/Workstation/Sonstige VMs aufgeteilt wird.

 

Es kann übrigens gut sein, dass das in Hyper V nicht notwendig ist. QEMU ist eben Open Source und besitzt gar nicht den finanziellen Hintergrund wie Microsoft. Daher können hier durchaus andere Vorgehensweisen besser sein.

 

1 hour ago, Tiras said:

Und rein theoretisch gedacht, würde ein WLAN Adapter zwar die Verarbeitung übernehmen aber trotzdem via USB über die South-Bridge und demnach über die CPU gehen

Was immer noch 10x weniger Last bedeutet als die vollständige Virtualisierung einer Netzwerkkarte. Und ich habe nichts von WLAN geschrieben, sondern LAN. Mit WLAN holst du dir nur die nächste Latenz-Schwäche ins Boot.

 

1 hour ago, Tiras said:

Vielleicht irre ich mich auch.

Ja tust du und du solltest dir Tipps von jemanden zu Herzen nehmen, der hier jeden Tag Fragen beantwortet.

 

1 hour ago, Tiras said:

aber das wird nicht funktionierten, da die VM in der AD ist

Active Directory?! Ich verstehe nicht warum hier eine Hürde existieren sollte.

Link to comment
On 7/25/2021 at 10:49 AM, mgutt said:

Ja tust du und du solltest dir Tipps von jemanden zu Herzen nehmen, der hier jeden Tag Fragen beantwortet.

Ich nehme mir eure (vor allem deine) Ratschläge zu Herzen. unRAID ist Neuland für mich und von daher vertraue ich auf die Erfahrung und den Aussagen von Erfahrenen Anwendern.

 

Offene Fragen:

  • Wenn ich eine VM erstelle und dort keine CPUs auswähle, dann werden immer alle CPUs verwendet?
  • Welchen Maschinentyp sollte man am Besten auswählen?
  • Welches BIOS würdet ihr empfehlen?
  • Die Leistung kann verbessert werden, wenn das Images der VM auf einer HDD im Array liegt, aber der Share ein (SSD) Cache mit "Prefer" hat?
  • Wenn ich diesem Share ein (SSD) Cache zuweise, muss in der VM für das Image der Pfad zu dem Cache oder zu dem Share angegeben werden?
  • Welchen Unterschied und Vorteil hätte ich bei einem Disk- Share?

Viele Grüße

Link to comment
55 minutes ago, Tiras said:

Wenn ich eine VM erstelle und dort keine CPUs auswähle, dann werden immer alle CPUs verwendet?

Nein, du wählst alle aus. Wie gesagt gibt es zwei Möglichkeiten:

a) Man wählt alle aus und überlasst der CPU wie die Prozesse auf die Kerne verteilt werden

b) Man wählt bestimmte aus, und isoliert sie vollständig über Settings > CPU Pinning > CPU Isolation

 

Alle anderen Methoden bedeuten, dass Kerne von verschiedenen Prozessen überlappen und das ist eben nicht gut für latenzkritische Anwendungen wie zB das Bewegen von Fenstern in einem Betriebssystem, denn das was die CPU in dem Fall berechnen muss ist ja die Bewegung des Fensters, auch wenn das wenig anspruchsvoll ist, muss es trotzdem ohne Latenz berechnet werden können.

 

59 minutes ago, Tiras said:

Welchen Maschinentyp sollte man am Besten auswählen?

Da bin ich raus, aber ich denke die Templates sind da schon gut gewählt worden.

 

1 hour ago, Tiras said:

Die Leistung kann verbessert werden, wenn das Images der VM auf einer HDD im Array liegt, aber der Share ein (SSD) Cache mit "Prefer" hat?

Ja und nein. Du verstehst scheinbar noch nicht wie der Cache funktioniert:

https://forums.unraid.net/topic/99393-häufig-gestellte-fragen/?tab=comments#comment-951565

 

Also ja, der Share wird natürlich einer HDD im Array zugewiesen, aber nein, die VM Disk Datei darf auf keinen Fall auf einer HDD liegen. Die muss über "Prefer" auf den SSD Cache erzwungen werden (was durch Prefer automatisch passiert). Schlussfolgerung: Bei Prefer landen niemals Dateien auf der HDD im Array (nur in dem unwahrscheinlichen Fall, dass die SSD voll ist).

 

1 hour ago, Tiras said:

Wenn ich diesem Share ein (SSD) Cache zuweise, muss in der VM für das Image der Pfad zu dem Cache oder zu dem Share angegeben werden?

Das ist in dem Fall ausnahmsweise egal, denn die Entwickler von Unraid haben erkannt wie lahm der Pfad "/mnt/user" ist und "überschreiben" den automatisch gegen "/mnt/cache", wenn die VM gestartet wird. Davon sieht der Nutzer aber nichts. Im Template steht weiterhin "/mnt/user". Du kannst natürlich selbst auch direkt "/mnt/cache" hinterlegen. Ich habe das quasi überall, wo ich die beste Performance haben möchte. Beispiele:
 

Docker

image.png.5bb1e26f178a53032bacf5bc0ea46636.png

 

VM (ISOs werden nicht beschrieben, daher ist der iso Share bei mir auf Cache "Yes", also auf der HDD):

image.png.5893735f9db4ce10d9a4cea4726009a3.png

 

Sieht man auch bei meiner VM:

image.png.e9380b08f3f46e1fb810c3b2998434e9.png

 

Und bei Containern mache ich das natürlich auch so:

image.png.10243719fa92af4ef582e97bc4e696ea.png

 

Man muss aber beachten, dass sobald man den Cache mal kurz ausbaut / austauscht / aufrüstet etc, dass man niemals VM oder Docker starten darf, denn die finden dann im Pfad /mnt/cache ja keine Dateien mehr. Auch darf man nicht vergessen, dass Docker Container abstürzen können, wenn die SSD voll werden sollte, daher muss man einen Min Free Space auf dem Cache festlegen.

 

1 hour ago, Tiras said:

Welchen Unterschied und Vorteil hätte ich bei einem Disk- Share?

Die Frage verstehe ich nicht, aber ich denke das resultiert aus dem "wie funktioniert das mit dem Cache". Also lies noch mal wie der Cache funktioniert, dann wird die Frage denke ich beantwortet.

Link to comment

Also vielen Dank mgutt für deine Hilfe und Geduld. 

Ich habe jetzt folgendes gemacht:

image.thumb.png.02c0f5563d3c9b3c8ac2daff92bb6323.png

 

Hast du eine Idee, wieso ich nur 11 von 12 Cores isolieren kann? Wenn ich 0/6 auch hinzufügen will, dann geht entweder nur 0 oder 6.

Bei dieser Konfiguration ist die Performance der Workstation deutlich besser. Visual Studio wird schneller ausgeführt und auch die Aktionen für Repositories sind deutlich besser.

 

Mir ist jedoch aufgefallen, dass bei einer Datenübertragung mit Krusader die Bandbreite bei knapp 400 MB/s beträgt, obwohl es sich um eine HDD handelt, auf die geschrieben wird und nach kurzer Zeit auf knapp 10 MB/s runter geht. Nach einer weiteren kurzen Zeit geht sie wieder hoch und dann wieder runter. Woran liegt das?

 

Die Funktion des Caches habe ich nun so verstanden:

Je nach Einstellung im Share werden die Dateien zwischen dem Cache und Disk geschoben/synchronisiert etc. Ist im Share "JA" eingestellt, dann werden die Dateien aus dem Cache auf die HDD geschoben und befinden sich dann nicht mehr im Cache. Wird im Share "Prefer" eingestellt, dann werden die Dateien zwar auf die HDD geschoben, aber bleiben weiterhin auf dem Cache. Wenn ich nun die Images meiner Virtualisierungen auf der HDD speichere und anschließend einen Cache als "Prefer" angeben, dann den Mover ausführe, werden sämtliche Images auf den Cache kopiert. Die Images aus dem Cache werden dann mit der HDD nach dem Zeitplan des Movers synchronisiert.

 

Habe ich das so richtig verstanden?

Link to comment
1 hour ago, Tiras said:

Mir ist jedoch aufgefallen, dass bei einer Datenübertragung mit Krusader die Bandbreite bei knapp 400 MB/s beträgt, obwohl es sich um eine HDD handelt, auf die geschrieben wird und nach kurzer Zeit auf knapp 10 MB/s runter geht. Nach einer weiteren kurzen Zeit geht sie wieder hoch und dann wieder runter. Woran liegt das?

Ich tippe auf RAM-Caching. Das macht Linux automatisch. Solltest du im Dashboard sehen können. Wenn du das Kopieren startest passiert erst mal 30 Sekunden nichts und dann schreibt er erst auf die HDD. Beobachte das mal. Dann ist es RAM-Caching.

 

1 hour ago, Tiras said:

Wird im Share "Prefer" eingestellt, dann werden die Dateien zwar auf die HDD geschoben, aber bleiben weiterhin auf dem Cache.

Nein. Dateien können immer nur im Array oder Pool liegen. Niemals auf beiden parallel. Ist wirklich nur ein stupides Hin- und Herschieben. Bei Prefer werden sie also auf dem Cache erstellt und bleiben da. Liegen zufällig welche auf der HDD werden sie auf den Cache verschoben. Und VDisk Images sind bekanntlich eine große Datei. Änderungen darin bewegen sich nicht, sondern verbleiben da wo die Image Datei gerade liegt. Daher bei Bedarf den VM Dienst beenden und den Mover starten, damit er die gesamte Image Datei auf den Cache verschieben kann (Dateien, die gerade in Nutzung sind, kann der Mover nicht bewegen). Jetzt weißt du auch warum man zwei SSDs im RAID1 im Pool haben sollte, denn sonst sind alle Dateien verloren, wenn eine einzelne SSD kaputt geht.

 

 

Link to comment
  • 2 weeks later...

Ich bin jetzt soweit, dass alle Daten im Pool liegen und die VMs sind neu konfiguriert. In der Einstellung CPU Pinning habe ich mal etwas gespielt.

Z.B. habe ich nur die Kerne 4/10 und 5/11 isoliert und dieser der Workstation zugewiesen.

Die restlichen Kerne habe ich in den anderen VMs verteilt. Als ich nun - bis auf die Workstation - alle VMs gestartet habe, schlug die Auslastung - bis auf die Kerne 4/10 und 5/11 - sämtlicher Kerne aus. 

Anschließend habe ich die Workstation gestartet und die Performance war zwar besser als zuvor, aber nicht so, wie man es von einer Maschine mit 8 GB und 4 Kernen gewohnt ist.

 

Sobald ich jedoch weitere Kerne isoliere - von 1/7 bis 5/11 - und die isolierten Kerne auf alle VMs verteile, dann ist nur die Performance der Workstation schlecht. Alle anderen VMs laufen wirklich gut.

 

@mgutt Du hattest den Tipp gegeben, in der Workstation eine Netzwerkkarte durchzuschleifen, sei es USB oder nicht. Da ich noch eine PCIe x1 Netzwerkkarte habe, dachte ich mir diese wieder in den Server einzubauen, um sie dann nur für die VMs zu nutzen. 

So stelle ich mir die Konfiguration dieses Netzwerkadapters vor:

  • Active Directory mit DNS Service (1.1.1.1)
  • MS SQL (1.1.1.2)
  • Dynamics CRM (1.1.1.3)
  • SSRS (1.1.1.4)
  • TFS (1.1.1.5)
  • Workstation (1.1.1.6)

Der Netzwerkadapter soll ausschließlich für die Kommunikation in der Domain dienen. Die VMs bekommen aber noch eine Netzwerkkarte zugewiesen, damit sie auch Internetzugriff für Updates haben. Das würde ich evtl. auch noch ändern, indem ich einen WSUS Server installiere und die VMs von diesem die Updates beziehen, aber dazu muss neuer Arbeitsspeicher her. Der Arbeitsspeicher, den ich hier noch liegen habe funktioniert zwar, aber man kann kein XMPProfil aktivieren, da er nicht kompatible ist.

 

Meine Frage ist, ich hatte die Netzwerkkarte schon einmal im Unraid verbaut und eine statische IP festgelegt. In der Netzwerk.cfg ist sie noch enthalten. Wie bekomme ich sie dort wieder raus ohne das meine aktuelle Netzwerkkonfiguration verloren geht?

Kann ich die Netzwerkkarte in den VMs nutzen auch wenn kein Netzwerkkabel angeschlossen ist?

Was kann ich noch machen, damit ich Kerne mehreren VMs zuweisen kann und die Performance nicht beeinträchtigt wird?

Edited by Tiras
Link to comment
5 hours ago, Tiras said:

In der Netzwerk.cfg ist sie noch enthalten. Wie bekomme ich sie dort wieder raus ohne das meine aktuelle Netzwerkkonfiguration verloren geht?

In der network.cfg oder network-rules.cfg? Die network.cfg bezieht sich ja nicht auf bestimmte Adapter, sondern nummeriert nur einfach durch (0 = eth0, 1 = eth1, ...). Die network-rules.cfg enthält wiederum alle Adapter mit der eth0, eth1, ... Bezeichnung, wobei da deiner nicht mehr drin sein sollte, wenn du die Karte ausgebaut hast. Beim Booten wird die nämlich meine ich neu angelegt, wenn sich die Hardware ändert.

 

Einfach mal ein Backup vom Stick machen, schadet natürlich nicht 😉

 

5 hours ago, Tiras said:

Was kann ich noch machen, damit ich Kerne mehreren VMs zuweisen kann und die Performance nicht beeinträchtigt wird?

Es gibt ja nur die Optionen:

  1. Kerne
  2. GPU
  3. Netzwerk
  4. Datenträger

Nachdem das mit den Kernen keine nenneswerten Früchte trägt, ist die Frage was eine GPU bringen würde. Also eine kleine GPU wie eine GT1030 oder GT710. Das Problem ist ja, dass wirklich alles deiner Workstation erst mal durch die CPU muss. Also selbst der popelige Desktop wird grafisch von deiner CPU berechnet, was normalerweise die GPU übernimmt:

1556463641_2021-08-1113_01_08.png.158c100785cfcb714d59ee96f1b9f7f8.png

 

Und dass das Latenzen / Ruckeln verursacht, kann ich mir gut vorstellen.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.