![]() | 1 toptyloo 2021-02-05 14:57:59 +08:00 我放弃了,直接还用 WSL 了,额外需求直接虚拟机。 |
![]() | 2 xiaoshouchen 2021-02-05 14:58:34 +08:00 我限制了 2 个 G,用 Docker,使用体验还行 |
3 chenqh 2021-02-05 14:59:38 +08:00 直接 vagrant 吧,简单粗暴,经考验 |
![]() | 4 learningman 2021-02-05 15:00:11 +08:00 有吗。。。我 4G 的 Surface Pro 4 开着 WSL2 都能抗一抗 |
5 danytdlemon1900 OP @toptyloo 天下苦软软久矣,巨硬什么时候能让我们 wsl 用户硬一点 |
6 danytdlemon1900 OP @learningman 可能我的项目比较重? |
7 danytdlemon1900 OP @chenqh 感谢指路,去瞄一眼 |
8 chenqh 2021-02-05 15:02:06 +08:00 @danytdlemon1900 就是要网号 |
![]() | 9 liuxey 2021-02-05 15:02:13 +08:00 ![]() 早日 mac |
10 danytdlemon1900 OP @liuxey 个人用 mac 喜滋滋,公司项目比较特殊,一般配置的 mac 还真跑不动 QAQ |
![]() | 11 xiri 2021-02-05 15:08:17 +08:00 @danytdlemon1900 你的项目重的话内存占用高这不是挺正常的吗。 刚刚看了下我的,不在里面跑东西的话,同时打开 Debian10 和 Ubuntu20.04 ,Vmmem 这个进程也才占用 300M 内存 |
13 danytdlemon1900 OP @xiri 不能吧,你家 vmmem 怎么这么亲切,我项目重一点但是肯定用不到这么多,这情况肯定是占了内存没还我,你这个占用率也太友好了 |
![]() | 14 litujin1123 2021-02-05 15:13:59 +08:00 好像会有不释放内存的情况,前两天,都没跑啥,直接吃了大半内存,加上 cpu100%。整个机器卡死了 |
![]() | 15 BeautifulSoap 2021-02-05 15:14:52 +08:00 via Android lz 的问题应该不在 wsl2 wsl2 在设了最大内存限制后,内存上的行为和普通虚拟机没区别 目测楼主在 wsl2 里跑的东西有内存泄漏或在干其他什么非常吃内存的事情,这个你放到无论哪个虚拟机或者甚至宿主机里都一样,建议 lz 先排查下是什么东西那么吃内存 ps:同时运行 wsl2 的多个发行版,他们的内存上限是公用的,同时运行多个发行版的人需要把上限设高点 |
![]() | 16 caixiaomao 2021-02-05 15:15:27 +08:00 |
![]() | 17 xiri 2021-02-05 15:16:24 +08:00 https://s3.ax1x.com/2021/02/05/yGV076.jpg 刚截的图,就只是同时打开了两个,没有在里面运行任何东西 |
![]() | 18 xiri 2021-02-05 15:16:45 +08:00 |
19 neutrino 2021-02-05 15:17:55 +08:00 @danytdlemon1900 我用来 php 开发,nmp 那一套,再跑个 vscode server,大概 400M 。系统是 debian 9 |
20 podel 2021-02-05 15:17:59 +08:00 ![]() @BeautifulSoap 可以限制 WSL2 的内存使用。 WSL2 吃内存的问题是,Linux 下面的 FileCache 会一直吃内存,虽然这部分内存能被 Linux 使用,但是 VM 认为内存不够了,系统又自动分配内存。于是就这样子 内存越吃越多。 一定程度上来说,可以调整 Linux 的 FileCache 策略也能解决。 |
21 zwy100e72 2021-02-05 15:20:05 +08:00 试试 wsl 内 root 用户执行 `echo 1 > /proc/sys/vm/drop_caches` [1] ;试试限制最大使用量 [2] ;试试加内存到 64 GB [1]: https://devblogs.microsoft.com/commandlne/memory-reclaim-in-the-windows-subsystem-for-linux-2/ [2]: https://itnext.io/wsl2-tips-limit-cpu-memory-when-using-docker-c022535faf6f |
22 danytdlemon1900 OP @xiri so charming 羡慕 |
23 danytdlemon1900 OP @BeautifulSoap 是个方向,容我检查一下项目 |
24 danytdlemon1900 OP @zwy100e72 64G ? |
![]() | 25 sky96111 2021-02-05 15:24:13 +08:00 via Android 启动我只占用 130mb,除去编译时一般也就占用 800mb,但 wsl2 和 hyper-v 一样,动态内存大小不会主动释放,需要 wsl --shutdown 才能释放。不过占用了那么多内存挺离谱的…我觉得还是项目有内存溢出 |
![]() | 26 sky96111 2021-02-05 15:25:18 +08:00 via Android 内存泄漏… |
![]() | 27 XIVN1987 2021-02-05 15:25:36 +08:00 ![]() 坚持 WSL1 100 年不动摇 若对 WSL2 某些功能有需求,,不如装个虚拟机,, |
28 danytdlemon1900 OP @sky96111 定期 wsl --shutdown 已经成为我的日常,项目内部应该也是有些问题 |
29 neutrino 2021-02-05 15:28:41 +08:00 @danytdlemon1900 我用 wsl --shutdown 来解决 localhost 不能访问的问题 |
30 dawnh 2021-02-05 15:29:42 +08:00 有几个原因会导致 Linux 占着内存不释放,WSL2 加了 Reclaim 内存功能,看一下这篇: https://devblogs.microsoft.com/commandline/memory-reclaim-in-the-windows-subsystem-for-linux-2/ |
![]() | 31 love 2021-02-05 15:39:53 +08:00 ![]() 为啥不直接上真 linux 做开发呢? |
![]() | 32 mrxun1998 2021-02-05 15:58:20 +08:00 正常使用,500 多 m |
33 faust24601 2021-02-05 16:02:06 +08:00 via iPhone hyper-v 它不香吗 |
34 systemcall 2021-02-05 16:08:51 +08:00 wsl2 理论上会自动把占用的内存释放一些给 Windows,但是 Windows 真的抢不过 WSL2 感觉虽然 wsl2 是跑在 Windows 里面的,实际上已经反客为主了,是这台电脑的真正主人 |
35 danytdlemon1900 OP @XIVN1987 坚定地原教旨主义彳亍,不过这个体验改天找个闲的时候我也试试退版本回去重配个环境吧 |
36 danytdlemon1900 OP @dawnh 学习一哈 |
![]() | 37 Nich0la5 2021-02-05 16:30:29 +08:00 我现在轻的在 wsl 跑跑,重的我还有台物理机远程过去了 |
![]() | 38 royzheng 2021-02-05 16:37:38 +08:00 %UserProfile% 目录下加.wslconfig 文件限制使用内存,这都不知道??? |
39 lz0755 2021-02-05 16:42:53 +08:00 via Android wsl2 的月经贴,把内存当 cache 用还不主动释放 限制内存或者 nocache |
![]() | 40 cheng6563 2021-02-05 16:47:02 +08:00 ![]() 我也滚回 wsl1 + 虚拟机了 |
41 danytdlemon1900 OP @royzheng 加了也是一样的,这要能那么见效快也不至于月经贴吐槽了 |
![]() | 42 BeautifulSoap 2021-02-05 16:58:07 +08:00 @podel 所以直接限制 wsl2 的内存上限不就行了,wsl2 之所以内存一直膨胀是因为基于 hyper-v,而 hyper-v 有个功能是“动态内存”,即虚拟机要多少内存给多少内存,没有上限。一般开 hyper-v 下的 linux 虚拟机是要直接关了这个功能的,要不然 linux 吞了内存 hyper-v 也不会释放 wsl2 可以编辑下.wslconfig 文件关了这功能给整个 wsl2 添加一个内存占用上限 |
43 neoblackcap 2021-02-05 17:40:53 +08:00 @systemcall wsl2 跟 windows 是同一个级别的,因为 wsl 是用 hyper-v 的技术。最底下才是 hypersivor,他们两个都是在 hypersivor 上面的。 |
![]() | 44 lerry 2021-02-05 17:45:54 +08:00 我从 wsl2 换到 hyper-v 虚拟机了,主要是网络问题,还有 systemd,hyper-v 发现了个坑,虚拟机开了动态内存,就跑了几个 node 程序,有时候突然系统就卡了,风扇声音变大,发现 64g 内存都给我吃完了,关了动态内存,目前还好 |
![]() | 45 snowlyg 2021-02-05 17:47:58 +08:00 |
![]() | 46 rioshikelong121 2021-02-05 17:53:55 +08:00 确实离谱, 我的最高占用 9 G 。。 随便跑跑 前端应用也有 4,5G 。 |
![]() | 47 herozzm 2021-02-05 17:54:26 +08:00 via Android wsl 也要安装一个子 linux,为什么不用 hy 呢 |
![]() | 48 felixcode 2021-02-05 17:56:26 +08:00 via Android 用的 Linux 桌面,从来不用操心这些东西 |
![]() | 49 azkaban 2021-02-05 20:14:50 +08:00 哥你跑啥了,我也 wsl2,32 内存,一直就占 3g 以下 |
50 Bunnyranch 2021-02-05 21:34:37 +08:00 好巧 我也是整上 WSL2 用了一会滚回 1 了 |
![]() | 51 tolerance 2021-02-05 21:44:40 +08:00 配置.wslconfig 限制 wsl2 内存 |
![]() | 52 Weixiao0725 2021-02-06 00:52:08 +08:00 还有在 wsl2 上运行 npm start 巨慢,win10 下瞬间就起来了。 |
![]() | 53 interim 2021-02-06 02:31:42 +08:00 @Weixiao0725 windows 和 WSL2 通过网络访问的,把工程放在 WSL2 下就一样速度了,npm 的包太吃 IO 了。 |
![]() | 54 jeeyong 2021-02-06 02:36:08 +08:00 加到 64 |
![]() | 55 aliao0019 2021-02-06 02:59:54 +08:00 via iPhone 解法就是用 .wslconfig 限制一下上限。 |
![]() | 56 aliao0019 2021-02-06 03:00:59 +08:00 via iPhone 去 github 可以看 issue microsoft/WSL/issues/4166 |
![]() | 57 ebushicao 2021-02-06 09:11:51 +08:00 我也是这样的,然后我换了 hyper-v 虚拟机。 |
![]() | 58 p1gd0g 2021-02-06 09:24:15 +08:00 [wsl2] memory=8GB # Limits VM memory in WSL 2 to 8 GB 之前开 top 看了下,我这边主要是 gopls 占了不少内存。 |
![]() | 59 SJ2050cn 2021-02-06 09:41:26 +08:00 我 32g 内存,wsl2 内存限制到 25g,平时占用也就 2g 的样子,没楼主那么夸张 |
![]() | 60 digitalwater 2021-02-06 09:46:04 +08:00 ![]() ``` sudo su echo 3 > /proc/sys/vm/drop_caches echo 2 > /proc/sys/vm/drop_caches echo 1 > /proc/sys/vm/drop_caches sync ``` https://github.com/microsoft/WSL/issues/6451 |
![]() | 61 fuchaofather 2021-02-06 10:51:47 +08:00 这个确实, 我还专门升级了下内存到 24G, 后来放弃了用 vmware, 内存一下富裕了很多 |
![]() | 62 taosx 2021-02-06 10:53:03 +08:00 ![]() 一天不解决端口预留的问题 一天不用 hyper-v |
63 dobelee 2021-02-06 11:54:40 +08:00 限制一下内存。我是特别高的时候 shutdown 一下。 |
![]() | 64 cubecube 2021-02-06 12:52:43 +08:00 @systemcall 现在能还了么?之前测试,是无法归还内存给 host 的。只能设置最大值,这也是我弃用 wsl2 的最大原因,没有任何收益,管理还不如 vmplayer |
![]() | 65 nxforce 2021-02-06 12:57:58 +08:00 via Android 我两台电脑都是 128GB,连 NUC 都上了 64GB,感觉还够用。。。 |
66 systemcall 2021-02-06 13:01:45 +08:00 via Android @cubecube 有时候会归还一些,运作的机制不是很清楚 wsl2 里面 dmesg,可以看到 wsl2 内存归还的一些记录,似乎每隔一段时间都会尝试归还一些内存,但是还的不多 |
67 NXzCH8fP20468ML5 2021-02-06 13:36:37 +08:00 via Android wsl2 只有会在 host 需要内存时才积极释放,其他时候能占多大占多大。 我 vmmem 启动时大概 300M,经过一些操作后 3G,这时候 host 重负载的情况下(数据处理),就变成减少到 600M,这时候 host 的内存分配速度严重变慢。 |
68 jancgk 2021-02-06 14:20:14 +08:00 WSL2 如果用 vbox 做虚拟化多好 |
![]() | 69 TJT 2021-02-06 15:19:30 +08:00 ![]() 日常 9G, 还行 |
![]() | 70 imbushuo 2021-02-06 16:53:03 +08:00 ![]() 我 160GB 内存,日常 WSL2 稳定吃 10GB 样子 |
71 orannge 2021-02-06 17:26:00 +08:00 官方内核是可以释放内存的,GitHub 上有些内核可能不行。但文件缓存占用的内存需要手动释放 `echo 3 > /proc/sys/vm/drop_caches` |
72 volvo007 2021-02-06 20:34:50 +08:00 128G 无所畏惧,AMD YES |
![]() | 73 RickyC 2021-02-06 21:20:40 +08:00 但是这是目前我找到, 在 windows 下开发最合适的环境了, 再不然就得直接换 linux 了 |
![]() | 74 ZZSZZSZZS 2021-02-07 00:11:34 +08:00 via iPhone wsl 确实内存释放有点问题,我 16G 的机器,有一次在 wsl 里边编译了一遍 openwrt,就给我占用了 12G,而事实上开 htop 发现 wsl 的内存可用空间还有很多。Windows 真抢不过 wsl 。 |
![]() | 75 Dragonphy 2021-02-07 08:43:27 +08:00 我也遇到了,开了 WSL2 电脑巨卡,一看性能,内存达到 90%以上,vemm 占了一半 |
![]() | 78 awesomes 2021-02-07 11:28:20 +08:00 单就文件共享这一块就可以直接放弃 WSL2 了,用 WSL 它不香吗?用 docker 也没啥问题啊 |
79 sleepm 2021-02-07 13:21:41 +08:00 @awesomes 我 wsl1 升的 wsl2,啥设置也没改过,和 wsl1 一样,照常 cd /mnt/c/users/admin,我也不知道这是不是 bug,反正就很神奇 wsl2 内存占用也不高,除了烦人的 hyper-v 端口占用之外,没啥觉得不舒服的地方 wls2 ubuntu 20.04 lts |
![]() | 80 awesomes 2021-02-07 13:32:03 +08:00 @sleepm 当时我也是升到 2 了,但是发现开发访问文件非常慢,然后查了一下相关资料,确实是 wsl2 的问题,果断又回到 1 了。不知道你这是啥情况 |
![]() | 82 Dragonphy 2021-05-13 16:47:35 +08:00 我就跑个 node,占了快 5G,换回 WSL1 只占 1G 出头 |
![]() | 83 Nerv 2021-07-22 12:02:11 +08:00 两年了,这个问题还没修复。 https://github.com/microsoft/WSL/issues/4166 |
![]() | 84 brusetong 140 天前 fileCache 确实会吃掉一大部分内存 free -h |