一直看到这样说法,就是 wsl 的跨文件系统访问很慢,例如 windows 访问 wsl 中的数据,或者 wsl 直接访问 windows 中的数据,文件 I/O 性能非常差。
orbstack 创建的虚拟机和 macOS 之间的跨文件系统访问是不是也很慢?
关于 wsl 和 windows 之间跨文件系统访问,以及 macOS 和 orbstack 创建的虚拟机之间的跨文件系统访问,有 v 友做过具体的性能测试吗?对于个人的 C++ 和 Java 小项目的编写,其性能够用吗?
1
daveh 2023-11-27 16:52:10 +08:00 via iPhone
用 dd 命令自己测。
一般差个 10 倍以上,对 JB 系 IDE 影响较大,当然写个 hello world 还能接受。 |
2
noahhhh 2023-11-27 16:55:03 +08:00 via Android
orbstack 是 wsl1 形式,wsl2 才有你说的问题
|
3
Twnysta 2023-11-27 16:58:29 +08:00
orbstack 的文件 i/o 性能可以,大概是 gRPC FUSE 的四倍。跟 virtioFS 的速度差不多
|
4
daveh 2023-11-27 17:08:40 +08:00 via iPhone
@noahhhh #2 orbstack 是类似 WSL 2 ,比如需要自定义 Linux kernel ,利用了 OS 的虚拟化能力,需要独立的磁盘镜像。
|
6
tylinux 2023-11-27 17:39:25 +08:00
命令:dd if=/dev/random of=1.bin bs=4M count=1024
在 orb 根目录写:449 MB/s 在 orb 中写 macOS 用户目录:366 MB/s 在 macOS 中写:756 MB/s 单次运行,仅供参考 |
7
exkernel 2023-11-27 18:34:13 +08:00
更大问题应该是零散小文件性能
|
9
fkdog 2023-11-27 21:40:57 +08:00
是很差,没事建议不要随便尝试跨系统访问文件。
我曾经想把 idea 里所有开发工具和 sdk 全部切换到 wsl2 内置的,结果就是卡到爆炸。 wsl2 内的 jdk 和 git 访问 windows 文件系统里的项目,卡爆。 wsl2 内的 jdk 和 git 访问 wsl2 里的项目,依然更卡。 后边用 jetbrain gateway 连接 wsl2 做远程开发,结果尼玛这玩意各种无响应卡死,根本没法用。 最后就是老老实实在 windows 上安装好开发工具,然后用 git bash mingw64 做 terminal ,基本也能和 linux 无缝衔接。 如果你真想折腾 wsl2 做开发,目前我折腾一圈发现现阶段最优解就是 vscode 。 |
10
noahhhh 2023-11-28 07:37:22 +08:00 via Android
@fkdog 例外情况(使用 WSL 1 而不是 WSL 2 )
我们建议使用 WSL 2 ,因为它提供更快的性能和 100% 的系统调用兼容性。 但是,在某些特定情况下,你可能会更倾向于使用 WSL 1 。 在以下情况下,请考虑使用 WSL 1: 你的项目文件必须存储在 Windows 文件系统中。WSL 1 可以更快地访问从 Windows 装载的文件。 如果你将使用 WSL Linux 分发版来访问 Windows 文件系统上的项目文件,并且这些文件无法存储在 Linux 文件系统上,那么,通过使用 WSL 1 ,你将跨 OS 文件系统实现更快的性能。 一个项目要求对相同的文件使用 Windows 和 Linux 工具进行交叉编译。 在 WSL 1 中,跨 Windows 和 Linux 操作系统的文件性能比 WSL 2 中更快,因此如果要使用 Windows 应用程序来访问 Linux 文件,则目前通过 WSL 1 可实现更快的性能。 来源:https://learn.microsoft.com/zh-cn/windows/wsl/compare-versions |