Radeon
V2EX  ›  macOS

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

  •  
  •   Radeon · Oct 23, 2015 · 8932 views
    This topic created in 3856 days ago, the information mentioned may be changed or developed.
    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
    Supplement 1  ·  Oct 23, 2015
    很多网友指出目前的 SSD 寿命足以不用担心写入次数问题,我同意。不过我考虑的是 1) 减少磁盘 I/O ,尤其是最耗时的 Disk Write ,总归可以给系统减负 2) Virtual Memory 很容易在不知不觉中积累到很高的容量,而且根据其本性,还是算存在较高频次的读写。主流浏览器 Chrome 、 Firefox 和我用的最多的 Sleipnir (我是利用其沙盒防 0day)都有内存泄漏问题
    49 replies    2015-10-30 08:38:07 +08:00
    qdwang
        1
    qdwang  
       Oct 23, 2015
    感觉只要不是质量问题, ssd 寿命基本不用考虑了。。
    Radeon
        2
    Radeon  
    OP
       Oct 23, 2015
    @qdwang 如果你的 SSD 容易拆卸,确实不用考虑
    wy315700
        3
    wy315700  
       Oct 23, 2015
    @Radeon 一块 SSD 用了 3 年半,写入量也才 12T ,远不到坏的时候
    Radeon
        4
    Radeon  
    OP
       Oct 23, 2015
    @wy315700 反正我觉得做了没坏处吧。我比较怕拆 iFix 指数超低的机器
    Andiry
        5
    Andiry  
       Oct 23, 2015
    为了区区 SSD ,把电源管理和 swap 都关了,这样好么
    buckethead1
        6
    buckethead1  
       Oct 23, 2015 via Android
    挺好的
    禁用虚拟内存可以用 onyx 图形化操作
    Radeon
        7
    Radeon  
    OP
       Oct 23, 2015
    @Andiry 电源管理没关, suspend-to-ram 不是更好吗? swap 对于大内存机器确实没必要啊
    honeycomb
        8
    honeycomb  
       Oct 23, 2015
    @Radeon
    检查开关这些设置后,对 SSD 写入量的影响?
    qdwang
        9
    qdwang  
       Oct 23, 2015
    @Radeon 花钱找人帮你拆换 ssd 即可
    br00k
        10
    br00k  
       Oct 23, 2015
    然并卵。楼主还是别开机为好。
    seerhut
        11
    seerhut  
       Oct 23, 2015
    等现在的 256G ssd 坏了,就可以和老婆申请预算买创见的 512 ssd 换上了。
    c0878
        12
    c0878  
       Oct 23, 2015
    日常使用不是疯狂 BT 下载 SSD 硬盘还是非常靠谱的 完全不用担心 就算挂了还有 timemachine 换硬盘的事情丢给售后就好了
    Koma
        13
    Koma  
       Oct 23, 2015
    2010 年的一块 X25M 160G ,从来没注意使用,经常 BT 下载,后来沦为移动硬盘,到现在还好好的。
    20015jjw
        14
    20015jjw  
       Oct 23, 2015
    真的有必要么 摊手
    randyzhao
        15
    randyzhao  
       Oct 23, 2015
    总会有人需要用到, 点个赞.
    顺便问下

    禁用 /var/vm/sleepimage 这个会有什么影响.
    spwei
        16
    spwei  
       Oct 23, 2015
    对于现在的 SSD ,真没必要
    pH
        17
    pH  
       Oct 23, 2015
    别的我没做,但是第一点我是做了的。 包括 Windows 也是。
    Radeon
        18
    Radeon  
    OP
       Oct 23, 2015
    @pH 第一条能释放好多个 GB 的空间,非常值得做
    Radeon
        19
    Radeon  
    OP
       Oct 23, 2015
    @randyzhao 禁用 sleepimage 你的电脑还可以 suspend-to-ram ,一般的 MacBook 电池撑 48 小时没问题
    GuangXiN
        20
    GuangXiN  
       Oct 23, 2015
    @wy315700 怎么看写入量?
    randyzhao
        21
    randyzhao  
       Oct 23, 2015
    @Radeon 就是只有睡眠, 没有休眠了,是吧?

    所以这样会减少 SSD 的损耗, 我理解了.

    那么经常合盖走人的话, 会加大电池的损耗吧?
    SourceMan
        22
    SourceMan  
       Oct 23, 2015
    应该有后遗症,然后得不偿失?
    wy315700
        23
    wy315700  
       Oct 23, 2015
    @GuangXiN 三星的 SSD 里 smart 有一个字段, TOTAL_LBA_WRITE , 是写入的扇区数
    Tink
        24
    Tink  
    PRO
       Oct 23, 2015 via iPad
    写入量在哪里可以查看?
    rannnn
        25
    rannnn  
       Oct 23, 2015
    买了 Apple Care 还没用到,求坏
    cheny95
        26
    cheny95  
       Oct 23, 2015
    @Tink
    @GuangXiN
    软件:
    SMART Utility
    jeansfish
        27
    jeansfish  
       Oct 23, 2015
    求坏,使劲用
    tyhunter
        28
    tyhunter  
       Oct 23, 2015 via iPhone
    我有 timemachine 和 Apple care ,巴不得快点坏
    Radeon
        29
    Radeon  
    OP
       Oct 23, 2015
    @rannnn
    @jeansfish
    @tyhunter 问题是使劲用却不能在 Apple Care 保修期截止前用坏怎么办?
    70599
        30
    70599  
       Oct 23, 2015
    请问楼主怎样验证虚拟内存已关闭?
    Radeon
        31
    Radeon  
    OP
       Oct 23, 2015
    @70599 sysctl vm.swapusage
    70599
        32
    70599  
       Oct 23, 2015
    @Radeon 做完楼主第二步之后用上述命令输出的结果:
    vm.swapusage: total = 0.00M used = 0.00M free = 0.00M (encrypted)

    看来是禁用了, 16GB 内存黑苹果,目前没什么问题。
    crystone
        33
    crystone  
       Oct 23, 2015
    @Radeon btbtbbttbbbttt
    jedihy
        34
    jedihy  
       Oct 23, 2015
    真心 SSD 用不坏的
    crisfun
        35
    crisfun  
       Oct 23, 2015
    对于不同的人有不同的选择,像我还没用多久写入量就几个 T,我实在把自己震惊了
    pagict
        36
    pagict  
       Oct 24, 2015
    中国有句古话,叫闷声发大财
    可是看到你们这么热情的争来争去
    我不说两句又不好

    那么我就要问了 你们是怎么测 mac 上 SSD 写入量什么的 :笑 cry 脸:
    sean419
        37
    sean419  
       Oct 24, 2015
    买了 Apple Care ,独孤求坏!
    cdy
        38
    cdy  
       Oct 24, 2015
    我猜苹果是没有这么傻着叫我们自己打命令优化的
    0x61
        39
    0x61  
       Oct 24, 2015
    我有一块 60G 的, 2010 年买的,现在还在用,而且性能还很好
    ycyppq123
        40
    ycyppq123  
       Oct 24, 2015
    没必要
    feikaras
        41
    feikaras  
       Oct 24, 2015
    没必要,自作聪明
    sylarchang
        42
    sylarchang  
       Oct 24, 2015
    其實沒必要, SSD 我拿來掛 PT 用了幾年都沒任何問題
    Radeon
        43
    Radeon  
    OP
       Oct 24, 2015
    @sylarchang PT 的每个块只是写入一次,不是重复写入,而 SSD 的读取次数几乎是无限,所以当然没事
    zwy
        44
    zwy  
       Oct 25, 2015 via iPhone
    你有没有想过,这种所谓的优化,苹果的系统工程师不知道么?他们为什么不用呢?
    Radeon
        45
    Radeon  
    OP
       Oct 25, 2015
    @zwy 你可以认为这些是没有做出 GUI 设置界面的系统选项。禁用休眠文件和禁用虚拟内存在 Windows 下是有 GUI 设置界面的
    actuallymax
        46
    actuallymax  
       Oct 29, 2015
    进用过 sleepimage 但是过一段时间又冒出来了,这是怎么回事呢?
    Radeon
        47
    Radeon  
    OP
       Oct 29, 2015
    @actuallymax 你运行 "pmset -g",然后把结果贴出来
    actuallymax
        48
    actuallymax  
       Oct 29, 2015
    @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
        49
    Radeon  
    OP
       Oct 30, 2015
    @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 不会重新生成
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5948 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 253ms · UTC 02:15 · PVG 10:15 · LAX 19:15 · JFK 22:15
    ♥ Do have faith in what you're doing.