从升级到 Mojava 系统之后,就发现自己的 Macbook pro 如果在不关机的情况下,直接合上电脑,放置一天之后,掉电很严重,有时候甚至掉到没电,研究了很久,没发现个所以然,但估计是升级到 Mojava 以后,新的 OSX 系统中休眠机制的调整,导致了休眠过程中依然大量耗电。
这里就要讲到 Mac 的默认休眠机制 hibernatemode Mac 电脑的 hibernatemode 有三个值,分别为:0/3/25 通过 pmset -g 指令,我们可以看到 hibernatemode 的当前值。
其中:
hibernatemode 值的定义为:
- 0:是直接休眠不把内存镜像写入硬盘,唤醒时从内存恢复,是桌面版 mac 的默认设置;
- 3:是把内存镜像写入磁盘的同时也给内存供电,直到电池临界值。唤醒的时候从内存唤醒,除非内存断电了那就从硬盘唤醒,速度可快可慢,取决于休眠多久,是移动版 mac 的默认设置;
- 25:是把内存镜像写入磁盘,断开内存供电,唤醒的时候从硬盘读取,速度较慢。
一般来说,桌面 Mac 系统例如 iMac, Mac Mini 等桌面型机器,hibernatemode 默认值是 0,因为是一直通电使用,所以采用了内存保持通电的方式。 而膝上型 Mac 系统,则默认使用 hibernatemode 3,用较为保守的设定。
在 Mojava 之前的系统,我的 MBP 合盖以后,哪怕一周不开机,也只会掉少量的电,大约掉电在 15%-20%左右,但是 Mojava 之后,特别是现在使用 Bigsur,合盖掉电就越来越严重了。这可能变更默认的 hibernatemode = 3 设定有关 ,那么如果我们将休眠机制设定为 25,也就是说合盖以后,在硬盘保存内存镜像,而完全断开内存供电,是不是能减少掉电,尽管这样会牺牲一点启动时间,但我觉得不会慢太多。
OK,根据 pmset 指令的定义,我们只需要执行:
sudo pmset -b hibernatemode 25
其中参数 -b 指的是“在电池状态下的设定”
pmset 命令
-c 调节设定用于连接充电器的时候
-b 调节设定用于使用电池的时候
-u 调节设定用于使用 UPS 的时候
-a 调节设定用于全部情景
我们甚至可以断开休眠后的 wifi 链接,进一步省电。
sudo pmset -b tcpkeepalive 0
经过这样的设定以后,我们在电池供电的过程中,合上 Macbook,则会保存完内存镜像之后,几乎完全断电,连 wifi 都断开,进入最大的省电状态。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.