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

时至今日, WSL 仍然难用

  •  
  •   weijancc ·
    cweijan · 247 天前 · 21114 次点击
    这是一个创建于 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  
    lv1590
        1
    lv1590  
       247 天前
    WSL 项目不是凉了吗
    shinsekai
        2
    shinsekai  
       247 天前
    @lv1590 WSA 凉了吧,WSL 没有
    dobelee
        3
    dobelee  
       247 天前   ❤️ 1
    宿主机掉帧?没发现。个人感受主要槽点是 IO 性能渣。用 WSL 开发五六年了挺舒服。
    justsomac
        4
    justsomac  
       247 天前
    在 wsl2 的命令行里都能感觉到掉帧?配置比你低得多都没感觉
    Xinu
        5
    Xinu  
       247 天前
    其它都好,就这个 io 的速度,受不了啊,访问一个页面平均 2s+
    qqjt
        6
    qqjt  
       247 天前
    宿主机掉帧真没遇到过,挺离谱的就
    well775397252
        7
    well775397252  
       247 天前
    @dobelee 用 idea 没感觉呢,windows 打开 wsl 文件也不卡了,idea 优化了
    xlcheer
        8
    xlcheer  
       247 天前
    我也没有发现,我只发现跨系统访问文件系统 IO 的确查,但是完全在 WSL 里做开发的话,还是挺不错的
    Tumblr
        9
    Tumblr  
       247 天前   ❤️ 24
    这个帖子糟点有亿点点多,首先,告诉我什么叫“正版 Linux”。。。
    wildman9527
        10
    wildman9527  
       247 天前   ❤️ 1
    对,所以我在 win 上还是选择了 virtualbox 装 linux server 版的方式开发, 更可控, 内核也能正常调试. 👍
    nomagick
        11
    nomagick  
       247 天前   ❤️ 1
    找到问题的根源了,原来微软给装的 Linux 是盗版的,怪不得文件系统那么慢
    jianrenjun
        12
    jianrenjun  
       247 天前
    从 WSL1 用到 WSL2 没谈的上多好用 也没有多烂.只是很多时候 windows 不能完全跟 linux 环境一致如果不想多带个机器只能用这个了
    crocoBaby
        13
    crocoBaby  
       247 天前
    vscode 使用 wsl 一直报错...然后就放弃了 wsl,反正用的 js 跨平台
    wildman9527
        14
    wildman9527  
       247 天前   ❤️ 1
    @wildman9527 #10 还可以随意改网络拓扑虚拟机组网, 真的是一台机器可以当集群使用.
    weenhall5
        15
    weenhall5  
       247 天前
    WSL2 还行吧,docker 什么的可以用
    zfy941
        16
    zfy941  
       247 天前
    io 不行 所以转 macOS 了
    sloknyyz
        17
    sloknyyz  
       247 天前
    用 WSL 不如开个虚拟机,不开玩笑。省心省力,不用担心莫名其妙的不兼容。
    zephyru
        18
    zephyru  
       247 天前
    他可能是想说正经 linux ,我实际 wsl 也用了好几年了,轻量的开发调试问题不大,但正经用的确体验不佳,桎梏太多了
    jjx
        19
    jjx  
       247 天前
    现在张口乱来的真多啊

    你这个配置, 启用 hyper 肉眼可见的掉帧?
    bigtear
        20
    bigtear  
       247 天前   ❤️ 1
    确实会影响宿主机性能,虽然他们都说开了 hyper-v 不影响宿主机太多,但日用感觉比以前卡一些。
    这还是其次,最主要的是会有网络和兼容性问题。
    hyper-v 拿来开虚拟机也不好用,不如 virtualbox 和 VMware 简单易用。

    现在我选择关掉 hyper-v 用 wsl1 ,当一个 Linux 工具环境用还是不错的。真生产力还是得 ssh 连 Linux 服务器。
    WDFWL
        21
    WDFWL  
       247 天前
    WSL2 对于我的使用场景有常用的工具包而且能读 Linux 的文件系统就行了,需要完整的 Linux 远程 ssh 服务器
    NessajCN
        22
    NessajCN  
       247 天前
    同意一点,那些把「 Windows 是最好的 Linux 发行版」当梗挂在嘴边的要不就是没用过除 wsl 以外的正经发行版,要不就是完全不懂 Linux 在瞎跟风喊
    dolorain
        23
    dolorain  
       247 天前
    说的很好,我继续用 WSL
    RobinHuuu
        24
    RobinHuuu  
       247 天前 via Android
    开启了 systemd ?试试关 systemd ,然后用 podman 。发现 systemd 开启时会比较慢
    RobinHuuu
        25
    RobinHuuu  
       247 天前
    @RobinHuuu
    好吧,没有 systemd
    hades97
        26
    hades97  
       247 天前
    我最近两年都在用 wsl2 开发,能吐槽就是 io 慢了一点,然后内存容易拉满(最近 wsl2 更新解决了).其他的地方我觉得已经很好用了
    villivateur
        27
    villivateur  
       247 天前
    "hyper-v 对宿主机的性能损耗其实感知不强(如果用 Genymotion 安卓虚拟机就能明显感受到), 但我是完美主义, 无法忍受这点损耗."

    所以说,这是你的问题,不是 Windows 或者 WSL 的问题
    weijancc
        28
    weijancc  
    OP
       247 天前
    @villivateur #27 我针对的是说"Windows 是最好的 Linux 发行版"这句话的梗小鬼, 不知道怎么说得出来这种话.
    aLazarus
        29
    aLazarus  
       247 天前
    话说在 wsl 中安装 jdk 和 maven 之后,在主机运行 idea 导致创建索引和 maven 依赖的时候 idea 卡死,这个问题也是因为 io 导致的么?
    paceewang1
        30
    paceewang1  
       247 天前
    win11 + wsl2 个人觉得很好用啊,就是跑跑 docker ,跑跑程序,调试什么的,只用来作为开发机而不是服务器,吃内存这个没办法,上 32G 囖
    encro
        31
    encro  
       247 天前   ❤️ 7
    wsl 只适合将文件放到 wsl 里面,

    不适合访问 windows 的文件系统!!!

    应该是 windows 访问 wsl 的文件系统!!!

    正确姿势是 wsl remote 开发!!!
    xycost233
        32
    xycost233  
       247 天前
    抛开需求谈体验都是耍流氓
    纯吹和纯黑都是
    june4
        33
    june4  
       247 天前
    写代码的话还是 linux 主力+虚拟 win 才是正道
    fatekey
        34
    fatekey  
       247 天前
    开了 Hyper-V 后我虚拟机出现了不少疑难杂症,虚拟机是刚需,所以就放弃了 WSL2
    coinbase
        35
    coinbase  
       247 天前
    那就是说 macOS 的 HyperKit 比 Windows 的 WSL2 要强?
    xwwsxp
        36
    xwwsxp  
       247 天前
    无语,MacOS 是 unix 系统,而 Linux 是类 unix ;当然,对于 docker 来说,毕竟使用的是 cgroup 等技术; win 提供的 wls2 已经不错了,有钱就上 macos ,毕竟内存和金条一样贵。
    ZZ74
        37
    ZZ74  
       247 天前 via Android
    话说有人研究过 wsl2 和用 virtualbox 装 linux 。哪个开销大吗?尝试过 wsl2 终究和真 linux 有点点区别 比如有的机器 docker 不能自启动 有的可以,文件系统还慢
    jurassic2long
        38
    jurassic2long  
       247 天前
    感觉是你的个例
    CatCode
        39
    CatCode  
       247 天前
    "Windows 是最好的 Linux 发行版"你居然还真信了
    那我说"php 是最好的语言"
    ShirolinEX
        40
    ShirolinEX  
       247 天前
    长期用 wsl2 ,没感觉什么宿主机明显掉帧。办公用的电脑更是 wsl2 和 VirtualBox 一起用,没啥问题。
    weijancc
        41
    weijancc  
    OP
       247 天前   ❤️ 1
    @aLazarus 这个是 window defender 导致的, 把它关了
    Biggoldfish
        42
    Biggoldfish  
       247 天前   ❤️ 18
    讲个笑话,无法忍受 WSL2 稍有限制的正经 Linux 子系统却会大赞 Mac 的类 Unix

    systemd 显然是支持的

    https://devblogs.microsoft.com/commandline/systemd-support-is-now-available-in-wsl/

    "hyper-v 对宿主机的性能损耗其实感知不强...但我是完美主义, 无法忍受这点损耗"

    那根本就不该用带 GUI 的系统,多少 CPU cycle 浪费在渲染 UI 和网页上,尤其是 Mac OS 一大堆动画浪费性能,不如 headless 一把梭
    lasuar
        43
    lasuar  
       247 天前
    mac 下的 dockers desktop 占用几个 G 内存,这算好用吗,已经有替代品 orbstack 了
    weijancc
        44
    weijancc  
    OP
       247 天前
    @xwwsxp
    @Biggoldfish Mac 暂且不谈, 还有 vmare 和 virtual box 珠玉在前, wsl 也打不过.
    aLazarus
        45
    aLazarus  
       247 天前
    @weijancc #41 原来是这样,怪不得 win11 的 dev home 会有一个 windows defender 的性能模式
    weijancc
        46
    weijancc  
    OP
       247 天前
    @lasuar 我现在占 4G 内存, 其实不算多, 只是 Mac 内存太贵了, 我买的二手 32G 内存.
    ShadowPower
        47
    ShadowPower  
       247 天前   ❤️ 18
    我用 Cinebench 测过开关 Hyper-V 的 CPU 性能
    以及用 AIDA64 内存测试来测过内存性能

    10 年前我测得性能下降低于 2%
    去年 v2 有个帖子里的回复说有大幅影响,我说只有 2%,对方不服。于是我又测了一次,只有 0.7%损耗

    我觉得 macOS 的系统动画和透明模糊效果带来的性能影响都比这个大……
    neroxps
        48
    neroxps  
       247 天前
    额 WSL 2.0 其实就是 hyper-v 吧,只是打通了文件传输和网络。本质上还是一个东西。不然 win 内核下怎么跑个 iptables ?
    ShadowPower
        49
    ShadowPower  
       247 天前
    @ZZ74 VirtualBox 的 IO 性能不如 Hyper-V ,包括虚拟磁盘和网络方面
    我之前用 VBox 和 VMware 本地跑一个比较大的 kafka 集群,性能差距就体现出来了……

    想了想,毕竟 Azure 就基于 Hyper-V ,这方面要是不行,会影响微软赚钱
    oneisall8955
        50
    oneisall8955  
       247 天前 via Android
    wsl 都是小打小闹,直接上物理机
    BeautifulSoap
        51
    BeautifulSoap  
       247 天前
    搞笑呢,你说 wsl2 和 Hyper-v 有点不太好用那的确是,但你要说 mac 上的 docker 有多好用那简直是在逗我呢

    mac 上的 docker 也是跑在虚拟机上,公司开发默认就给配 mac ,mac 上的 docker 遇到的问题可以一大堆
    dayeye2006199
        52
    dayeye2006199  
       247 天前
    java 和前端为啥 WSL 没法满足?
    这两玩意儿 windows 下都是很好用的把
    ShadowPower
        53
    ShadowPower  
       247 天前
    另外我又想起了这个 WSL 没有而 Mac Docker 才有的问题……
    https://github.com/pnpm/pnpm/issues/5803

    不过后来 Docker Desktop 更新后有办法绕过了,OrbStack 之类的没办法

    另外,至于 Mac 版 Docker Desktop 的 IO 性能,还有个 issue:
    https://github.com/docker/for-mac/issues/6667
    Vegetable
        54
    Vegetable  
       247 天前
    Docker Desktop For Mac 都成正面例子了
    maxxfire
        55
    maxxfire  
       247 天前
    我遇到比较大小的问题是:无法从 wsl2 中访问 windows 的网络映射盘,其它还好
    macaodoll
        56
    macaodoll  
       247 天前 via Android
    mac docker 也是个残疾,用 orb stack 好很多
    agagega
        57
    agagega  
       247 天前 via iPhone
    软吹的话听着乐呵得了,真要原汁原味 Linux 还得装个正经发行版
    liyaodev
        58
    liyaodev  
       247 天前
    WSL2 使用一年了,整个感觉用着还行。能同时满足 Linux 和 Windows 的使用需求,不过目前网络配置和磁盘映射权限这块不太友好。比如:我在 WSL2 里面运行 Docker ,总会拉取 Dockerhub 访问不通过,不过现在通过 Windows Docker Desktop 配置解决
    enihcam
        59
    enihcam  
       247 天前
    从理论讲,硬件抽象 Hypervisor 性能(例,Windows Hyper-V )不应该低于操作系统 Hypervisor(例,Mac 、QEMU)。是不是内核模块没有配置好?

    踩着刹车开汽车,不能怪它比马车慢。
    rockxsj
        60
    rockxsj  
       247 天前   ❤️ 1
    win10 的确不是最好的 wsl2 发行版,因为 win11 才是。
    EVANGELIONAir
        61
    EVANGELIONAir  
       247 天前
    如果 hyperv 的性能有问题,那么 xbox 这种游戏机是怎么玩游戏的
    shunia
        62
    shunia  
       247 天前
    WSl 还是可以的,hyper-v 对你这个级别电脑的性能的影响我感觉正常人应该感受不出来吧,不知道你说的掉帧是指哪个方便面。
    不过 windows 下如果要在 WSL 里用 docker 的话,体验确实很拉。官方也推荐在 windows 下装 desktop 然后链接 WSL 。
    hez2010
        63
    hez2010  
       247 天前 via Android
    > 如果用 Genymotion 安卓虚拟机就能明显感受到

    有没有可能是因为 Genymotion 不兼容 Hyper-V 的硬件虚拟化才导致的性能问题,这要说也是 Genymotion 自己的问题吧。
    l4ever
        64
    l4ever  
       247 天前
    wsl 慢, docker desktop 也是用 wsl, 所以更慢
    正确的方法是再 wsl 里面装 docker, 而不是用 docker desktop
    cxshun
        65
    cxshun  
       247 天前
    我是 win11 用的 wsl2 ,感觉挺不错的。在里面跑一些服务( kafka/redis/docker 乖)都没啥问题,当然 IO 性能弱这个确实没办法。

    为了喷而喷没啥意思啊,说不可用总要说什么场景下不可用。还是你非要做点对 IO 性能有要求的事情,然后吐槽,这就没太大必要了。
    BitPorter
        66
    BitPorter  
       247 天前
    有没有人试过在 wsl2 中跑 kubernetes? 我试了一下,有种被百般阻挠的感觉
    nekomiao
        67
    nekomiao  
       247 天前
    1. ”能够明显感到掉帧“ 自己也不测试下贴下数据
    2. Genymotion 根据官方的说法,开启 Hyper-V 用 QEMU 能获得比 VirtualBox 更好的性能
    nekomiao
        68
    nekomiao  
       247 天前
    又是正版 Linux ,掉帧自己又不测试, 模拟器卡也不找原因,话都说不明白的“完美主义者”。
    sayitagain
        69
    sayitagain  
       247 天前
    i9+4060+64g php 开发,没啥感觉,反正是个开发环境,能跑就行了,对本地性能没啥要求,wsl 对我来说最大的作用是可以装和服务器一样的环境...而不是之前一个环境 win 上没问题服务器部署就有问题了...
    ysn2233
        70
    ysn2233  
       247 天前
    我觉得挺好用的,除了在 wsl 里开 gui 用中文输入有点麻烦,其他基本都挺不错的
    fioncat
        71
    fioncat  
       247 天前
    感觉再买个硬盘装 Linux 双系统都比用 wsl 好
    liuzhedash
        72
    liuzhedash  
       247 天前
    用了下,感觉不如直接开虚拟机了。。。
    LongMaoz
        73
    LongMaoz  
       247 天前   ❤️ 2
    哈哈哈哈哈哈

    "但最终依赖的 Hyper-V 是全局虚拟化, 使得宿主机也被虚拟化, 能够明显感到掉帧,"

    了解一下 Root Partition?
    <img src="https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/media/hv_architecture.png" alt="Diagram of the Hyper V High Level Architecture, showing the four partitions and Hypervisor sections." data-linktype="relative-path" >

    "专门开帖喷 WSL, 是因为 [最近买了 Mac] , Mac 上的 Docker Desktop 即不会影响宿主机性能, 冷启动不到 10 秒. 相比之下 Hyper-V 就是一坨."

    入手 Mac 后 聪明的智商又占领高地了?
    niubee1
        74
    niubee1  
       247 天前
    我的 windows 机器就只拿来打游戏,一个 T 全是游戏,工作啥的就别了,不划算
    theprimone
        75
    theprimone  
       247 天前
    Windows 11 + WSL 2 天下无敌 😏
    LongMaoz
        76
    LongMaoz  
       247 天前
    "Root Partition – 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."
    官方原文
    你管这个性能损耗能让 i9+4060+40G 内存的配置掉帧?
    我很难想象你有多少只复眼
    Zenon
        77
    Zenon  
       247 天前
    第一次看到正版 Linux 这种说法
    roundgis
        78
    roundgis  
       247 天前 via Android
    @ZZ74 後者更大 我試過
    Eiden
        79
    Eiden  
       247 天前   ❤️ 3
    以为是软黑结果是果吹
    weijancc
        80
    weijancc  
    OP
       247 天前
    @LongMaoz 我用 mac 之前也用过 docker desktop for win, 也是觉得难用换了虚拟机
    weijancc
        81
    weijancc  
    OP
       247 天前
    @ShadowPower 目前我跑几个 docker 容器, 都正常, 就 nacos 不行. 另外你举 pnpm 没有说服力, pnpm 本身就一堆 bug, 我之前重度使用 pnpm 一年, 经常出现依赖丢失的情况(Windows), 现在用回 npm 了.
    kilvn
        82
    kilvn  
       247 天前
    @Eiden 头像好评
    idealhs
        83
    idealhs  
       247 天前
    敬佩你能感受到全局虚拟化的影响,最强大脑了属于是
    DdDddDlush
        84
    DdDddDlush  
       247 天前
    果吹
    insert000
        85
    insert000  
       247 天前
    我是 WLS2 +ubuntu+docker 加外挂宿主机的 D 盘目录,查了很多资料都无法解决 挂载的目录权限问题,最后放弃回归使用虚拟机+docker 的方式搭环境
    GenericT
        86
    GenericT  
       247 天前
    "能够明显感到掉帧"

    顺便内存完整性也会启用 HyperV 哦,别以为自己把 HyperV 关了其实还没关
    nuII
        87
    nuII  
       247 天前
    hyper-v 对 cpu 、内存的性能基本没影响,磁盘会有点,但是也是半虚拟化,比 virtualbox 这类强多了,和 virtio 比也就输一点点。macOS 上跑 docker ,你要说新推出的共享内核和 OrbStack 这类软件那也确实比 WSL2 强太多,但是 Docker Desktop 不至于,这东西在哪都是垃圾,吹这个是真没必要,有了解过它的实现原理吗?你以为 darwin 和类 unix 它就不开虚拟化了?在 macOS 上它依旧用了虚拟化层技术来运行 linux 内核,只不过是苹果自己的 apple hypervisor ,也就是 hyperkit 组件,去看看 hyper-v 的核心技术原理,你会发现这两理念一样,所以别吹 macOS 上的 docker Desktop 了。https://docs.docker.com/desktop/faqs/macfaqs/
    GenericT
        88
    GenericT  
       247 天前
    macOS 上的 Docker Desktop 可是血统纯正的完整虚拟机哦
    https://www.docker.com/blog/addressing-time-drift-in-docker-desktop-for-mac/
    zbatman
        89
    zbatman  
       247 天前   ❤️ 2
    “hyper-v 对宿主机的性能损耗其实感知不强,但我是完美主义, 无法忍受这点损耗”
    “最近买了 Mac, Mac 上的 Docker Desktop 即不会影响宿主机性能, 冷启动不到 10 秒”

    Windows 上不能忍受的,到了 Mac 就可以忍受了。
    还是那句话,双标是第一生产力
    GrayXu
        90
    GrayXu  
       247 天前
    @ZZ74 #37 在 wsl 自己的文件系统下不会慢的
    FrankAdler
        91
    FrankAdler  
       247 天前
    其中不跑图形界面,用 Linux VMware 、VirtualBox 啥的感觉区别不大,我个人不喜欢开 Hyper-V ,虽然宣称损耗很小,所以我觉得 vbox 就能满足需求了,而且可以选择无头方式启动,也是在后台,再用终端 ssh 进去就行了
    bjfane
        92
    bjfane  
       247 天前
    不是说 pve exsi hyper-v 这三个 最底也能有 95%+的么, 是不是因为虚拟化,导致 gpu 不行了?
    nekomiao
        93
    nekomiao  
       247 天前
    https://img2.imgtp.com/2024/03/21/1ki6enoT.png

    @weijancc #81 nacos 还能在 docker 上跑不了?把报错贴出来让大伙看看
    pkoukk
        94
    pkoukk  
       247 天前   ❤️ 12
    前几天才看到有人问,为什么网上对 mac 用户意见这么大
    就是因为脑测用户太多,苹果标性能+200%
    yooomu
        95
    yooomu  
       247 天前
    虽然我不觉得 WSL 有多好用,但也不至于对宿主机有较大影响。你开始说明显掉帧,后面又改口没有明显感知。我不得不认为是 Mac 的“高贵”让你来踩一捧一了
    simo
        96
    simo  
       247 天前
    看来我 mac 的 docker desktop 是假的。
    hundandadi
        97
    hundandadi  
       247 天前
    瞧不起 windows 其实和 wsl 是无关的,在 Arch 邪教面前 mac 也是异类
    Leviathann
        98
    Leviathann  
       247 天前
    i use arch, btw
    jiayouzl
        99
    jiayouzl  
       247 天前
    所以我选择 MacBook Pro
    weijancc
        100
    weijancc  
    OP
       247 天前
    @yooomu 感知不强, 所以大众会忽视它, 但在我眼里就是很显眼, 不是改口说我自己也感知不到.
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2826 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 13:35 · PVG 21:35 · LAX 05:35 · JFK 08:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.