Prefetch目录的作用
想起来要进行一下磁盘整理了,最近硬盘又是频繁狂转,自己实在想不出它闹什么脾气-_-!!
所以只能抱着做下磁盘整理的态度乱医了,想看看layout.ini里面都有什么文件(因为知道磁盘整理是通过此文件进行判断优化的),于是去C:\Windows\prefetch查找,汗,突然想起来前一阵迷糊之中把这个目录内文件全部删除了。
想不到什么去恢复,难道让系统恢复预读?但是试过貌似不管用,于是搜索了一下,找到如下内容:
下面的内容是在网上搜索的。经过实践我发现要恢复layout.ini,需要做几个步骤:
- 确认计划任务服务是否开启(控制面板->管理工具->服务,找到“Task Scheduler”服务,设置启动类型为“自动”。{如果发现“控制面板”中没有“管理工具”,请在左侧点击“切换到经典视图”})
- 进行注册表编辑:开始->运行,输入:“regedit”,确定。找到目录:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Memory Management \ PrefetchParameters,将EnablePrefeteher子键的值设置为3。
- 恢复loyout.ini文件,开始->运行,输入“rundll32.exe advapi32.dll,ProcessIdleTasks”,点击确定。
- 重新启动计算机。
标签:layout.ini, Task Scheduler, WinXP, 服务, 磁盘整理, 计划任务prefetch,预存取,这在vista用户可能知道的多些,其实xp下就有这一技术了,只是官方少有这方面介绍,更别提技术文档了。 这是xp一个隐藏的特性,用处是在xp登录进度条出现时,就把c:\windows\prefetch目录下的*.pf文件信息预先装载到内存中,以便于提高系统性能。这些*.pf文件是系统和应用程序启动时留下的预存取文件,描述了系统和应用程序每次启动时装载模块的信息和顺序,并且其命名方式中包含一个描述其完整路径的十六进制值。
另外,prefetch目录中还有一个重要文件,就是layout.ini这个磁盘布局初始化文件,它记录了所有预存取程序及文件的加载信息和顺序(按优先级排列),这也为这些程序文件的磁盘分配提供了最优化方案的依据。
说到这,不得不提一下“局部碎片整理”,按照官方所说,xp每隔3天就会自动进行一次局部碎片整理,我发现这个整理动作是分步实施的,而且是在系统空闲时才会运行,这多亏了刚装上的SSM截获了defrag的这个动作信息,连命令行参数都一并截获,这个重点留待稍后再说。(其实系统在启动时也可以进行局部碎片整理,使得启动时需要的文件能够被整理到相邻位置,这个功能可以在注册表中开启,HKLM\SOFTWARE\Dfrg\BootOptimizeFunetion下enable键由默认的N改为Y即可)用Filemon跟踪发现,系统进行局部碎片整理时,先读取layout.ini文件,然后调用defrag针对layout.ini中涉及的文件进行整理,然后把转移信息再写入到layout.ini中,这个自动整理不同于server2003系统的自动碎片整理功能(Auto Defragmenter)。
至于是否开启预存取,有不少争论,但是我坚决认为应该开启,否则系统速度会变得更慢。HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters目录下,EnablePrefeteher子键的值决定以何种方式开启prefetch,0取消,1只预存取应用程序,2只预存取windows系统文件,3同时存取系统和应用程序文件,xp默认情况下是3。以上这些prefetch相关功能依赖于task schedule计划任务这项服务。
现在该说那个重点了,系统自动调用的defrag的参数是什么?是-p -s和-b。-p后面跟着一个常量,例如5E4;-s后也跟一个常量,比如000018A4;-b后跟着盘符C:,那么这个命令行的例子就是:defrag.exe -p 5E4 -s 000018A4 -b C: 了。-b这个参数网上一直有传言,说是defrag的隐藏参数,但是官方不给出澄清,我也不知道是否真的存在,这回算是证实了。-b C:就是对预存取的文件进行局部整理,并且每次仅针对一个pf文件相关程序文件进行整理,-p和-s应该就是用来选择哪一个pf的,但具体那两个常量和被选pf文件有什么联系,还有待进一步分析。平时如果想对系统和应用程序文件进行一次优化碎片整理,可以在命令行中敲入defrag.exe C: -b,这样会对所有prefetch文件进行整理,完成后你会觉得系统的速度有一定提升。
经验之谈,如果不小心删除了prefetch目录下的文件,尤其是layout.ini文件,如何重建?敲入rundll32.exe advapi32.dll,ProcessIdleTasks命令,然后重启三次系统,就可以重建layout.ini文件,为什么是三次,我也不知道,大概和每隔三天整理一次有关系吧。