[mac] ssd optimize

来源:互联网 发布:国际云计算大会 编辑:程序博客网 时间:2024/06/12 20:26

[key]

1. 关闭虚拟内存

这是一条,连续输入:
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist (这个好想是spotlight的控制)
上面这条是禁用磁盘缓存。
第二条:
sudo rm /private/var/vm/swapfile*
这条作用是删除磁盘缓存文件


2. 关闭休眠 这个没起作用, 无论怎么搞, 重启后都回重新生成.

(适用于Macbook)

禁用冬眠 (hibernate) 模式以节省空间

由于SSD硬盘价格较高,主流的SSD容量都较少,而hibernate模式几乎不会用到,禁用这种模式能节约大致2G的空间。Hibernate模式用于在 Mac 耗尽电池时,自动进入“冬眠”模式,并将内存中的所有内容写入磁盘,下次唤醒后从这些内容恢复状态。欢迎查看。

如果Mac OS X运行在Macbook上,如果系统要进入休眠状态,系统默认会把内存上的数据全部转移到硬盘上,方便唤醒的时候恢复之前的工作进度。假如你内存识8GB,那么意味着每次休眠前系统都会把8GB的数据写入硬盘,这对SSD来说是个不小的伤害!所以关闭这个功能的话,不但能使你的SSD寿命更长,而且能使系统进入休眠状态的耗时更少。打开终端,输入下面的命令即可关闭休眠功能。

禁用Hibernate的相关命令如下: 
pmset -g | grep hibernate #查看当前的hibernate模式
ls -lh /private/var/vm/sleepimage #查看sleepimage文件大小
sudo pmset -a hibernatemode 0 #禁用hibernate
sudo rm /private/var/vm/sleepimage #删除sleepimage文件
为了防止该文件再重启后重新生成.

sudo touch /private/var/vm/sleepimage 

sudo chmod 000 /private/var/vm/sleepimage 


今后如果需要打开hibernate模式,再将该值设为默认的就可以了: 
sudo pmset -a hibernatemode 3 #设置hibernatemode为默认值3

sudo rm /private/var/vm/sleepimage 


如果你真不如此在乎SSD的寿命的话,还有下面几种设置,可以改善系统休眠时的性能:

0 - 最古老的设置,系统进入睡眠和唤醒的速度最快,但会丢失睡眠前的工作进度
1 - 休眠模式,把内存中的内容保存到硬盘,系统完全关闭,当唤醒的时候再从硬盘里读取睡眠休眠前的工作进度
3 - 大约从2005年秋季开始成为OS X系统的默认设置,不但在休眠前会把内存中的内容保存到硬盘,系统完全关闭,当唤醒的时候再从硬盘里读取睡眠休眠前的工作进度。而且当电池耗尽的时候系统也会进入休眠模式
5 - 和模式1基本相同,但适用虚拟内存来保存数据
7 - 和模式3基本相同,但适用虚拟内存来保存数据
25 - 只能通过pmset来设置,系统会把内存里的内容永久保存到硬盘上,并关闭内存,唤醒时将从硬盘保存的数据恢复工作进度,这个设置最省电,但睡眠和唤醒的速度最慢
在Macbook上,强烈建议大家把hibernatemode设为0,因为这样你还可以通过下面的命令释放几G硬盘空间(视你的内存大小而定):

3.3. 关闭本地Time Machine快照(适用于Macbook)
如果你使用的是Macbook,并且启用了Time Machine功能,当备份磁盘不可用的时候系统会先把备份文件保存到本地硬盘,频率达到每小时一次。通过下面的命令可以禁止系统在本地硬盘进行备份:
sudo tmutil disablelocal
当然,以后你也可以通过下面的命令重新打开这个功能:
sudo tmutil enablelocal

===================================

随着SSD(固态硬盘)价格的走低,越来越多人都给自己的电脑配置了SSD,甚至苹果早已经开始应用到Macbook上。但Mac OS X虽好,但仍然存在一些未对SSD进行彻底优化的细节。这里总结了一些SSD的优化技巧,希望各位既能把SSD的性能压榨到极致,也能使它更加长寿。



1.1. 避免在SSD上进行跑分测试
大部分人都喜欢在装上SSD后马上进行读写测试,看到抛开机械硬盘几条街的分数会感到莫名的兴奋,但这是SSD在电脑里哭泣呢!


由于技术的原因,现阶段固态硬盘均采用MLC作为主力闪存芯片,平均擦写次数为5000-10000次,而且,别看MLC的理论寿命有5000-10000 P/E,实际上不同批次芯片之间的体质差异可以很大,寿命远低于5000P/E。刚好这些硬盘测试软件的原理就是瞬间向硬盘写入/读取大量数据,从而测出性能数值。所以,别没事就跑分找乐。


2.2. 开启TRIM支持
TRIM是针对SSD固态硬盘所研发的技术。原因是在原本的机械硬盘上写入数据时,系统会通知硬盘先将以前的擦除,再将新的数据写入到磁盘中。而在删除数据时,系统只会在此处做个标记,说明这里应该是没有东西了,等到真正要写入数据时再来真正删除,并且做标记这个动作会保留在磁盘缓存中,等到磁盘空闲时再执行。而这样一来,磁盘需要更多的时间来执行以上操作,速度当然会慢下来。


而当系统识别到SSD并确认SSD支持Trim后,在删除数据时,会不向硬盘通知删除指令,只使用Volume Bitmap来记住这里的数据已经删除。Volume Bitmap只是一个磁盘快照,其建立速度比直接读写硬盘去标记删除区域要快得多。这一步就已经省下一大笔时间了。然后再是写入数据的时候,由于NAND闪存保存数据是纯粹的数字形式,因此可以直接根据Volume Bitmap的情况,向快照中已删除的区块写入新的数据,而不用花时间去擦除原本的数据。


在OS X上有个叫做Trim Enabler的软件,可以一键开启TRIM支持,但我并不推荐大家使用软件去修改重要的设置。打开终端窗口,按着下面的步骤做,你可以手动开启/关闭TRIM支持:


备份需要修改的文件


sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.original
修补文件开启TRIM支持


OS X 10.8.1 和 10.7.5 或更新的版本


sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x4D)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage


OS X 10.8.0 和 10.7.4 或更低的版本


sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x51)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
强制刷新系统内核扩展缓存,使设置生效


sudo touch /System/Library/Extensions/
重启!


如果电脑产生了不良反应,下面还有两剂后悔药:


a. 只是想关闭TRIM支持


如果是OS X 10.8.1 和 10.7.5 或更新的版本,运行下面这句命令


sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x4D)|$1\x41\x50\x50\x4C\x45\x20\x53\x53\x44$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage


如果是OS X 10.8.0 和 10.7.4 或更旧的版本,运行下面这句命令


sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x51)|$1\x41\x50\x50\x4C\x45\x20\x53\x53\x44$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage


sudo touch /System/Library/Extensions/
b. 系统发生了严重的问题,要恢复备份


sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.original /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

5.5. 设置noatime标记
Mac OS X和其他类Unix操作系统一样,当用户每次访问文件的时候都会记录最后一次访问的时间,换句话说,你每次打开文件,系统都会向硬盘写入记录访问时间的数据,其实关掉这个功能并没有什么副作用。如果你要禁用这个功能,可以跟着下面的步骤做:


先下载配置文件,保存到 /Library/LaunchDaemons 目录下。再打开终端窗口,运行下面的命令:


sudo chown root:wheel /Library/LaunchDaemons/com.nullvision.noatime.plist
重启电脑,打开终端窗口,输入


mount | grep " / "
如果显示


/dev/disk0s2 on / (hfs, local, journaled, noatime)
则表示noatime标记已经成功设置。




==================================================
pmset的设置:
sudo pmset -b hibernatemode 3 standby 1 standbydelay 4200
sudo pmset -c hibernatemode 0
并且禁用虚拟内存。
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamaic_pager.plist




之前本站报道过在Mac OS X 下使用Intel X25-M G2 80G SSD做的相关系统优化,今天我们只讨论系统要做哪些优化命令。SSD硬盘以其优异的性能,已经在不少型号的Mac笔记本上得到了应用,本文以Snow Leopard10.6为例,详细说明了在苹果系统中使用SSD时的优化。





禁用文件系统的最后访问时间属性


该属性在平时使用的过程中,几乎不会用到,而打开“最后访问时间”属性会导致每一次访问一个文件时,有写操作产生,所以,关闭该属性可减少大量不必要的写操作。


具体方法为,在 /Library/LaunchDaemons 目录中创建名为com.nullvision.noatime.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>com.nullvision.noatime</string>
        <key>ProgramArguments</key>
        <array>
            <string>mount</string>
            <string>-vuwo</string>
            <string>noatime</string>
            <string>/</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
    </dict>
</plist>


这样,重启系统后,将以 noatime 方法挂载硬盘,不会再写入最后访问时间属性。


重启用,用 mount | grep " / " 可看到挂载的硬盘里多了一个noatime属性。
 
$ mount | grep " / "
/dev/disk0s2 on / (hfs, local, journaled, noatime)


图为优化好的Mac OS X Leopard系统使用界面
使用内存来写入临时文件


通过使用内存来代替系统原有的tmp目录,这样,大量写入tmp的临时文件就直接写在内存里,减少直接对磁盘的操作。
sudo su #进入root帐号操作
在 /var/root 目录中创建名为 ramfs.sh 的文件,内容为:
#!/bin/bash
ramfs_size_mb=256
mount_point=/private/tmp


ramfs_size_sectors=$((${ramfs_size_mb}*1024*1024/512))
ramdisk_dev=`hdid -nomount ram://${ramfs_size_sectors}`
newfs_hfs -v 'Volatile HD' ${ramdisk_dev}
mkdir -p ${mount_point}
mount -o noatime -t hfs ${ramdisk_dev} ${mount_point}
chown root:wheel ${mount_point}
chmod 1777 ${mount_point}


ramfs_size_mb 为使用内存的大小,这里为256M,可根据自身情况进行修改。使用内存模拟硬盘的目录为 /private/tmp。


在 /Library/LaunchDaemons 目录中创建名为 com.nullvision.ramfs.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>com.nullvision.ramfs</string>
        <key>ProgramArguments</key>
        <array>
            <string>/var/root/ramfs.sh</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
    </dict>
</plist>


这样,系统启动时,会自动运行 /var/root/ramfs.sh 这个脚本,来帮助我们在内存空间中划分出256M模拟 /private/tmp 目录。这样,系统运行时产生的一些临时文件就直接写入内存中了,减少了写磁盘的次数。


同时,可将一些在运行时会产生大量临时文件的目录软链接到 /private/tmp 下,只要满足:1)这些临时文件不会太大(我们只使用256M内存);2)不是特别重要的数据,即使丢失也无妨。
 
关闭Safari的Web Pageview


如果你像我一个,不使用Safari的Top Sites功能,完全可将该功能关闭掉。该功能会导致访问网站时,生成大量图片文件。
 
rm ~/Library/Caches/com.apple.Safari/Webpage\ Previews/* #删除所有预览文件
chmod 500 ~/Library/Caches/com.apple.Safari/Webpage\ Previews/ #设置该目录为只读


或者用下面命令禁止Safari生成预览文件:
 
defaults write com.apple.Safari DebugSnapshotsUpdatePolicy -int 2


关闭Spotlight索引


同样的,如果你不怎么使用spotlight,可将其关闭掉:
sudo mdutil -i off # 关闭spotlight索引
sudo mdutil -E #清除spotlight索引
在需要spotlight功能时,可再将其还原:


sudo mdutil -i on #打开spotlight索引

原创粉丝点击