难道交换内存机制不是好东西嘛?为啥有老哥想要关掉,觉得交换内存不好。我不太能理解,如果本身内存买的不高,交换内存机制不更可以突破使用上限嘛?
1
xtinput 2021-12-20 11:21:49 +08:00 19
他们的 mbp 是供起来的,交换内存频繁读写硬盘消耗硬盘寿命
|
2
linct96 2021-12-20 11:23:03 +08:00
怎么打开这个设置呢?还是默认就是开着的
|
4
lovedoing 2021-12-20 11:24:51 +08:00 5
电池循环党,内存占用党,硬盘写入党 😅
|
5
cwbsw 2021-12-20 11:26:17 +08:00
我猜是受了早年网上一些所谓 Windows“优化”文章的影响。
|
6
hsir 2021-12-20 11:27:16 +08:00
可能是对苹果的内存管理机制感到不满,因此强行介入交换机制
|
7
Telegram 2021-12-20 11:27:31 +08:00
这玩意是不是类似 win 的那个虚拟内存
|
8
riceathome 2021-12-20 11:27:34 +08:00 2
有两种人 一种极端的保护设备 保护到令人发指的地步 另一种认为机器买来就应该当场砸掉 但凡爱惜一点都不行
|
9
yc8332 2021-12-20 11:29:10 +08:00 1
真的是想太多了。。16 年买的本子,一直用,也就换了个电池。。
|
10
cheng6563 2021-12-20 11:31:08 +08:00
mac 不知道,反正 linux 不开 swap 或者 swappiness 设为 0 时内存一满就等着强行关机吧。
win 的虚拟内存不等于交换内存 |
11
lscexpress 2021-12-20 11:37:12 +08:00
@riceathome 我是一点也不爱惜,我手机都不贴膜。但我是正常使用,什么设置好,什么优化等等,我都是直接使用出场设置。但我绝不会砸掉,或者故意损害任何设备。
|
12
felixcode 2021-12-20 11:40:36 +08:00
内存够多时就可以关闭 swap (或虚拟内存),避免数据交换到磁盘 IO 影响性能。
当然,如果非要说 SSD 几十倍的延时和吞吐下依然用起来和内存一样,那也没什么好反驳的。 关不掉( MacOS 不能直接关)或者没法关(内存还没多到能关的地步)的,当然也就不知道为什么要关了。 |
14
Brentwans 2021-12-20 11:45:48 +08:00
个人用户正常开启,没必要关闭的。担心频繁磁盘 IO 读写更是没必要了。
不过如果内存很大,磁盘不快的话可以选择关闭。阿里云服务器好像默认是关闭的 swap 的,不知道是为了性能,还是担心写坏磁盘的。 |
15
testver 2021-12-20 11:46:02 +08:00
正常用吧,搞清楚谁为谁服务。
就是个工具,坏了就换,费那劲。 |
16
nevin47 2021-12-20 11:47:44 +08:00 3
第一句话就是错的哈,在内存足够的情况下,SWAP 不是一个好的机制。介质时延差了上百倍,SWAP 命中了还是靠 pagefault 来搞事儿,高负载的时候还时不时的引入一次 long wait swap ,一般高可靠的场景都是要关掉 SWAP 的
|
17
tulongtou 2021-12-20 11:49:32 +08:00
生怕用了一些硬盘,SSD 寿命就到头了。可是 Mac 电脑开始用 SSD 有快十来年了,没听说谁是因为 ssd 写入过多损坏的。总结起来就是杞人忧天。
|
18
zhongerbing 2021-12-20 12:05:22 +08:00 3
看情况吧,如果自身 32g 和 64g 内存,swap 反而没必要
|
19
lucifer9 2021-12-20 12:11:23 +08:00 via iPhone
内存足够的定义就是不需要 swap
|
20
hello2090 2021-12-20 12:25:50 +08:00 via iPhone 2
苹果没做好,帮他手动调优呗。苹果不懂苹果电脑
|
21
ShadowPower 2021-12-20 14:04:16 +08:00 2
现在内存已经足够便宜,已经用不上磁盘来做交换了。
64GB 物理内存开了 64GB 的 ZRAM ,许多内存数据都是程序、文本、全 0 或者全 1 的内容,压缩率可以达到 25%。只要用 16GB 的物理内存就可以代替 64GB 的 swapfile 。 然后还有 48GB 的物理内存可用,最终可以装下 112GB 的内存页面。 以我的需求来看,够用了。 |
22
WuSiYu 2021-12-20 14:21:29 +08:00 1
一件比较违反常识的事是,哪怕内存足够,swap 也是有用的,举个例子:有些程序可能几天都不会动一下,与其让它占内存,不如扔到 swap 里,内核用这些空间当 cache ,性能反而会更高
|
23
GrayXu 2021-12-20 15:25:27 +08:00
@WuSiYu 对比就是 程序指定的数据 和 未指定的数据,哪些更可能在未来被调用?从这个角度上来看,开 swap 的收益应该是程序优化的差(即自己调度的没有 OS 调度的好)才会体现出来吧。 [只讨论服务器场景]
|
24
minsheng 2021-12-20 15:30:23 +08:00
@GrayXu 说个最简单的情况,内存漏了,比如说每关一个标签页漏一下,这种场景就天生适合内存交换……
Apple 的 Cocoa 框架有些很迷的东西,有一个 autorelease pool 。这个是古时候的技术了,在 Apple 上了 ARC 自动引用计数之后似乎程序员就接触不到了,所以我也不是很清楚。但是我观察到,调用一些系统框架的时候,这些框架依然会使用这玩意,导致对象虽然释放了,但内存不会,要等一段不明时间才会莫名其妙释放掉。这种情况感觉也用得上。 |
25
felixcode 2021-12-20 15:39:04 +08:00
@WuSiYu
一般说内存够都是说内存既足以用于 cache 也同时可以关 swap 。内存够的话服务器和桌面环境都能满足。 唯一想到内存足够的情况下需要开启 swap 的理由就是避免意外的内存泄漏,而这大多是内核或程序设计的问题了。 |
27
clrss 2021-12-20 15:42:50 +08:00 1
1. M1 Mac 的 TBW 增长确实不正常, 一个月几十 T, 比我 Intel 机型 2 年的还多
2. 现在 SSD 1000 次的擦写值确实只能支持几百 TBW 2.1. 用掉 80% TBW 以后, 可以认为报废了. 不可能真的等丢数据了再换 3. 集成式 SSD 没法简单的更换 4. M1 的性能 5 年不过时 8 年不淘汰. 就这样报废整机是不是不太甘心? |
28
nikolai 2021-12-20 15:53:51 +08:00
虽然都吐槽硬盘写入高,但我还没见过 MacBook 的硬盘写坏的
|
29
shika 2021-12-20 15:59:54 +08:00 via Android
在 Linux 下,我的理解是不管你内存有多大,swap 不管大小如何设置,还是要有的,MAC 下 swap 工作机制不一样?
|
30
felixcode 2021-12-20 16:05:20 +08:00
@nikolai
https://medium.com/codex/my-macbook-air-m1-is-dead-a394e3581e95 https://news.ycombinator.com/item?id=27065953 虽然文章没直接说是写入量过大造成的,但的确是高负载使用,很可能和写入量有关,而且硬盘坏了之后直接丢了 800G 的数据。 |
31
xqk111 2021-12-20 16:08:05 +08:00
这个还能设置?
|
33
felixcode 2021-12-20 17:12:22 +08:00
@Cielsky
内存够多依然会用到 swap ,跟设置的策略有关,linux 下是通过修改内核的 vm_swappiness 参数(默认 60 )来调整策略的,如果设为 0 的话就不使用 swap, 很多建议设置为 1 。 具体计算方法可以看这篇文章。 https://access.redhat.com/solutions/103833 |
34
neptuno 2021-12-20 17:28:35 +08:00
有些人 64g 内存确实不需要吧,而且 m1 写入确实夸张了,导致有些人比较焦虑
|
35
WuSiYu 2021-12-20 17:29:38 +08:00
@felixcode 这只是一种观点了,它的前提是内存永远都是不够用的,毕竟除了被动的缓存,内核还可以主动的预读。不过实际上会有大内存+轻载的情况,此时内存本身都有闲置,自然就没 swap 什么事了
从另一个角度讲,这个观点认为,如果 swap 被用到了,往往是利大于弊的,而如果 swap 使用为 0 ,那除了占用一点硬盘空间之外也不会有副作用(况且 macos 的 swap 可以自动缩放) 至于内存泄漏,我觉得在 macos 上是个相当现实的问题。。。 |
36
gps949 2021-12-20 17:30:04 +08:00
提速?都 64G 内存了,还用 swap 感觉就是故意摸鱼
|
37
alexkkaa 2021-12-20 17:39:34 +08:00 via Android
mac 内存普遍偏小 swap 还是有用的。但是当你用上 64g 内存,swap 常年 0 占用很正常
|
38
beimenjun 2021-12-20 17:46:51 +08:00
其实多少也和 Apple 在大内存的内存策略无法被人信任有关系。
Apple 很多内存策略很迷,内存还剩几百 G ,但是使用的部分超过 50%,就开始 Compress 内存了。 |
39
dengshen 2021-12-20 23:07:38 +08:00 via iPhone
有内存不用偏偏占用几 g 的 swap 。我也想关掉,并不是怕写硬盘
|
40
icyalala 2021-12-21 00:27:17 +08:00
你要愿意接受内存不够时 OOM 杀 App ,那大可以关闭 swap 。。
|
41
wobuhuicode 2021-12-21 09:06:56 +08:00
实话实话,前几年我也不喜欢把机器供起来养的。手机屏幕不贴膜不带套,电脑也是随便开着。
后来同一个型号的手机出二手,我老婆的手机贴膜戴套的出二手,比我的价格能贵上 1.2K 。后来也就妥协了。花个 50 块不到贴膜戴套,出二手的时候还能回本更多。 |
42
gps949 2021-12-21 10:52:14 +08:00
@wobuhuicode
虽然跑题了。 但这个不能只看资金成本吧?膜套是只值 50 ,但你不喜欢“供着”使用的感受,那么带膜套并且小心使用的心情成本每天值个冰淇淋的钱吧?按奶油冰淇淋 3-4 块(就按 3.5 吧),那么假设你手机使用一年出新型号就换,3.5*365+50=1327.5 元。相当于多花 1327.5 然后卖二手多卖 1200 ? doge |
43
uleh 2021-12-21 11:15:05 +08:00
SWAP 关掉是为了加速吧
不过内存不是很充裕的情况下,还是老老实实相信操作系统自己的优化比较好 |
44
wobuhuicode 2021-12-21 14:30:21 +08:00
@gps949 我觉得我和你的想法刚好相反,反而是贴膜和带套之后,用起来就没那么小心翼翼了。没带外套时候手机比较硬,放在桌子上都需要轻轻的放下。
|
45
wu67 2021-12-21 15:03:55 +08:00
部分回复 yygq 其实没必要....这玩意在部分场景下确实是有用的, 禁前提是你内存本身不够大的情况. 如果 32 64G 了, 一天到晚剩下十几~几十 G 内存空着, 那想关就关, 反正也不会怎样
|
46
iwj 2021-12-21 19:17:29 +08:00
感谢大家的分享和讨论,个人觉得,在 8 楼提到的那两种极端中间找一个适合自己的度就可以了
|