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 1
早日 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 1
@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/commandline/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 2
坚持 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 1
为啥不直接上真 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 1
我也滚回 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 1
```
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 2
一天不解决端口预留的问题 一天不用 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
joyhub2140 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 1
我 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 |