如果我仅将 WSL1 与 WSL2 用于 SSH 连接,它们会有什么区别?

如果我仅将 WSL1 与 WSL2 用于 SSH 连接,它们会有什么区别?

我为自己懒惰而道歉 —— 如果我的目标只是通过 SSH 远程访问其他服务器,那么从 WSL1 升级到 WSL2 会对性能产生影响吗?

两个主要用例:

  1. 通过反向隧道,将远程端口公开到本地计算机以供浏览器访问(想想 Jupyternotebook 和托管 Django 网站);
  2. 直接通过 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。

相关内容