How to Limit WSL2 Resource Usage with .wslconfig
The WSL2 virtual machine (Vmmem process) can consume a significant amount of system memory and CPU. You can set resource limits by…
My Lenovo ThinkPad T15g Gen 2 becomes almost unusable when connecting an external 4K monitor after the laptop has already booted. The cursor stutters, windows take seconds to respond, and the entire experience becomes a slideshow. Strangely, the same setup works perfectly when the monitor is connected before powering on the machine.
This is most likely a fundamental limitation of how hybrid graphics systems handle display routing when the topology changes at runtime.
The issue follows a specific pattern:
So basically any scenario where Windows must reconfigure display routing between Intel and NVIDIA GPUs while the system is running.
Modern ThinkPads ship with two graphics processors:
This configuration, marketed as Optimus or Hybrid Graphics, promises the best of both worlds. In practice, it creates a complex display routing challenge.
In hybrid mode, every pixel takes a journey:
NVIDIA GPU → Renders frame
↓
Intel GPU → Receives frame buffer
↓
Display Output → Your monitor
This works when the display configuration is static. It falls apart during runtime changes because:
When you boot with a monitor attached, Windows establishes the display topology once. Resources are allocated, rendering contexts are created, and both GPUs know their roles.
When you connect a monitor to a running system, Windows must perform this entire configuration live. The Intel and NVIDIA drivers attempt to coordinate this handoff, but the Windows Display Driver Model (WDDM) wasn't designed for seamless runtime GPU switching with external displays.
As a result, every single frame must be copied between GPU memory spaces, introducing massive latency. Your powerful RTX 3080 renders at full speed, but those frames get stuck in a traffic jam traveling through the Intel GPU to reach your monitor.
Closing the laptop lid makes things worse. Windows interprets this as "make the external display primary," triggering another complete display topology rebuild. The lag persists because the fundamental routing problem remains—all external display data still travels through both GPUs.
The most reliable fix eliminates the problem entirely by using only the NVIDIA GPU.
How to enable:
Results:
Trade-offs:
This is the recommended solution for users who primarily work at a desk.
For users who don't need GPU acceleration, running purely on Intel graphics also solves the lag—no second GPU means no coordination problems.
Works well for:
Cannot handle:
How to enable:
Battery life extends beyond 10 hours, and the system runs silent and cool.
For users who need both battery life and GPU power at different times, manual switching is the way to go:
# Save as Toggle-GPU.ps1, run as Administrator
param([Parameter(Mandatory=$true)][ValidateSet("Intel","NVIDIA")][string]$Mode)
if ($Mode -eq "Intel") {
Get-PnpDevice | Where-Object {$_.FriendlyName -like "*NVIDIA*"} |
Disable-PnpDevice -Confirm:$false
Write-Host "Switched to Intel graphics only"
} else {
Get-PnpDevice | Where-Object {$_.FriendlyName -like "*NVIDIA*"} |
Enable-PnpDevice -Confirm:$false
Write-Host "NVIDIA GPU enabled"
}
You can also assign specific applications to specific GPUs:
This helps with application performance but doesn't solve the external monitor routing issue.
Give Vroni a GitHub issue, bug report, spec, or rough idea. It reads the repo, plans the change, writes code, runs checks, and works toward a review-ready pull request.
Take a look at vroni.com