这两天优化缩减 El Capitan 下的 SSD 写入次数,和大家分享一下

2015-10-23 13:23:56 +08:00
 Radeon
1) 禁用 /var/vm/sleepimage

网上的攻略一般是说要 sudo pmset -a hibernatemode 0 ,然后 sudo rm /var/vm/sleepimage

其实除了要设置这个,在 El Capitan 里还要
sudo pmset -a standby 0
sudo pmset -a autopoweroff 0

这个在 pmset 的 man 里面写得很清楚

2) 禁用 dynamic_pager (虚拟内存)

如果机器内存上限够大的话,不妨配足然后禁用虚拟内存。 El Capitan 之前的 OS X 的做法是

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

在 El Capitan 下,需要先禁用 SIP (System Integration Protect)
先按住 CMD+R 重启电脑,进 Recovery Mode ,然后选择 Utilities -> Terminal 工具
csrutil disable
关闭 SIP
重启进系统
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
再重启进 Recovery Mode
csrutil enable

3) 给 SSD 分区加上 noatime (no access time) 选项,不记录每个文件的最近访问时间
原理是 sudo mount -vuwo noatime /
成功以后执行 mount ,应该显示
/dev/disk1 on / (hfs, local, journaled, noatime) 注意最后的 noatime mount 标志

可以写一个 plist 自动执行

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>noatime</string>
<key>ProgramArguments</key>
<array>
<string>mount</string>
<string>-vuwo</string>
<string>noatime</string>
<string>/</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

存为 /Library/LaunchDaemons/noatime.plist
8228 次点击
所在节点    macOS
49 条回复
feikaras
2015-10-24 16:27:23 +08:00
没必要,自作聪明
sylarchang
2015-10-24 17:03:50 +08:00
其實沒必要, SSD 我拿來掛 PT 用了幾年都沒任何問題
Radeon
2015-10-24 19:37:28 +08:00
@sylarchang PT 的每个块只是写入一次,不是重复写入,而 SSD 的读取次数几乎是无限,所以当然没事
zwy
2015-10-25 09:39:52 +08:00
你有没有想过,这种所谓的优化,苹果的系统工程师不知道么?他们为什么不用呢?
Radeon
2015-10-25 14:03:25 +08:00
@zwy 你可以认为这些是没有做出 GUI 设置界面的系统选项。禁用休眠文件和禁用虚拟内存在 Windows 下是有 GUI 设置界面的
actuallymax
2015-10-29 15:08:04 +08:00
进用过 sleepimage 但是过一段时间又冒出来了,这是怎么回事呢?
Radeon
2015-10-29 17:16:43 +08:00
@actuallymax 你运行 "pmset -g",然后把结果贴出来
actuallymax
2015-10-29 21:59:02 +08:00
@Radeon

Active Profiles:
Battery Power -1
AC Power -1*
Currently in use:
standbydelay 4200
standby 0
womp 1
halfdim 1
hibernatefile /var/vm/sleepimage
sms 1
networkoversleep 0
disksleep 10
sleep 30 (sleep prevented by coreaudiod)
autopoweroffdelay 14400
hibernatemode 0
autopoweroff 0
ttyskeepawake 1
displaysleep 10
acwake 0
lidwake 1
Radeon
2015-10-30 08:38:07 +08:00
@actuallymax 这是我的 pmset -g

Active Profiles:
AC Power -1*
Currently in use:
standby 0
Sleep On Power Button 1
womp 0
halfdim 1
hibernatefile /var/vm/sleepimage
powernap 1
gpuswitch 2
autorestart 0
networkoversleep 0
disksleep 10
sleep 5
autopoweroffdelay 14400
hibernatemode 0
autopoweroff 0
ttyskeepawake 1
displaysleep 5
standbydelay 10800

似乎和你的没多大区别。不过我的 sleepimage 不会重新生成

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/230457

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX