V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
weijancc
V2EX  ›  程序员

时至今日, WSL 仍然难用

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

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

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

    之所以说不是正版 Linux, 是因为没有 systemd, 不过这个说法不严谨, 撤回.
    第 2 条附言  ·  247 天前
    专门开帖喷 WSL, 是因为最近买了 Mac, Mac 上的 Docker Desktop 即不会影响宿主机性能, 冷启动不到 10 秒. 相比之下 Hyper-V 就是一坨.
    第 3 条附言  ·  247 天前
    wsl 还有很多糟糕的地方使我没理由选择它, 比如 IO, 只是我原贴没提, 现在被说得有点破防了, 家人们谁懂啊😭
    145 条回复    2024-03-23 07:38:47 +08:00
    1  2  
    weijancc
        101
    weijancc  
    OP
       247 天前
    @zbatman 我说了是因为 windows 是全局虚拟化的好吗? 在用 mac 之前我用过几次 wsl 还是卸载了
    cc666
        102
    cc666  
       247 天前
    但我是完美主义, 无法忍受这点损耗 -> "我本人是写 Java 和前端的"
    虽然我也是写 java 的,但我看到了真的忍不住笑
    Mac 上的 Docker Desktop 即不会影响宿主机性能->正在 mac 上用 docker 的我在笑,进入了资源节省模式,内存消耗 1G ,启动时间六七秒
    leaflxh
        103
    leaflxh  
       247 天前
    操作系统界原神
    LongMaoz
        104
    LongMaoz  
       247 天前
    @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  
       247 天前
    确实,要打游戏的话,Windows 任何虚拟机软件都不能装,不然性能损失很大。

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

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

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

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

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

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

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

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