老帖子,不能收藏了,只能手动保存一下了
帖子地址:https://bbs.pcbeta.com/viewthread-788320-1-1.html
Mac OS X 的休眠/睡眠Mac OS X相关, by buick.原文地址:http://ibuick.com/index.php/archives/macosxsleep我承认我有点儿瞎折腾,为了我那个可怜的小硬盘。但是,我觉得这个知识仍然应该被拥有大硬盘的同学们所了解。所以,我建议你看下去,保证你有收获。(没收获的话你也不敢打我) 这期日志说了两个事儿, Mac OS X 的 休眠/睡眠 (Sleep, Smart Sleep, Safe Sleep, Hibernate) 和页面交换文件。为什么要说,因为休眠/睡眠机制对于一些对笔电续航时间比较苛刻或者对数据安全比较苛刻的同学们有一定的意义,而页面交换文件,则于磁盘碎片,系统性能等有一定的联系。
(注: 本文基于Mac OS X Snow Leopard 10.6.2)休眠/睡眠 对于操作系统稍有了解的同学都知道,系统在闲置的时候可以进行休眠和睡眠,Mac OS X SL当然也不例外。当你合上MBP的上盖,系统默认就会进入睡眠状态(呼吸灯一亮一灭)。默认情况下,SL提供的是一种休眠/睡眠混合状态(官方称为Safe Sleep)。以MBP/MB为例,当你合上上盖时,整个系统会自行进入睡眠状态,这时系统会将整个内存状态写入一个磁盘上的文件中(/var/vm/sleepimage), 电池仅仅对内存加电,以保持睡眠前状态 (呼吸灯一亮一灭),这时你再打开上盖,系统会立即快速响应,回到睡眠前状态。当睡眠时间过长,电池不足矣维持内存电力消耗的时候,系统会转而进入休眠,不再对内存进行供电,类似关机状态(跟真正的关机状态不同),当你再一次打开上盖并接通电源时,你会看到一个加载进度条,这就是系统正在从sleepimage文件中读取内存状态到物理内存中,从而恢复到睡眠前的状态。整个的过程,就是Safe Sleep。这个特性最早在2005年被首次带入到PowerBook中。这个sleepimage文件,就是用来保证安全睡眠的法宝。但是,如果此文件在写入或读出时产生问题,常见的一些机器“睡不着”/“醒不了”,多数也是因为此文件。找到这个文件非常简单,打开终端,输入
cd /var/vm;ls -al即可看到这个文件的详细信息。这个文件的大小,同你物理内存的大小一致,也就是说,你有4GB物理内存,就会有相对应的4GB大小的sleepimage文件(这也是我为什么要删除它的原因)。系统提供的这种睡眠方式,足够安全,也足够满足一般用户的需要。但是,当我们对电池续航有苛刻要求的时候,我们就可能需要系统直接进入休眠状态,以节省电力。这个时候,我们需要进行一些设置。对于终端命令控的人来说,利用终端命令,无疑为最快最方便的方法。首先,查询当前系统默认睡眠/休眠设置。终端中敲入命令pmset -g
图中需要注意的地方有,hibernatefile这一行,前面我们讲过这个sleepimage文件,你可以通过
sudo pmset -a hibernatefile <filePath>来重新指定这个文件的位置,但是请注意,这个文件必须存在于root卷宗之上(启动卷宗),所以不要尝试指定此文件到外置卷或非启动卷。还有一个需要注意的参数,就是hibernatemode这个参数,此参数代表着当前系统默认的休眠/ 睡眠模式。SL在台式机和笔电上默认值是不同的,在台式机上这个值为0,也就是普通意义上的睡眠(睡眠时不会在磁盘上产生sleepimage镜像,只对RAM进行供电,如果中途断电,所有未保存内容全部损失),而在笔电上,这个参数的默认值3,表明对RAM进行供电保持状态并同时将RAM内容写入sleepimage,当电力消耗不足矣维持RAM正常工作,则进入休眠状态。当然,我们还可以将它设置为1,表明,直接将RAM状态写入硬盘而直接进入休眠状态。(状态5和1相同,7和3相同,但是5,7必须在系统起用“安全虚拟内存时”才起作用)。举个例子,如果笔电当前值为3,而我并不想要这种占用磁盘空间的睡眠/休眠模式,那我可以终端输入
sudo pmset -a hibernatemode 0来设置模式。当设置完此模式后,输入
sudo rm -rf /var/vm/sleepimage将睡眠镜像文件删除,并立即重启电脑,这样,你就轻松的在硬盘上省出和你物理内存同样大小的空间。但是注意,选择模式 0 有风险,如果你没有及时的保存未完成文件和状态,一旦电力耗尽,则所有未保存的状态都会丢失!!!当然,如果你对续航时间比较在意, 完全可以设置为
sudo pmset -a hibernatemode 1这样,系统会直接将当前状态写入睡眠镜像文件并关机。如果你实在对终端命令很恐惧,可以去 http://deepsleep.free.fr/ 下载deepsleep widget,这个的效果和模式1相同,如果你想更方便安全的在各种效果中转换,我推荐你下载这个三方偏好设置面板(Smart Sleep)。这个程序刚刚更新,与64位雪豹的偏好设置面板完全兼容,而且有详尽使用说明,在此不再累述。顺便说一句,如果你的机器睡眠功能不正常,我建议你删除那个睡眠镜像文件后重启,一般都能够解决问题。你可以在终端键入以下命令:
sudo rm -rf /var/vm/sleepimage;sudo reboot页面交换文件
页面交换文件,就是我们熟悉的虚拟内存页面交换文件,在Linux/Unix上叫swap file, Windows上叫page file。这里将要说两个问题,移动swapfile和监视swapfile 当RAM压力增大时,系统会频繁的从swap文件读取/向swap文件写入内存内容。这个操作。在HDD极易引起碎片的产生,和拖慢当前卷宗上的文件存取。我们可以通过移动这个文件位置,来减少swapfile产生的碎片对系统盘的性能影响,这也是Linux/Unix可以在安装时自定义swap卷。(如果你只有一块物理硬盘,那么移动swap将意义不大!)。要修改默认swap文件位置,需要编辑/System/Library/LaunchDaemons/com.apple.dynamic_pager.plist这个文件。新手推荐使用property list editor(随XCode安装)或BBEdit(单独下载)。例如默认此文件内容应该如下:
我们可以看到 /private/var/vm/swapfile (或者/var/vm/swapfile) . 这就是当前系统默认的swap文件路径。我们可以通过改动这个路径,达到转移swap文件的目的,例如,修改为:
修改完毕后,保存文件(注意,这个路径一定要正确,不然系统将会运行在无交换文件状态,极其不稳定)。重启系统。重启系统后,终端敲入ps -wax | grep dynamic_pager -m1命令观察swapfile是否存在在新路经上,接着敲入ls -al /Volumes/Swap/.vm观察新swapfile文件大小(SL 默认为64m起)确认无误后,终端执行sudo rm -rf /var/vm/swapfile*来删除老的swapfile残余就大功告成了。那么,如何通过对swap文件的监视,来判断系统性能问题呢,这个比较简单,我们可以通过几点来验证。安装istat pro widget, 观察下图红框中的部分:
如果swap文件变得非常大,比如512M, 1024M并且Page out极高,说明你的物理内存不足矣有效支撑目前系统的压力。使用终端命令sudo fs_usage -f filesys | grep dynamic_pager如果发现输出相当频繁,而且文件访问速度越来越慢(终端输出中第四列的数字代表文件访问时间),则表明你的RAM不足。
3呃呃呃得得得得得得的 还真不懂。 希望能解决
页:
[1]