我为自己懒惰而道歉 —— 如果我的目标只是通过 SSH 远程访问其他服务器,那么从 WSL1 升级到 WSL2 会对性能产生影响吗?
两个主要用例:
- 通过反向隧道,将远程端口公开到本地计算机以供浏览器访问(想想 Jupyternotebook 和托管 Django 网站);
- 直接通过 SSH(在 Windows 终端中),使用 Tmux + 一些编辑器来操作代码。
答案1
这是一个很好的问题——老实说,我以前从未考虑过 WSL1 和 WSL2 之间的网络速度差异,而且我个人也没有这个必要。
答案显然是是的,WSL2 上的 SSH 连接似乎比 WSL1 中的连接快得多。
为了测试,我pv
在 WSL1 和 WSL2 实例中安装了:
yes | pv | ssh $host "cat > /dev/null"
主机是托管虚拟服务器。
- WSL1 的最佳情况是 34MiB/s,但在某些时候会下降到 27MiB/s
- WSL2 稳定运行 110-111MiB/s
updated
我在新安装的(和/ upgraded
)Ubuntu 20.04 实例上再次重复了测试,并wsl --set-version Ubuntu 1
在 WSL2 测试之后进行了测试。
那里的结果几乎相同,但 WSL1 保持在 27MiB/s 左右。WSL2 仍然保持在 111MiB/s。
只是为了好玩 (不是有效的比较),我运行了:
yes | pv | pwsh.exe -c "ssh $host 'cat > /dev/null'"
推动流量通过PowerShell 到 Windows SSH 客户端。当然,每次调用时都必须跨越 Windows 和 WSL 之间的进程边界,因此开销会大得多。结果是:
- WSL1 上大约 20MiB/s
- WSL2 上约 17MiB/s
这并不奇怪,因为 WSL1 比 WSL2 更接近 Windows API。
我实际上对 WSL1 和 WSl2 之间的主要区别感到有点惊讶。老实说,我原本以为 WSL1 会具有性能优势,因为它与 Windows 共享网络,而不是在虚拟化接口和交换机后面进行 NAT。