Skip to content
This repository has been archived by the owner on Feb 17, 2022. It is now read-only.

🚀 为什么在 WSL 下项目的编译/运行/git 等等和 IO 相关的操作貌似很慢? #17

Closed
xiaok opened this issue Jan 23, 2019 · 14 comments
Labels
question General problems unfixable Problem is unfixable or require upstream support

Comments

@xiaok
Copy link

xiaok commented Jan 23, 2019

🤔 我在这个页面的配置过程遇到了问题!

代码放在 /mnt/c/shared 目录下,使用 windows 的 vscode 进行开发
代码在 wsl 中编译,运行
中型项目,巨慢无比,有没有办法缓解IO问题呢?

@spencerwooo
Copy link
Owner

这是个大问题,基本上没有方法。WSL 的 IO 就是一如既往的慢,这是个已知的问题,可以看:

这两个 issue 里面的描述,基本上是微软在努力解决了,但是还是距离原生的 Linux 有很大的差距。

@spencerwooo
Copy link
Owner

对了,可以试试把 Windows 的实时监控关闭(Disable REALTIME protection in Windows Defender),这样可能对性能有提升。详细见 > Windows Defender/Anti-malware Causing Performance Issues after CU update

@spencerwooo spencerwooo changed the title 有没有办法缓解 wsl IO 过慢的问题? 🚀 为什么在 WSL 下项目的编译/运行/git 等等和 IO 相关的操作貌似很慢? Jan 23, 2019
@spencerwooo spencerwooo pinned this issue Jan 23, 2019
@spencerwooo spencerwooo added the unfixable Problem is unfixable or require upstream support label Jan 23, 2019
@spencerwooo
Copy link
Owner

spencerwooo commented Jan 23, 2019

如果有新的解决方法我会第一时间在这儿更新,也欢迎看到这里的同学来贡献方案。

有了彻底的官方解决方案:WSL 2

@llinfeng
Copy link
Contributor

观察到上文“详见”的帖子里面提到,解决速度慢的问题有两个思路:一是关掉“实时监控”,而是对“某些”process/file/folder/filetype来添加exception。问题来了:

  1. 关闭“实时监控”是多大个事儿?
  2. 【还没好好尝试】继上面帖子,这个回复看起来靠谱? ==> 还没进行的尝试——用LxRunOffline来在某个目录下装好另一个WSL,再就比较打开/compile速度了?

@spencerwooo
Copy link
Owner

@llinfeng 这个就很有意思了。

  • 实时监控:我觉得关掉实时监控对我自己来说还是有挺大影响的,因为我自己电脑还是依赖 Windows Defender 防御入侵的,所以心里还是会觉得不安全。
  • 添加 exception:读到有人说没有任何用处,就也很懵,我自己还是把工作文件夹放到白名单里面了的,不过其实也没有特别的性能提升。

后边你提到的那个方法我不知道有没有作用...我也没试过。

@llinfeng
Copy link
Contributor

LxRunOffline老厉害了,找到合适的image之后,基本一键compile新系统。更棒的是,root所在的folder能找到,也能挪来挪去——逼急了都可以搞到U盘上。
@spencerwooo 要不你在这个repo的合适地方,加一个空白的*.md文件,我来改吧改吧先推上去

@spencerwooo
Copy link
Owner

@llinfeng 感谢,我已经在 ./docs/4-Advanced 下建了一个叫 4-2-LxRunOffline.md 的文件,欢迎大佬发挥。贡献规范和项目的本地构建方式还请参考 > 参与贡献 🌹

@xiaok
Copy link
Author

xiaok commented Jan 24, 2019

亲测:
把实时监控整个关掉,有效果,但是还是慢
把项目文件加入忽略,没有可见的效果

另外,nvm, zsh 会极大极大的拖慢 IO 速度,我用的是surface pro,性能本就不咋地,装了nvm zsh等软件后慢到无法忍受,现在用原生bash只能说勉强能用

@spencerwooo spencerwooo added question General problems and removed bug labels Apr 22, 2019
@spencerwooo
Copy link
Owner

不知道大家有没有了解 WSL 2,如果没有请看这篇官方博客:Announcing WSL 2.

总之,针对文件系统 I/O 性能问题,WSL 2 为 WSL 带来了「革命性的文件系统性能提升」。

Changes in this new architecture will allow for: dramatic file system performance increases, and full system call compatibility, meaning you can run more Linux apps in WSL 2 such as Docker.

可以期待一下。

@llinfeng
Copy link
Contributor

llinfeng commented Jun 3, 2019

关于提升WSL速度——https://gist.github.com/noelbundick/9c804a710eb76e1d6a234b14abf42a52,把*.ps1文本执行一下就好了。

关于WSL2:就算把Windows系统更新到Build 1903,也要等到六月底,需要WSL2在Windows Store上架了才能有的用。

@cqh963852
Copy link

使用过 WSL2,用来做React Typescript开发。
image
但是体验并不好,如果文件放在 /mnt/c 里面,编译,和类型检查 速度相当的慢。
直接放在~/ 会好很多,会快大概一分多钟吧。

@spencerwooo
Copy link
Owner

@thebegining 是这样的,WSL 2 速度上的优势就体现在将文件直接放在 Linux 目录下时的体验。如果放在 Windows 目录下,跟原来的就差不多。

@spencerwooo
Copy link
Owner

WSL 2 发布之后,我觉得该问题已经解决。详见:准备工作 - WSL 2 中采用的新措施。Closed.

@spencerwooo spencerwooo unpinned this issue Jan 7, 2020
@llinfeng
Copy link
Contributor

llinfeng commented Jan 7, 2020

WSL 2目前也不一定是万灵药——我在台式机和T480笔记本上分别用Windows Insider (Slow Channel) 装上了WSL 2。T480一下就整个操作系统慢慢的+启动WSL 2超慢的;台式机却还没怂。

总的来说,Windows系统也该有各种坑——问Lenovo Support的客服,说自己的Windows OS是optimized for T480的。用户自己随便乱升级Windows OS是会自讨苦吃的。


有条件的话(家用路由器该就够用),一台老电脑刷个Linux系统(Linux Mint )也是个不错的解决办法——我基本就放弃优化WSL中间事情了。用SSH+X11,能连到身边局域网里面的老机器就够用了。

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
question General problems unfixable Problem is unfixable or require upstream support
Projects
None yet
Development

No branches or pull requests

4 participants