Fix for Windows 10, 11 virtual machine slowness on VirtualBox

I’ve been using Oracle VirtualBox for last many years and ever since I moved to Windows 10, experienced some unexplainable stuttering and lags with Windows 10, 11 virtual machines. I think finally I made a breakthrough for myself. I am not sure whether this approach is helpful for everyone as virtual machines behave differently on different hardware setups. I’ve gone through many VirtualBox forum posts discussing issues with same nature, particularly with NVidia graphic chips/cards & all my boxes have NVidia graphic chips or cards.

My work laptop configuration.

and has one NVMe ssd for the OS and 2TB SSD for data on which I have all my virtual machines. Regardless, with the amount of hardware resources, my Windows 10 virtual machine stuttered, and the experience was horrible, compared to the Windows XP VM that I had. I never had issues with Linux VMs either. I tried almost every trick in the book and always ended with gaining very little.

Couple of weeks back, for one of the Oracle labs exercises I started the Windows 10 VM and for some unknown reasons found the virtual machine was not automatically resizing display. I managed to fix this problem earlier by changing the graphics controller from VBoxSVGA to VBoxVGA, force auto resize & switching graphics controller back to VBoxSVGA. For that exercise I disabled the 3D acceleration, basically landing on a solution unknowingly. I repeated the same exercise and found my Windows 10 virtual machine snappier than ever! To confirm, I switched back to 3D acceleration & managed to reproduce the same choppy, stuttering experience with the same virtual machine once again.

Let us see what happens with we enable 3D acceleration for the graphics controller.

VirtuaBox allows a maximum of 256MB memory for Video & check the below image to see what happens when we enable 3D acceleration.

half of the video memory is consumed by the 3D acceleration! OS like Windows 10, 11 have pretty heavy graphic elements and obviously the limited video memory makes the OS stuttering and lagging whole the way (or this is what I assume from my experiments).

As I mentioned in the beginning, disabling the 3D acceleration works for me on three different machines & different Windows OS virtual machines. Hope this helps few others out there.

How to hide Powershell background window

I’ve changed from Windows batch files to Powershell for almost every other repeated tasks & one of the scripts that I use to connect to our IKEv2 VPN script has a shortcut on my desktop. This script helps me to connect and disconnect from the VPN network just by double clicking the shortcut. You can checkout the script here

I had multiple iterations for the script and kept on deleting and recreating the shortcut and noticed that a black window started appearing when I executed script from the shortcut.

All I could remember was, not changing any settings for the Powershell & couldn’t find a “solution” (that was mere eyesore to my rigid expectations). Interestingly, my semi desktop/server class box didn’t have this “issue”, whenever I executed the script from the shortcut, all I was provided was the “Connected” or “Disconnected” message boxes.

After sometime, I decided to check the shortcut properties on my desktop & noticed that the “Run” option was selected as “Minimized”

Powershell provides many switches & one of the switches is “WindowStyle” that supports Normal, Minimized, Maximized and Hidden styles for the Window. Well, the style “Minimized” just hid the entire window, including the message popups that had prompts.

Quickly I moved to my laptop and changed the Run to “Minimized” and that was it. No more annoying black window behind my script message boxes! No more script outputs shown on the screen. So, if you reached here seeking a how to hide those annoying black windows, give this a try.