V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
weijancc
V2EX  ›  程序员

时至今日, WSL 仍然难用

  •  
  •   weijancc ·
    cweijan · 2024-03-21 10:36:31 +08:00 · 26731 次点击
    这是一个创建于 535 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前段时间因为重装了 Windows, 想着就装个 Docker 吧, 装软件省事. 但最终依赖的 Hyper-V 是全局虚拟化, 使得宿主机也被虚拟化, 能够明显感到掉帧, 从 wsl2 发行到现在 Hyper-V 还是一样糟糕, 最后还是使用回了虚拟机 Docker.

    不知道 2020 年左右简中怎么流行了"Windows 是最好的 Linux 发行版", 真的不想再看到这句话了, 被骗了好几次, 感觉说这个都没用过虚拟机或 VPS 的正版 Linux, WSL 一点都不配.(我的 Windows 配置 i9+4060+40G 内存).
    第 1 条附言  ·  2024-03-21 11:09:35 +08:00
    hyper-v 对宿主机的性能损耗其实感知不强(如果用 Genymotion 安卓虚拟机就能明显感受到), 但我是完美主义, 无法忍受这点损耗.

    我本人是写 Java 和前端的, 又有玩游戏的需求, 所以 wsl 是弊大于利. 如果是写 C 系语言的那 WSL 应该不错.

    之所以说不是正版 Linux, 是因为没有 systemd, 不过这个说法不严谨, 撤回.
    第 2 条附言  ·  2024-03-21 11:38:42 +08:00
    专门开帖喷 WSL, 是因为最近买了 Mac, Mac 上的 Docker Desktop 即不会影响宿主机性能, 冷启动不到 10 秒. 相比之下 Hyper-V 就是一坨.
    第 3 条附言  ·  2024-03-21 17:05:07 +08:00
    wsl 还有很多糟糕的地方使我没理由选择它, 比如 IO, 只是我原贴没提, 现在被说得有点破防了, 家人们谁懂啊😭
    145 条回复    2024-03-23 07:38:47 +08:00
    1  2  
    weijancc
        101
    weijancc  
    OP
       2024-03-21 15:51:04 +08:00
    @zbatman 我说了是因为 windows 是全局虚拟化的好吗? 在用 mac 之前我用过几次 wsl 还是卸载了
    cc666
        102
    cc666  
       2024-03-21 16:36:25 +08:00
    但我是完美主义, 无法忍受这点损耗 -> "我本人是写 Java 和前端的"
    虽然我也是写 java 的,但我看到了真的忍不住笑
    Mac 上的 Docker Desktop 即不会影响宿主机性能->正在 mac 上用 docker 的我在笑,进入了资源节省模式,内存消耗 1G ,启动时间六七秒
    leaflxh
        103
    leaflxh  
       2024-03-21 16:47:11 +08:00
    操作系统界原神
    LongMaoz
        104
    LongMaoz  
       2024-03-21 16:50:50 +08:00
    @weijancc 你能不能去看看文档再来说 windows 是全局虚拟化啊?
    https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/hyper-v-architecture
    原文都发给你了你是看不明白吗 ?
    "Sometimes called parent partition. Manages machine-level functions such as device drivers, power management, and device hot addition/removal. The root (or parent) partition is the only partition that has direct access to physical memory and devices."
    不行我再给你翻译翻译 windows 并不运行在虚拟机环境中 而是存在根分区直接访问硬件和内存
    DearTanker
        105
    DearTanker  
       2024-03-21 16:52:48 +08:00
    确实,要打游戏的话,Windows 任何虚拟机软件都不能装,不然性能损失很大。

    最明显的就是对内存延迟敏感的吃鸡。

    虚拟机软件一装(不管哪种虚拟化),内存延迟差不多得+ 10ns
    MrKrabs
        106
    MrKrabs  
       2024-03-21 16:57:46 +08:00
    wsl 可以和 windows 软件 pipe 来 pipe 去,虚拟机行吗
    xiaoxinshiwo
        107
    xiaoxinshiwo  
       2024-03-21 17:01:53 +08:00
    用 vagrant + virttual box 吧
    cnbatch
        108
    cnbatch  
       2024-03-21 17:17:35 +08:00
    如果无法忍受 hyper-v 的性能损失(对于玩游戏有不良影响),那么正确的做法不是换 Mac ( Docker 启动都要好几秒),而是专门用一台电脑运行 Linux 。

    我也不喜欢在 Windows 客户版系统开启 Hyper-V ,也不是很喜欢在 Windows 安装虚拟机(多出 N 个虚拟网卡,很不爽),所以最后还是装了一台非 Windows 、非 MAC 的电脑
    loveDiu4ever
        109
    loveDiu4ever  
       2024-03-21 18:06:45 +08:00
    关键是 wsl 的网络修了好几次 只要挂上代理,不是 tun 模式难以琢磨 就是 vpn 网络下受限,反正 wsl 2 都不如 wsl1 的网络好配置
    uliah
        110
    uliah  
       2024-03-21 18:10:26 +08:00
    wsl2 有 linux 内核,你可以尝试在 wsl2 系统中装 docker ,替换 windows Docker Desktop
    uliah
        111
    uliah  
       2024-03-21 18:21:58 +08:00
    关于 docker, wsl2 有 linux 内核,你可以尝试在 wsl2 系统中装 docker 代替 windows Docker Desktop
    关于 IO, 尽量把文件放在 wsl2 中,vscode wsl remote 是非常不错的工作方式
    关于 GUI, 抱歉没有用过
    关于 Mac, 你应该用 Win 去比较 Mac 和 Linux, 而不是 wsl2
    AS4694lAS4808
        112
    AS4694lAS4808  
       2024-03-21 18:22:26 +08:00
    @loveDiu4ever 任意小飞机 + (proxifier + HTTP_PROXY)嘛,没有任何干扰
    AS4694lAS4808
        113
    AS4694lAS4808  
       2024-03-21 18:26:42 +08:00
    简中+正版 Linux 呃
    Leviathann
        114
    Leviathann  
       2024-03-21 18:34:06 +08:00
    @princesswar721 最新版在 wslconfig 里把网络模式改成 mirrored 然后代理软件开系统代理就行,别的都不用配了
    beatboxgao
        115
    beatboxgao  
       2024-03-21 18:44:46 +08:00
    利益相关:Windows ,Mac ,Arch 都用
    在 Windows 笔记本上安装了 WSL2 之后,试了一下 VSCode 的远程开发,连上 WSL 感觉和本机没啥感觉,就是需要在 WSL 里面再装一遍插件而已。而且 WSL2 装的也是 Arch ,挺方便的。
    当然了,据说 Jetbrains 什么的远程开发没有 VSCode 的好用,我也没测过。
    kryptono
        116
    kryptono  
       2024-03-21 19:14:56 +08:00   ❤️ 1
    wsl 可以动态分配内存,就这点就比虚拟机好用了
    而且 vscode 访问 wsl 里的文件也很顺畅
    yougotme
        117
    yougotme  
       2024-03-21 21:31:00 +08:00 via iPhone
    win11 wsl 我用着很爽,已经淘汰虚拟机了
    YsHaNg
        118
    YsHaNg  
       2024-03-21 21:44:54 +08:00 via iPhone
    竟然还有夸 Docker Desktop For Mac 的
    iewgnaw
        119
    iewgnaw  
       2024-03-21 21:51:36 +08:00   ❤️ 1
    确实难用,开个虚拟机加 docker 也不占什么资源,而且不用折腾一大堆莫名其妙的问题。

    WSL 唯一比虚拟机好的地方应该就是可以直接使用 GPU
    neoblackcap
        120
    neoblackcap  
       2024-03-21 21:53:20 +08:00
    @ShadowPower Hyper-V 跟 VMware 都是虚拟化第一梯队,Virtualbox 的性能跟他们比还是有差距,拿 KVM 跟他们比还差不多的。
    Xusually
        121
    Xusually  
       2024-03-21 22:10:13 +08:00
    OP 你要提 docker 也得是 OrbStack 啊,Docker Desktop For Mac 人人喊打的东西......
    MEIerer
        122
    MEIerer  
       2024-03-21 22:13:22 +08:00
    习惯双系统了
    hljjhb
        123
    hljjhb  
       2024-03-21 22:30:59 +08:00
    惊了 o.O 居然有人喜欢 Docker Desktop For Mac

    OrbStack 倒是的确比 WSL 好用,虽然没有图形支持
    dmanbu
        124
    dmanbu  
       2024-03-21 23:02:02 +08:00
    WSL2 就是在跑虚拟机,而且始终有占用内存过高的问题,我自己用 KVM 或 Vmware 虚拟都不会有这么高的内存占用,现在已经退回 WSL1 ,已经足够我用了
    molezznet
        125
    molezznet  
       2024-03-21 23:48:46 +08:00
    其实没有必须用 wsl 的需要啊,虚拟机,lxc 等不好吗
    wolfan
        126
    wolfan  
       2024-03-22 00:01:38 +08:00
    WSL 是为 android 应用移植作配套的吧,后者都已经取消了,那 WSL 的效用也就变小了,目测迟早是要砍掉的。估计 WIN13 要直接套 linux 的什么部分直接实现 win/unix 融合了吧。
    ellermister
        127
    ellermister  
       2024-03-22 02:46:46 +08:00 via Android
    我前几周也尝试了下,这玩意真垃圾。开启后导致 vmware 都起不来了,文件系统依然有些明显的读取延迟。和虚拟机的 smb 延迟一样。接口从 200ms 直接升到 800ms 以上
    feikaras
        128
    feikaras  
       2024-03-22 04:00:11 +08:00   ❤️ 1
    wsl 除了 io 差没啥不好的。除了 io 差没有任何值得喷的。没看到性能损失。我还是 7 年前的新电脑。
    wsl 比 wsa 早了 800 年,是 2016 年就有的。居然还有人以为有关系。
    hyper-v 本来就和 vmware 有冲突,vmware 也给了应对方案,都已经直接弹窗告诉你了。
    wsl2 以后开发根本就没有安装 linux 发行版的需要。
    kwater
        129
    kwater  
       2024-03-22 07:29:25 +08:00
    wsl/wsl2 今年遇到过咬死一个核心不放的问题,idle 状态及 服务重启也无效。
    触发条件未知,很隐蔽

    本来是 24x7 的设备,没精力去单独解决,当时这台就只好开睡眠按需唤醒用了。
    Rehtt
        130
    Rehtt  
       2024-03-22 08:19:32 +08:00
    hyper-v 会将宿主机系统也虚拟化
    ttimasdf
        131
    ttimasdf  
       2024-03-22 08:20:22 +08:00
    😂主打一个田忌赛马是吧,要喷 WSL 的 IO ,应该用 vmware 的 HGFS 来比,我看看在座各位有谁用 hgfs 做开发的?
    coderzhangsan
        133
    coderzhangsan  
       2024-03-22 09:39:31 +08:00
    一直用的 vm ,只要生态和性能没有数量级的差距,我根本不会浪费精力倒腾新工具。
    shunia
        134
    shunia  
       2024-03-22 09:40:22 +08:00
    WSL ( hyper-v )有个最大的 bug 是 Vmmem 进程吃内存没有上限
    jonsmith
        135
    jonsmith  
       2024-03-22 09:41:03 +08:00
    wsl2 + vscode ,开发了一两年,很舒服。虽然 wsl 的 Ubuntu 是盗版的,但绝大部分功能是能满足的。
    之前用过两年 VMware 虚拟机,那个真的太耗资源了。
    loveDiu4ever
        136
    loveDiu4ever  
       2024-03-22 10:09:42 +08:00
    @Dragonphy 单独代理没问题,openvpn 和 代理同时情况才会有问题
    raptor
        137
    raptor  
       2024-03-22 10:20:58 +08:00   ❤️ 1
    用惯了 Linux 根本受不了 WSL……只有那些主要用 Windows ,偶尔需要 Linux 的人才适合 WSL 。

    "Windows 是最好的 Linux 发行版"就是些网红瞎 BB ,啥时 Windows 的 Kernel 换成 Linux 再来说这话吧。
    mmdsun
        138
    mmdsun  
       2024-03-22 10:24:07 +08:00
    性能损耗只有 1%不到了,现在微软 xbox 都是跑 hypver-v 里面的。感觉是心理作用?有没有跑过程序测试
    ShadowPower
        139
    ShadowPower  
       2024-03-22 10:26:43 +08:00
    @jonsmith WSL 上的 Ubuntu 也是 Canonical 出的,不是盗版……
    ExplodingFKL
        140
    ExplodingFKL  
       2024-03-22 13:47:34 +08:00
    槽点太多,不知道从哪开始 ...

    - mac 上 docker 也是虚拟化
    - 要高性能和启动速度就跑 wsl1 !!!
    - 没有 redhat 家的 systemd 就不是正版 linux ???
    - mac 启动 docker 快是因为调教过
    - windows 卡顿的问题多了去了,不差这点虚拟化
    - “Windows 是最好的 Linux 发行版” : 也没错,不要管内核,不要 dkms 打不在主线的驱动,不用忍受 x11/wayland 各种小问题,不要处理双显卡( i + n )笔记本的渲染问题和续航
    snylonue
        141
    snylonue  
       2024-03-22 14:42:42 +08:00
    现在的 wsl2 可以用 systemd 的吧
    black201w
        142
    black201w  
       2024-03-22 19:12:00 +08:00
    别的不评价,Hyper-V 的全局虚拟化掉帧打游戏是极其明显的,尤其是不得不运行 Vanguard 反作弊的 Valorant ,关掉 Hyper-V 虚拟化跑 300FPS 稳住轻轻松松,开了之后能跑到但是说不上什么时候就掉帧一下,快速提升血压,搞得我还排查了好几天。
    PrinceofInj
        143
    PrinceofInj  
       2024-03-22 19:57:14 +08:00
    hyper-v 从没关过,十几个虚拟机想开哪个开哪个。没发现主机有什么性能损失。
    james122333
        144
    james122333  
       2024-03-23 00:10:52 +08:00 via Android   ❤️ 1
    个人觉得 wsl 存在的目的就是让熟悉使用类 unix 系统的人在 win 上能够不舍弃自己的习惯和不用装一堆什么盗版软件 工作在一些非得用 win 的公司非常好 至于真正正经的东西是完全不会在 wsl 上开发和佈建的 原因无它就是对 win 信任度是 0 win 偷传资料都是老传统了
    Jirajine
        145
    Jirajine  
       2024-03-23 07:38:47 +08:00 via Android
    v 站用户群体确实变了很多,以前还叫 i2ex,现在对 apple 产品及其用户的敌意向国内平台对标。
    windows 的 DX 有多么糟糕每个被折磨过的开发者都知道。
    1  2  
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2705 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:28 · PVG 20:28 · LAX 05:28 · JFK 08:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.