欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

Windows Vista的Superfetch会不会拖垮我们的硬盘?

很多朋友知道SuperFetch是Windows Vista中新引入的一个内存管理的辅助特性,可以有效地提升系统的性能。

然而有不少用户担心启用SuperFetch会不会拖垮我们的硬盘,从远景论坛的帖子来看,很多用户执怀疑态度。

其实大可不必担心,SuperFetch预取内容时,采用的是低优先级的磁盘I/O,不会影响前台的进程。

SuperFetch的主要作用是确保内存里具有正确的内容,把空闲内存充分利用起来。而不是像Windows 2000/XP那样,留着大量空闲内存不用,非得等到需要时再从磁盘里加载,大大降低整体性能。

盆盆评注:打个简单的比方,假设一栋居民楼共有20层,假设15楼的居民用到电梯的概率最高,那么平时应该尽可能让电梯停靠到15楼,这样不但有利于提升电梯的利用率,还能减少电梯的磨损。SuperFetch就是这个道理。

有用户可能会问:这么好的功能,为什么Windows Server 2008不采用呢?甚至进而怀疑SuperFetch的作用。

问题提得很好,SuperFetch的目的是提升前台进程的性能,预取前台进程的内容。而Windows Server 2008主要目的是用作服务器,几乎很少有前台进程,所以没有采用SuperFetch技术。

要真正了解SuperFetch的意义,就必须了解内存管理的原理,推荐大家观看盆盆三个有关ReadyBoost的Webcast。应aloki兄弟的建议,这里加上这三个Webcast的地址,大家可以到以下地址观看视频:http://www.microsoft.com/china/technet/webcasts/class/vista1.mspx

已发表 2007年5月30日 14:52 作者 ahpeng

评论通知

如果您想在帖子更新时接到邮件通知,请先登录。这里

订阅帖子评论使用 RSS

评论

2007年5月30日 15:06 by gore

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

第一次沙發。呵呵

2007年5月30日 17:48 by Asuka Zhang

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

盆盆总是能把很复杂的问题用比喻简化,一直很佩服这一点。

2007年5月30日 18:46 by Basara

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

你好,盆盆。初次见面。

我有这样一个问题:

SuperFetch所产生的文件是按照什么规则维护和更新的?比如,它总有个量的上限吧?再比如,我以前运行过的一个/一些程序现在已经被我删除了,而SuperFetch还保留着它们的相关信息,这不是白白占用磁盘空间和降低SuperFetch执行效率么?

唔,其实,我想说的是,盆盆还是没正面回答“Superfetch会不会拖垮我们的硬盘”这个问题。。。XD

毕竟,看着硬盘灯伴着咯咯的声音狂闪心情总是不会好;而我的硬盘也是花钱买的,也存有其他数据,不想它那么快挂……

2007年5月30日 19:13 by Alexis

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

比喻得很恰当。

2007年5月30日 21:04 by ahpeng

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

To Basara:感谢光临ITECN博客:)

这个问题提得很好。

SuperFetch有量的限制,不过是动态的,只要有空闲内存,就会Cache常用进程的页面和文件。

删除了程序,自然不会Cache其内容,不用担心。

硬盘狂闪,不一定是SuperFetch引起的,很多后台进程会产生磁盘I/O,可以用资源管理器进行查看。

SuperFetch缓存的是我们常用进程的内容,也就是说就算不缓存这些内容,也会很快用到这些内容。

而且系统仅在空闲时缓存内容,同时还使用低优先级I/O,不会影响前台的进程。

有了SuperFetch,就可以确保内存里时刻有正确的内容。等到需要这些内容时,就可以直接从内存里加载,而不需要从硬盘里加载。

2007年5月30日 21:16 by aloki

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

问题提得很好,SuperFetch的目的是提升前台进程的性能,预取前台进程的内容。而Windows Server 2008主要目的是用作服务器,几乎很少有前台进程,所以没有采用SuperFetch技术。

这上面的Windows Server 2008是不是笔误,应该是2000吧

2007年5月30日 21:23 by aloki

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

问题提得很好,SuperFetch的目的是提升前台进程的性能,预取前台进程的内容。而Windows Server 2008主要目的是用作服务器,几乎很少有前台进程,所以没有采用SuperFetch技术。

这上面的Windows Server 2008是不是笔误,应该是Windows Server 2000吧,另外盆盆能不能把那三个关于ReadyBoot的Webcast的连接粘出来,方便大家下载收看了,谢谢了。

2007年5月30日 21:28 by Basara

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

唔,果然是这样么,“就算现在不读,过会儿总是会读的”...XD

谢谢盆盆的解答XD

2007年5月30日 21:31 by ahpeng

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

To Basara兄弟:别客气,呵呵,还请多多光临ITECN博客,并推荐给您的朋友啊~

并欢迎多提意见和建议,多谢啦:)

2007年5月30日 21:32 by ahpeng

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

To aloki:您好!

Windows Server 2008,实际上就是Windows Server CodeName Longhorn,也就是Windows Vista的服务器版本。

Windows Server 2000,应该是Windows 2000 Server。

2007年5月31日 8:48 by Basara

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

嗯,听了盆盆关于SuperFetch的课程,受益匪浅XD

我会常来的:)

2007年5月31日 23:03 by aloki

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

To盆盆:

  谢谢了,我真是孤漏寡闻,昨天才知道Longhorn就是 Server 2008。还有能把那三个关于ReadyBoot的Webcast网址或名字粘出来吗?

2007年6月1日 7:23 by ahpeng

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

To aloki,三个Webcast已经添加到这篇文章的尾部,欢迎观看这三个视频。

2007年6月12日 1:01 by 火奴上尉

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

en  ...这个比喻很好,我会去仔细学习下,以前高中的时候是自己看杂志学的硬件,主要是为了自己组装电脑,所以太多的东西都是一知半解,现在正是学习的时候...  

2007年6月12日 11:02 by ahpeng

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

To 火奴上尉:

感谢光临ITECN,欢迎多来这里做客,一起研究微软技术。

2007年9月13日 17:32 by Lilium

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

今天玩<潜行者>发现Superfetch确实是硬盘杀手.

玩游戏的时候系统不停的预读四个600+M的游戏文件

硬盘红灯狂闪硬盘声音的的吓人,游戏根本无法正常运行.

切换出来一看,原来Superfetch从pagefile.sys中读取文件.都是从硬盘读,还整啥预读呀.禁用没商量.

偶也不在乎预读快那一点半点.明明这个Superfetch设计得很白痴,你们就不要帮他说好话了.

2007年9月17日 20:14 by ahpeng

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

To Lilium:感谢光临ITECN。

其实SuperFetch并不会缓存所有的大容量文件。尽管看上去好像在缓存四个600MB+的文件,但是实际上只是缓存其中经常读取的部分内容。

稍微分析一下就可以知道,如果全部缓存,内存肯定不够。

而且SuperFetch是采用低优先级的磁盘访问技术,不会影响前台进程。

2008年1月3日 13:34 by attackover

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

我对superfetch比较怀疑(大前提是系统资源较紧张)

   第一,即使它是有用的,但fetch哪一个用户常用程序呢,这里vista要做统计,而且这种统计应该是要消耗一定资源的。

   第二,fetch多少呢,是fetch一个页,一个磁盘块,还是其他?如果我常看电影,它是不是会把整个电影文件装入内存?

   第三,原文的比喻不恰当,电梯的使用是十分频繁的,且统计是有大量样本的(很多人用电梯),而对于不同的人,使用电脑不同程序很难说一定会出现集中使用某几个程序的情况(不常用电脑的人除外),也就是说用着用着,就会出现一种平均的状况,莫非superfetch将会fetch入我将用的所有程序?那就会使得哪一个进程都没法很好运行。

--------------------------------------

机器 1.8G CPU; 512M

superfetch开启  开机410  稳定400-

superfetch关闭  开机未测  稳定320

2008年6月15日 12:29 by BabyBear

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

以上评论中有若干比较可笑的观点

毕竟,看着硬盘灯伴着咯咯的声音狂闪心情总是不会好;而我的硬盘也是花钱买的,也存有其他数据,不想它那么快挂……

硬盘时干吗用的?Read&Write,你看着他闪心情不好,那你看着电脑的电源灯常亮不灭心情就好吗?

现在硬盘大都有3年的质保期,3年之后你的硬盘还不换码?厂商不会不了解现在大家都在运行什么程序,会让你的硬盘那么容易在三年内坏掉么?

既然你花钱了,就要让这个钱花得值,你花1万块钱买的电脑一年开机不超过10天,电脑当然不容易坏了,可以你不就等于赔了1万块钱么?这1万块钱可以修好几次把...何况电脑根本就不是你想象中的那么脆弱。

这上面的Windows Server 2008是不是笔误,应该是2000吧

其实在2007年说这样的话,很正常的,那个时候windows server 2008究竟叫什么还没有定下来。现在2008的RTM已经发布了,版本号6.0.6001,vista 6.0.6000

SuperFetch所产生的文件是按照什么规则维护和更新的?比如,它总有个量的上限吧?再比如,我以前运行过的一个/一些程序现在已经被我删除了,而SuperFetch还保留着它们的相关信息,这不是白白占用磁盘空间和降低SuperFetch执行效率么?

首先,这个规则肯定是复杂的,不然也不会作为一个新技术引进的。它产生的文件就是在你的windows\prefetch这个文件目录,你可以去看看,一般也就几百M,它保存的是你的应用程序信息。当你通过正常渠道卸载的时候,windows会自动通知superfetch删除与这个应用程序相关的信息,当你通过不正常方式卸载的话,经过一段时间,一般就是几天,那些常用的应用程序配置会渐渐替换掉这些不用的配置,所以不会出现你说的这种情况,微软怎么可能比你想得还要少呢。

硬盘狂闪,不一定是SuperFetch引起的,很多后台进程会产生磁盘I/O,可以用资源管理器进行查看。

这里应该是笔误,不是资源管理器,使资源监视器

资源管理器是那个Win+E出来的,可能楼主平时不怎么用

一个叫做Explorer一个叫做Resource Monitor

切换出来一看,原来Superfetch从pagefile.sys中读取文件.都是从硬盘读,还整啥预读呀.禁用没商量.

我想知道你是怎么看出来的。另外superfetch对正常使用的电脑,例如经常运行各种软件的系统作用非常大,但是如果你每次开机都靠在同一个大型游戏上,那么你还是把Superfetch关掉吧,因为这个时候与读取确实没什么意义了,另外建议你买一个Xbox360

第一,即使它是有用的,但fetch哪一个用户常用程序呢,这里vista要做统计,而且这种统计应该是要消耗一定资源的

你说的没错,但是这正是所谓的磨刀不如砍柴功,另外他是一后台服务的形式运行的,也就是当你CPU和内存有空闲的时候运行,所以它并不会影响你的正常系统运行,或者影响甚微。

 第二,fetch多少呢,是fetch一个页,一个磁盘块,还是其他?如果我常看电影,它是不是会把整个电影文件装入内存?

根据readyboost的要求,我猜测应该是以4K或者512K来缓存,他缓存的是应用程序数据,比如如果你运行real的时候,他会预先把real可能会用到的数据提前缓存到内存里,但是除非你每次都看同一个电影,否则他不会缓存电影文件这种东西。另外当你看1:00的时候会缓存2:00的内容,不过这是播放软件的操作与SuperFetch无关

原文的比喻不恰当,电梯的使用是十分频繁的,且统计是有大量样本的(很多人用电梯),而对于不同的人,使用电脑不同程序很难说一定会出现集中使用某几个程序的情况(不常用电脑的人除外),也就是说用着用着,就会出现一种平均的状况,莫非superfetch将会fetch入我将用的所有程序?那就会使得哪一个进程都没法很好运行。

你还是没有弄清楚superfetch的本质,它不是缓存应用程序,而是缓存应用程序常用的数据

期望大家都能提高自己的知识。

2008年8月5日 16:02 by tusooa

# re: Windows Vista的Superfetch会不会拖垮我们的硬盘?

to aloki:

Longhorn Server 才是Server2008

Longhorn是vista

说说您的看法?

(必填) 
必填 
(必填)