VMware虚拟机在后台运行时性能下降
本文最后更新于:2024年7月16日 下午
前情提要
众所周知,World needs Windows
. But Linux
even matters. (Especially for developers)
鱼和熊掌能否兼得,也许可以小火慢煎
有的同学要说了:WSL!
WSL(Windows Subsystem for Linux)
,一听名字就感觉性能爆表
但是如果需要图形界面的话,WSL貌似不是特别方便
此时就需要经典虚拟机出场了,like VMware
主诉(性能下降)
一个经典的方案是:VSCode(Remote SSH)+ VMWare(Ubuntu)
我从没有发现其性能不佳,直到我开始怀念RustRover (Jetbrains)
,但被Jetbrains Gateway
的远程开发体验击溃后,我在虚拟机里安装了Jetbrains for Linux
1 |
|
看着缩短了5倍的编译时长,我陷入了沉思
都是Terminal
,都是fish
,难不成Jetbrains
有魔法,还是Remote SSH
有大坑
// 经测试:原生终端和Jetbrains
终端性能一致 啊哈哈(尬)
我不经脊背发凉,没有了VSCode Remote SSH
,我很难想象出一个替代方案进行远程开发
为此,我请到了著名Linux
专家 - 侯同学,为大家进行WSL + Remote SSH
的测试
Result:WSL
原生终端与Remote SSH
终端性能并无二异
看来VSCode
不背这个锅,呼呼呼
先做个检查吧
盯——(望闻问切)
好的,请问,Jetbrains
终端和VSCode Remote SSH
终端有什么不同
即答:后者是Windows物理机应用,此时,虚拟机运行于后台
这点其实非常重要,后台进程的优先级显然是低于前台的,(被调度到小核上之类的,CPU片减少之类的)
切片(Test)
Okay,我们在Remote SSH终端中输入cargo build
,然后回到虚拟机,使其时刻保持在前台
Result:编译时长大大缩短,与原生终端无异
破案
正如我们所猜想的,在后台时,进程优先级下降,导致性能下降(5倍)
药方
能否设置虚拟机的进程优先级呢?答案是(薛定谔的)
我们可以看到,右侧可以设置两种情况下的优先级:
- 抓取的输入内容
- 取消抓取的输入内容
好的,作为一个the local,我只能告诉你,我每个字都看得懂,But…
好吧,我们还是看看官方文档吧:
这个就好理解多了
I Guess:
- 已抓取输入时:前台,获取焦点时
- 未抓取输入时:后台,无焦点时
前者默认是正常,设置为高后,前台使用虚拟机的性能会提升
But,后者居然无法设置为高!
只有,正常和低两个选项,寄
// 可能是为了不抢占物理机,但是居然不给个选项
有办法吗?也许可以强制设置进程优先级(Windows API)
参见:还在为大小核调度困扰?教你如何优化性能! - 哔哩哔哩 (bilibili.com)
あの,我还是用Linux Jetbrains
吧,(孩子们,我回来了)