WSL运行X11服务器(VcXsrv)速度慢有哪些可行的优化解决办法?
WSL运行C++ GUI程序卡顿优化方案
以下所有优化操作均可在WSL侧完成,无需额外调整Windows侧VcXsrv配置即可实现FPS提升:
- 升级到WSL2架构
如果当前使用WSL1,可在Windows管理员权限PowerShell执行wsl --set-version Ubuntu-20.04 2完成升级,WSL2的网络、IO、图形渲染性能相比WSL1有3~5倍提升,是优化的基础前提。 - 启用系统自带WSLg组件(性能提升最明显)
Win10 21H2及以上版本默认集成WSLg组件,无需第三方X Server即可实现硬件加速的GUI渲染,性能接近原生Windows程序。操作步骤:- 升级Windows侧显卡驱动到官方最新版本,支持WSLGPU加速特性
- 在Windows用户根目录(路径为
C:\Users\你的用户名)创建.wslconfig文件,写入以下内容:
[wsl2] guiApplications=true memory=8GB # 可根据本机总内存调整,建议不小于总内存的1/4 processors=4 # 可根据本机CPU总核心数调整,建议不超过总核心数的1/2- 执行
wsl --shutdown重启WSL实例,进入WSL后删除原有手动配置的DISPLAY环境变量(可检查/.bashrc、/.zshrc等配置文件删除对应行) - 执行
sudo apt install mesa-utils安装显卡检测工具,运行glxinfo | grep "OpenGL renderer"验证,返回值显示宿主机显卡型号即说明硬件加速已生效,直接启动程序即可,FPS可达到原生60帧水平。
- 优化VcXsrv连接配置
如果暂不使用WSLg仍需保留VcXsrv,首先修改DISPLAY变量指向WSL2宿主机虚拟IP,避免环回网络带来的性能损耗,在~/.bashrc末尾添加以下内容:
执行export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0source ~/.bashrc生效后再启动GUI程序。 - 升级编译优化参数
原有编译命令仅开启基础Release优化,可添加CPU架构适配参数提升运行性能,替换原有cmake命令为:
重新编译后运行程序即可获得10%~20%的性能提升。cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=native -O3" .. - 调整OpenGL渲染参数
在~/.bashrc末尾添加以下配置,优化X11渲染表现:
执行export LIBGL_ALWAYS_INDIRECT=0 export QT_X11_NO_MITSHM=1source ~/.bashrc生效。
内容的提问来源于stack exchange,提问作者CRuizH
相关产品推荐
相关产品推荐

