Zebrałem tu kilka porad dotyczących problemu niepełnego wykorzystania możliwości Intel Turbo Boost Technology 12-gen.+ podczas pracy VMWare Player w przypadku, gdy system wykorzystuje 1. nowoczesny tryb gotowości S0;   * 2. przypadek trybu S1..S3.   * + 08.05.2024 3. Spowolnione Visual Studio.

Jest sporo porad dla starszych trybów gotowości S3, gdzie trzeba skorzystać z przełączania wydajności w klasycznym panelu sterowania. Ale w przypadku nowoczesnego trybu S0 w klasycznym panelu mamy tylko jeden tryb: “Zrównoważony” i zmiana jego konfiguracji zaawansowanej (chyba) nic nie daje jak chodzi o wydajność. Dodatkowo są ostrzeżenia przed wymuszaniem starszych trybów S1..S3 na nowym sprzęcie. (To się daje zrobić, ale np. wtedy u mnie system nie wchodzi w tryb uśpienia)

1. Przypadek trybu S0

Sprawdzanie, czy w moim systemie działa tryb “S0 Low Power Idle”:

cmd:
powercfg /a

Dla trybu S0 dostajemy:

The following sleep states are available on this system:
    Standby (S0 Low Power Idle) Network Connected
    ...

Najważniejszą poradą w tym przypadku był dla mnie:

Poor VM performance on Core i9 CPU 12th gen:

1. cmd w trybie adm., czyli cmd [Ctrl + + ], tj. cmd [Ctrl + ⇧ Shift + ↵ Enter]

powercfg /powerthrottling disable /path "C:\Program Files (x86)\VMware\VMware Player\x64\vmware-vmx.exe"
  • To polecenie wyłącza obniżanie taktowania dla “vmware-vmx.exe”. Przy pracy na zasilaczu powinno to być wyłączane na skutek wybrania opcji w nowym panelu ustawień Win 11:
    [⊞ Win + i] \ System \ Zasilanie i bateria \ Tryb zasilania \ Najwyższa wydajność.
    Ale z jakiegoś powodu Windows chce uruchamiać wirtualne procesory maszyn wirtualnych na rdzeniach E-Cores, a nie P-Cores:
    • P-cores (Performance-cores) są podobne do tradycyjnych projektów procesorów, z dużą prędkością zegara i możliwościami Hyper-Threading,
    • E-cores (Efficient-cores) są mniejsze i zużywają znacznie mniej energii.

Przy takiej konfiguracji WMware zaczyna wydajnie (i elastycznie!) wykorzystywać rdzenie P. Mój procesor ma 2 rdzenie P i 8 rdzeni E. Mam wrażenie, że udostępnianie systemowi gościa więcej niż 2 procesorów nic u mnie nie daje. Również porady, aby przydzielać jak najwięcej RAMu u mnie się nie sprawdzają. Dużo RAMu powyżej optymalnej wartości nie tylko nic się nie poprawia, ale wręcz daje pogorszenie wydajności (nie rozumiem dlaczego).

  • Zawsze można sprawdzić stan: powercfg /powerthrottling list

2. Znaczące przyśpieszenie daje też wyłączenie korzystania z technologii Hyper-V przez Windows w celu wymuszenia użycia hipernadzorcy VMware, a nie Hyper-V:

Upewnij się, że wszystko, co związane z Hyper-V jest odinstalowane w systemie Windows - “funkcje systemu Windows”
▢ Microsoft Defender Application Guard
▢ Hyper-V
▢ Platforma funkcji Hypervisor systemu Windows
▢ Platforma maszyny wirtualnej
(restart)

Są porady dotyczące wyłączenia ustawienia integralności pamięci
Windows Security -> Device Security -> Core Isolation then turn off the “Memory Integrity”
(+restart) Choć może to dotyczyć raczej słabszych komputerów

Dodatkowo cmd [Ctrl + + ]:

bcdedit /set hypervisorlaunchtype off
            (+restart)

To, że funkcje Hyper-V nie są zainstalowane, nie oznacza, że Windows ich nie używa. Jeśli spojrzysz na plik vmware.log generowany w folderze zawierającym wszystkie pliki w maszynie wirtualnej, poszukaj wiersza Monitor Mode:. Jeśli jest to
vmx Monitor Mode: ULM,
to nadal używany jest Hyper-V, a nie hipernadzorca VMware. Powinno być
vmx Monitor Mode: CPL0

Sprawdź też, że w BIOS włączona jest wirtualizacja. W Win11:

  • Wydajność = [Ctrl + + Esc] \ wydajność \ wirtualizacja: włączone!

Zob. też

Konfiguracja VMWare Player

Można napotkać problem podczas uruchamiania maszyny wirtualnej z systemem Windows 11 w programie VMWare Player w trybie UML. Pojawia się ostrzeżenie o potencjalnym spadku wydajności podczas korzystania z maszyny wirtualnej z “side-channel mitigations”. W pliku konfiguracji <maszyna>.vmx - dodaj wiersz: ulm.disableMitigations="TRUE"

Usprawnienia:

  • Wyłączenie VM-Display-3D; VMware jako gra, a może wył. trybu gry hosta (podobno można sprawdzić, czy to coś daje - u mnie nie widać różnic).
  • Defragmentacja VMWare - w opcjach maszyny w VMware (nie w systemie gościa).
  • Wykluczenie z antywirusa przeszukiwania VM folderu z plikami maszyny gościa.
  • Wył. CD-ROM, wył. A:
  • Enter Full Scr. on start

2. Przypadek trybu S1..S3

cmd:
powercfg /a
The following sleep states are available on this system:
    Standby (S3)
    ...

Tu jest sporo porad, które sprowadzają się do wybru trybu zasilania “najwyższa wydajność” w klasycznym panelu sterowania: Sprzęt i dźwięk \ Opcje zasilania.
Jeśli tego trybu nie widać, to można go włączyć poleceniem

cmd:
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

Nie trzeba uruchamiać cmd w trybie administratora. Zmiana jest od razu widoczna w klasycznym panelu sterowania \ Sprzęt i dźwięk \ Opcje zasilania.
Widać też (nieaktywny w tym momencie) tryb normalny, który można kliknąć w przyszłości.

Po zapamiętaniu GUID trybu normalnego: powercfg /getactivescheme
można zrobić sobie skróty przełączające tryby na pulpicie.

3. Spowolnione Visual Studio

Niekiedy powodem użycia systemu wirtualnego jest potrzeba pracy w izolowanym od sieci środowisku. Wtedy wybieram opcję sieciową “Host only” i wymieniam dane poprzez “Shared folders” udostępniając folder hosta.
Można by też włączyć dla systemu gościa kartę sieciową i widzieć jego udostępnione foldery na hoście Windows. I tu może nas spotkać bardzo nieprzyjemne zaskoczenie. Aplikacje jak np. Visual Studio potrafią wtedy zamrażać się po starcie, czy po powrocie z debugowania na kilkanaście sekund (to zapewne nieudane próby nawiązania połączenia sieciowego) i ogólnie doznają znaczącego spowolnienia - nie wiem czy w każdym przypadku.

VM_Net_conf.png W takim wypadku może pomóc wyłączenie wirtualnych kart sieciowych w konfiguracji sprzętu gościa, a może alternatywnie też wyłączenie sieci w panelu sterowania systemu gościa - zob. https://stackoverflow.com/questions/31383348/how-is-visual-studio-performance-linked-to-enable-disable-network-connection

Uruchom: ncpa.cpl aby szybko otworzyć “Panel sterowania (klasyczny) \ Sieć i Internet \ Połączenia sieciowe”

Przy takiej konfiguracji sieci w systemie gościa, nadal działają “Shared folders”.

Bez_kart_sieci.png

4. Koligacja procesorów

VMware-wmx_koligacje.png Może można próbować przypisać procesory P do vmware-vmx.exe. Ale u mnie nie widać zmiany wydajności (przy war. jak w p.1).

Można też jakoś na trwałe przypisać rdzenie:

ale mi się to nie udaje.

Np. przy

cmd /c START "" /HIGH /AFFINITY 03 "xyz.vmx"

maszyna wirtualna xyz.vmx, tj. vmware-vmx.exe bierze wszystkie rdzenie.

Polecenie poniżej otwiera co prawda vmplayer.exe z przypisaniem do rdzeni 1 i 2, ale nadal maszyna wirtualna xyz.vmx bierze wszystkie rdzenie:

cmd /c START "" /HIGH /AFFINITY 03 "C:\Program Files (x86)\VMware\VMware Player\vmplayer.exe" "xyz.vmx"