Resource Pools richtig setzen
Ich habe ein Script geschrieben, das Resource Pools richtig setzt. Denn ich finde sie überall, und fast nie richtig konfiguriert.
Dieser Beitrag ist von 2019. Er bleibt online, weil er nach wie vor nachgefragt wird, beschreibt aber einen Produktstand von damals.
Über Ressourcen und Resource Pools ist viel geschrieben worden. Vor allem in den Deep-Dive-Büchern von Duncan Epping, Niels Hagoort und Frank Denneman sowie in zahlreichen Blogs von Chris Wahl und elastic sky.
Diesen Post widme ich den Resource Pools, weil ich sie immer noch überall finde, und meistens falsch konfiguriert.
Verwende Resource Pools nicht als Ordner
In der Ansicht «VMs and Templates» gibt es dafür ausgezeichnete Ordner. Wenn du Resource Pools als Ordner verwendest, holt dich das ein, sobald es zu Contention kommt.
Verwende nicht die Standard-Share-Werte «low», «normal» und «high»
Warum? Weil sie die Anzahl VMs oder Ressourcen darin nicht berücksichtigen. Ein Resource Pool ist dynamisch, also sollte es der Share-Wert dieses Pools auch sein.
Chris Wahl hat 2012 ein sehr schönes Bild dazu gepostet, warum man das nicht tun sollte, und es stimmt heute noch: https://wahlnetwork.com/2012/02/01/understanding-resource-pools-in-vmware-vsphere/
Wenn du Resource Pools verwendest, leg jede VM hinein
Leg keine VMs ausserhalb der Resource Pools ab, also in den «resources»-Pool. Was passiert dann? Diese VM wird zum Geschwister der anderen Resource Pools. Bei Contention bekäme sie also gleich viel Ressourcen wie ein Pool, in dem womöglich sehr viel mehr VMs liegen.
Und wie geht es richtig?
PowerCLI hilft. Diese Aufgabe schreit danach, automatisiert und regelmässig ausgeführt zu werden, damit deine Resource Pools immer sauber gesetzt sind. Nur so verhalten sie sich bei Contention auch wie erwartet.
Ich hatte schon früher ein Script, aber dank der Anregung aus diesem Post (https://www.elasticsky.de/en/2017/08/rebalance-your-resource-pools/) habe ich es mir noch einmal vorgenommen und erweitert.
Anzupassen sind die Zeilen 66 bis 69. Dort trägst du deine Resource Pools ein und legst fest, um welchen Faktor sich ihre Ressourcen unterscheiden:

Sonst musst du nichts anfassen. Ich habe eine Synopsis eingebaut, damit es leicht zu benutzen ist, und es gibt neben PowerCLI eine Abhängigkeit: PSLogging. Das ist ein Modul aus der PowerShell Gallery, das mir Logfiles erleichtert. Hier der Link dazu: https://www.powershellgallery.com/packages/PSLogging
Und zuletzt: Das Script liegt auf meinem GitHub. Direktlink zum Script. Verwendung auf eigenes Risiko. Testen kannst du es, indem du «Set-ResourcePool» mit dem Parameter -WhatIf aufrufst, siehe die Kommentare im Script.
Und verbessere es gerne. Wenn ich so darüber nachdenke, sollte am Ende noch ein Disconnect-VIServer stehen.