Background:系统已经持续运行了 6 天。到目前为止,Chrome 共打开了 32 个标签页,跑了一个 IDEA,一个 Pycharm,Docker 跑了一个 MySQL,还有 Outlook、Teams、Excel、QQ、WeChat、网易云音乐。
现象:目前的内存使用情况:
从中午开始,Free 状态的内存一直在 5.8G 左右,系统开始频繁使用 swap,从中午的 5G 增长为现在的 9G。
这样来看的话,系统一直预留了 6G 左右的空闲内存。本来想着看能不能通过 sysctl
调整一下 swap 相关的内核参数,看能不能降低使用 swap 的频率,类似于 Linux 上的 swapniess
内核参数。然而通过 man sysctl
看了下,发现好像并没有相关的内核参数可供修改。
而且中午的时候,当内存使用处于某个点时,内核回频繁的进行 swap in 和 out 的操作,导致系统有卡顿。
总之,感觉 macOS 的内存管理不是很好?看来 macOS 更喜欢使用 swap 空间
1
leewi9coder 2020-03-04 19:13:35 +08:00 via iPhone
无脑相信苹果 信仰就完了
|
2
di11wei 2020-03-04 19:13:57 +08:00
具体原理不懂,你把 istamenus 内存设置里面的「隐藏不活跃内存」取消选择再看看。另外应该看看活动监视器里面的内存显示吧。
其他的不懂了。 |
3
Nitroethane OP @di11wei #2 取消选择之后内存使用率 100%,其中 inactive 的有 5.5G 左右。在 activity monitor 中,memory used 12.58G ,cached files:3.6G 。可能 inactive 中包括 cached files,毕竟用来做 cache 的内存有大部分是可以立即回收的。
|
4
bookit 2020-03-04 20:18:20 +08:00
macos 从 10.15 之后感觉换了个策略
以前是尽量用内存,现在也用 swap 现在硬盘快了很多倍,策略也在与时俱进 |
5
Nitroethane OP @bookit #4 即使硬盘快了很多倍,但还是比内存要慢不少。我觉得不应该更倾向于使用 swap,而且好像 macOS 的 swap 默认是加密的,这样一来使用 swap 的话开销太大了
|
6
yanyueio 2020-03-04 21:35:30 +08:00 via Android
应该是通用策略吧,照顾那些内存小的 MacOS 们,比如那些修图剪辑视频的,最好的情况当然是 64G 起步,但并不是每个公司都会给这些设计师后期人员高配置,那 16G 的人也要干活吧,苹果这里用交换空间的策略就保证了,虽然慢,但能完成交付。极端点的,比如某些游戏,内存不够的话,直接不给你运行。最后,非常同意楼主的 16G 不够了,但多数情况不是内存的原因而是编码程式员包装加包装调用层次太深,自己干底层能力不够导致很多中间层的调用导致。上学的时候跑某总公司的某工程,服务加载起来能跑半个小时,哦,打开工程大概 10 分钟左右,老旧的 eclipse 项目。
|
7
046569 2020-03-04 22:12:37 +08:00
LZ 的描述不足以判断系统内存管理存在问题.
如果中午觉得卡顿,那么当时活动监视器中的内存压力是否为红色?或者在终端中使用命令 memory_pressure 来模拟内存紧张时的情况? 从 iStat 的截图中看到压力不大. BTW,macOS 的内核 XNU 是开源的,包括内存管理的代码. |
8
nyanyh 2020-03-05 12:14:05 +08:00
|
9
Nitroethane OP @nyanyh #8 羡慕 64G 内存的(流下了没有 money 的泪水)
|
10
zhanggang807 2020-03-05 16:06:05 +08:00
这么大内存不用,偏要使用 swap 空间,这是毛个策略?
怪不得 linus 大神早就吐槽过 macOS 的内存管理就是个渣渣 反正我自己是深有体会,苹果希望大家加钱买大内存吧 |
11
shadowsockss 2020-03-05 23:34:24 +08:00
pmset -g 看下参数
|
12
iWill 2020-03-06 09:39:14 +08:00
我是 128g 内存,swap memory 一直都是 0 的。。。
|