PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

谈大容量内存的各种使用方案对磁盘效率影响

  [复制链接]
181#
变心金刚2 发表于 2012-10-7 23:28 | 只看该作者
jeffxl 发表于 2012-10-7 23:09
缓存并不用来无差别减少IO读写。
缓存设计目标至少为:
1、无关痛痒可以不缓存

我是一直在问家用的IO压力高的,缓存效益高的究竟具体是什么应用呢?
硬盘灯显示着硬盘的操作频繁程度,很直观也很实在,而XP的硬盘灯不怎么闪的同时操作应用依然是很快的,当年从256MB内存主流过来的都清楚当内存加大充足时XP既快速硬盘灯又不爱闪。常用的软件并不能让Win7相较XP更节省IO,静态时更不能,那Win7的缓存机制就剩下可能的速度优势了是吗?那么能说Win7在运行常用程序时速度比XP快吗?有屏幕录像或者屏摄可看吗?
182#
mcszjs 发表于 2012-10-7 23:32 | 只看该作者
本帖最后由 mcszjs 于 2012-10-7 23:37 编辑
变心金刚2 发表于 2012-10-7 23:28
我是一直在问家用的IO压力高的,缓存效益高的究竟具体是什么应用呢?
硬盘灯显示着硬盘的操作频繁程度, ...


硬盘灯闪只代表硬盘有IO,但就肯定代表不了IO压力大不大,你不会认为灯闪得厉害压力就大吧?

你想举例,我是想到一个,不过我没试过,你那么支持XP,你可以试试,告诉我答案。开机后运行最新的PS,第1次和第2次差别,WIN7和XP分别有多大?我只记得HDD上,WIN7开第2次快N多。XP我没试过。 而且微软设计系统又不是只为你1个人设计的,你不用的东西,不代表用他的人就不多,微软不按你想的来设计就是错的?这逻辑让我好想笑。
183#
jeffxl  楼主| 发表于 2012-10-7 23:35 | 只看该作者
实体举例1:
您说的QQ运行时产生的即时IO、在线播放音乐产生的流媒体IO、BT下载产生的IO,这些在理论上无法缓存或不符合全局有利原则。假设能缓存,那么用户体验也是一致的。别人发来个带图信息会让你机器很卡吗?如果能缓存的话不写盘会让你感觉变快了?在线播放音乐的流写入会导致你很卡?然后被缓存延迟了写入你就觉得机器变快了吗?BT软件现在自身都有定向延迟写缓存,有没有系统参与会有体验区别吗?  这些都无关痛痒,不影响体验,这些大部分理论上也无法缓存。用户行为产生的单次HOST下行数据无法预测和预读到缓存,除非他能知道你想做什么而去本地或网络上预读。如果能再次读取就符合命中率原则了,这时如果在缓存命中率排行维护列表中不至于被淘汰(这就是XP和WIN7的区别,WIN7的可缓存容量大,可以维护更长的缓存命中率列表来提高命中),但这又不是你说的那些类型。

实体举例2:
魔兽世界,在内存足够的情况下,假设运行WOW.EXE后还剩余3G内存,对于WIN7来说这3G全部可以用来做资源载入缓存并自动产生效益。如果你某次刷了某个副本读过一次副本蓝条耗时20秒,你今天关机前又在魔兽世界里其他地方转悠,这个过程会积累大量材质资料数据在RAM动态缓存中,因为WIN7的可用缓存是动态未使用的RAM空间,也就是说有3G可用,你2小时后再次访问这个副本有很大的几率此副本的资料载入数据还在动态缓存当中并没有被淘汰(都为可能,但命中可能性比XP大很多,后文详解),此时你进入这个副本需要的材质等资料可以即时从缓存内获取,并不产生或很少产生磁盘读IO就可以完成读蓝条载入副本,耗时假设7秒,那么这就节约了13秒的时间。换成XP场景,虽然同样有3G剩余容量,但XP并没有从最大剩余可用RAM的角度去利用和维护缓存列表,同样的情况下XP载此场景下这个副本的材质资料数据被淘汰出缓存的几率会非常的大,再次访问这个副本是你必须全部重新载入一次这个副本的资料耗时和第一次几乎相同(这里有网络交互误差)。

我虽然不知道XP维护IO缓存的可用阀值是多少,但是从使用经验来看并不是最大化利用RAM可用容量做缓存命中列表的维护,同比场景下的缓存命中率是低过WIN7很多的。

184#
jeffxl  楼主| 发表于 2012-10-7 23:48 | 只看该作者
在内存足够的情况下,WIN7会最大可能用剩余RAM的避免重复的资源读取,而XP不是,这就是区别。
185#
变心金刚2 发表于 2012-10-8 00:14 | 只看该作者
jeffxl 发表于 2012-10-7 23:35
实体举例1:
您说的QQ运行时产生的即时IO、在线播放音乐产生的流媒体IO、BT下载产生的IO,这些在理论上无法 ...

游戏本身可以为XP缓存材质
186#
jeffxl  楼主| 发表于 2012-10-8 00:21 | 只看该作者
变心金刚2 发表于 2012-10-8 00:14
游戏本身可以为XP缓存材质

没懂您的意思。

在内存剩余容量都为一定的情况下,XP在经过长时间IO读写以后,被驻留在IO缓存里的内容经过不断淘汰,因为驻留容量的差距和动态可用性差距,导致WIN7的内存利用率大大优于XP,也就是说您有很多内存没有使用,WIN7会优先帮您全部利用起来作为“IO加速器”最大可能驻留你曾经访问过的数据,按命中率淘汰机制维护缓存列表,驻留容量是动态收益,在需要时能无限接近100%的内存利用率,这些还并不需要您人工维护。这个效益是XP远远不能达成的,这会减少非常多的重复读IO。
187#
变心金刚2 发表于 2012-10-8 00:27 | 只看该作者
jeffxl 发表于 2012-10-8 00:21
没懂您的意思。

在内存剩余容量都为一定的情况下,XP在经过长时间IO读写以后,被驻留在IO缓存里的内容经 ...


游戏本身已设计可为XP量体裁衣,视其内存大小将可以缩短等待时间的材质等缓存入空闲内存中,而且游戏本身才最了解该缓存哪些更有效率
188#
mcszjs 发表于 2012-10-8 00:34 | 只看该作者
变心金刚2 发表于 2012-10-8 00:27
游戏本身已设计可为XP量体裁衣,视其内存大小将可以缩短等待时间的材质等缓存入空闲内存中,而且游戏本身 ...

你还真天真,游戏程序再怎么设计,你认为它能拿到比系统更高的优先级吗?别这么想当然好不好。如果系统不让那些数据留在内存里,你游戏程序再怎么优化,也只能做到等系统丢掉后叫系统重新读那些数据进去而已。先把这道理搞懂吧。
189#
jeffxl  楼主| 发表于 2012-10-8 01:31 | 只看该作者
本帖最后由 jeffxl 于 2012-10-8 01:57 编辑
变心金刚2 发表于 2012-10-8 00:27
游戏本身已设计可为XP量体裁衣,视其内存大小将可以缩短等待时间的材质等缓存入空闲内存中,而且游戏本身 ...


进程有权利在自己隔离的保护模式内存私有地址下向操作系统申请内存空间,并可以任意使用和载入资源没错,但任何应用包括游戏都不知道下一步需要什么,除非做命中率统计预算和热度实时统计,这些都是操作系统缓存的事(操作系统缓存工作在进程外部,是全局透明的)。而且如果某进程申请额外的空间用来存放本应用的资源,那么这些资源占用的容量就为进程私有占用,对于操作系统来说,它看到的可用内存容量减少了,被这个进程申请了。如果还按你说的游戏知道什么东西需要缓存,而不是基于外部命中率和热度统计的话,进程(应用)是如何猜测我今天会下哪些副本,去哪些地方需要读那些材质?您是如何知道我下一步用户行为要做什么的?我是不是需要把魔兽世界20G的材质都读到RAM里(假设你内存有32G)。如果是这样的话,读入全部WOW材质资源到内存(假设WOW.exe是64位版本,操作系统64位,解除单进程2G内存提交限制)来做进程私有缓存以保证用户到哪里去,内存里都有相关材质。那么操作系统层面会发现,任务管理器WOW.exe这个进程至少需要占用20G的内存私有容量,32G除开20G的WOW.exe的内存占用还剩12G,加上1G左右的系统本身还有杂项的占用,其他应用和操作系统可分配的剩余内存还有11G。我可以这样说,这20G的材质调用有90%是浪费的。操作系统白白浪费了十几G内存用来保证您任何时候都可以直接从内存读到某个地图的材质,其实您本次游戏一共需要的材质可能就3G而已。

任何进程只能访问且只能访问和使用自己申请到的地址,并在保护模式下可私有性的调配这些资源,这些资源被这些进程独占且隔离,只要您提交了请求,一般情况下操作系统再也无法过问和干涉你拿他干什么去了。一般的程序员设计应用时不会考虑我什么时候才读到某个资源,那是系统缓存考虑的事情,在更高的层级发挥效益。软件设计师很多时候无法也不能预计资料载入请求的分布,这个和用户行为还有软件运行规律有非常大的关系。某些定向的应用设计确实可以在进程私有地址常驻资源,那么这些资源必然是程序员可以预计在逻辑上是必须的资源,时时都在且可能要访问。您说的游戏材质载入不属于这种情况,游戏引擎无法预判您要到游戏世界中的哪里去。

任何软件都不知道系统缓存的存在,操作系统缓存的作用是全局的且对应用是透明的,这在高于应用软件的层级产生效益,且不影响整体可用内存的分配,是动态可用的效益。
190#
jeffxl  楼主| 发表于 2012-10-8 01:35 | 只看该作者
本帖最后由 jeffxl 于 2012-10-8 01:58 编辑
变心金刚2 发表于 2012-10-8 00:27
游戏本身已设计可为XP量体裁衣,视其内存大小将可以缩短等待时间的材质等缓存入空闲内存中,而且游戏本身 ...


您猜想应用可能会知道下一次将要读什么的理论就算成立,占用的也是自己的进程私有空间,这大大增加的程序的内存占用,降低了操作系统的内存管理效率,白白的浪费了内存做了没有意义的事情。


类似这种事情,只有系统缓存(对于应用是外部透明的)才有最大效益,系统缓存的申请(由系统按热度自动动态管理)并不影响剩余内存可被进程占用的容量,是动态可用容量。而且只有基于命中率统计和热度统计的算法才有最大效益,无法预判用户未知行为产生的读IO并预读RAM。就算能预读也需要用户行为长期判定和统计做用户长期行为预读列表,这是WIN7另一个功能在起的作用,叫做Win7 SuperFetch 超级预读。
191#
jeffxl  楼主| 发表于 2012-10-8 01:57 | 只看该作者
本帖最后由 jeffxl 于 2012-10-8 02:01 编辑

一般情况下,譬如WOW.exe的材质载入IO逻辑是这样的:
常规情况下(效果全开),WOW.exe大概占用800M---1.5G内存,这个进程并不常驻太多材质数据,大部分数据需要时从DATA文件夹材质库实时读取,进程本身并不知道外部有没有缓存,一概认为是从磁盘实体IO读取。

对于WIN7操作系统看到的是这样的:WOW.exe假设此时占用1G内存,PC有4G内存,WIN7 64位旗舰加杂项占用1G内存,还剩余2G系统可用来在外部做全局动态缓存使用。这2G不仅仅为WOW.exe服务,但是作为前台应用,WOW.exe进程申请IO访问的频率肯定是最高的,操作系统此时会“非常关注”WOW.exe进程产生的IO。因为基于热度统计,此时WOW.exe进程在游戏时产生大量重复的资源读取请求会被系统捕获并做热度统计,必然超越其他所有进程而获得更高的资源缓存优先级(这些都是自动且透明的)。

这时WOW应用看到的:WOW.exe进程因为玩家穿梭在各大地图和副本,总在请求资源载入,一般只保留当前角色所在的材质资源作为当前即时演算并显示在屏幕上所用。其他材质资源为了进程资源占用最优化,一概在角色离开某地后放弃那些材质资源。WOW进程每次发起的读IO请求都是标准的操作,对进程来说不存在是从缓存中直接命中还是从磁盘上读取的,WOW进程不关心这些,也并不知道。

此时操作系统会做的IO分配操作:WOW进程经常会访问一些材质,特别是这次游戏中角色经常去的地方,基于热度统计原理,这些内容会被缓存维护列表“特殊照顾”,利用所有没有使用的RAM容量做这些材质的缓存操作(这是缓存既定算法,无需人工干预),系统其实并不知道他缓存的是啥,因为他不需要关心,他只知道WOW进程经常在调用这些东西,那么他就把这些资源的缓存优先级提高,在淘汰算法中这些资源甚至都热到无法淘汰出缓存维护列表(因为是前台游戏进程,IO和访问集中度比其他进程高是非常正常的),那么系统相当于常驻了这些资源。站在操作系统全局上看所有进程占用,虽然拿所有剩余内存容量最大可能(还是自动且透明的)缓存了尽可能多的游戏材质数据,但WOW.exe的内存占用还是1G左右。

其他应用软件看到的:这个时候,虽然WOW占1G 系统和杂项占1G内存,4G内存剩的2G由系统缓存动态调配被WOW占用了不少用来维护材质读取IO能在WOW进程需要时(WOW进程还是不知道是从哪读到的,一概认为是从磁盘读取的)直接从缓存命中,这样就欺骗了WOW进程,而读取某材质的速率是内存的速率。但其他软件还是认为操作系统可用内存容量为2G可用。为什么?因为作为系统缓存部分做了动态规划,从优先级上更服从于应用本身的进程占用。如果正好某应用比如你需要WOW双开,你切换出去又执行了一个WOW进程进入游戏又占需要占用1G内存容量,那么系统可以随时让出或者叫做释放部分缓存内容服务于前台进程,这时并不影响其他进程继续申请内存,直到真实可用的未使用内存被占用干净,这时还可以使用申请内存,系统会调配虚拟内存来响应需要的进程呢。

什么是效益最大化,任何服务于进程私有的资源载入占用如非必要都是自私的程序设计,这影响了系统整体效益的发挥,什么时候可能载入什么东西不是程序设计需要考虑的问题,拿内存空间的占用换IO效益是非常愚蠢的做法。你无论如何设计也不会有操作系统动态缓存并全局动态分配有效益。
192#
变心金刚2 发表于 2012-10-8 02:57 | 只看该作者
本帖最后由 变心金刚2 于 2012-10-8 03:00 编辑
jeffxl 发表于 2012-10-8 01:57
一般情况下,譬如WOW.exe的材质载入IO逻辑是这样的:
常规情况下(效果全开),WOW.exe大概占用800M---1.5G ...


游戏为什么要预测游戏角色将要去哪儿?这一个你所处区域内你能进的区域能最快退回的区域当然是游戏程序已经很清楚了。而对于Win7系统倒是游戏自身的变化,你控制游戏角色的每一步都可能是热数据,Win7系统怎能知道游戏内的地图接壤,行动限制范围和游戏对游戏者所做出的选择的所有反应?系统要这样做就得老是丢弃缓存可能的热数据,这个效率才底下。所以我看应该反过来,系统要判断那些是热数据才需要32G内存都不够,而游戏自身的判断是结合游戏角色所在范围,可进行的行动可能,还有游戏与游戏者互动的所有可能性。游戏所要求的内存就是包含了这些工作,它是效率更高的。
193#
jeffxl  楼主| 发表于 2012-10-8 03:35 | 只看该作者
变心金刚2 发表于 2012-10-8 02:57
游戏为什么要预测游戏角色将要去哪儿?这一个你所处区域内你能进的区域能最快退回的区域当然是游戏程序已 ...

是你自己说的“而且游戏本身才最了解该缓存哪些更有效率” ,你其他的我还没看懂,我慢慢看先
194#
jeffxl  楼主| 发表于 2012-10-8 03:37 | 只看该作者
本帖最后由 jeffxl 于 2012-10-8 05:29 编辑
变心金刚2 发表于 2012-10-8 02:57
游戏为什么要预测游戏角色将要去哪儿?这一个你所处区域内你能进的区域能最快退回的区域当然是游戏程序已 ...


您没有懂得什么是热数据统计,热数据不存在丢弃一说,丢弃的只是相对的冷数据。也不存在多少容量都不够的说法,对于WIN7是剩多少内存则有可能利用多少(还要看你IO压力),热统计就是寻找最大重复IO可能性的算法,是基于数据IO在一定时间线上的“经验统计”。经过时间的积累后多次读取的数据自然就不会缓存扔掉,从概率学上来说,您下次更有可能再次访问这些数据。

你说的这些东西,仅需要系统全局缓存即可,热统计和命中率是唯一指标,操作系统甚至无需关心缓存中的内容是什么东西,一概按热度排列缓存优先级并淘汰相对冷的数据,这甚至和剩余内存容量的大小无关(不存在需要多少容量缓存多少内容的说法),按规则办事即可,剩余内存大效益更大而已。仅一条,利用有限的剩余资源造成最大的IO效益是唯一原则。

其实仅需要从IO层面判断那些是热数据,系统层面不需要关心关心角色移动规律,用最简单的判断方式寻求最大效益。您说的游戏进程按角色可能的行进规则预读数据并不是缓存一种方式,这个缓存并没有任何冲突,WOW在大地图上是无缝地图,本来就一直在预读周边很广泛范围的材质。

命中够高才有效益,不是由游戏进程能够决定和猜测的。
195#
变心金刚2 发表于 2012-10-8 04:09 | 只看该作者
jeffxl 发表于 2012-10-8 03:37
你说的这些东西,仅需要系统全局缓存即可,热统计和命中率是唯一指标,这些东西不能YY。

命中够高才有效 ...

全局缓存?系统压根不知道角色可能甚至将要去的区域和那个区域电脑控制的角色的反应所以缓存不可能比游戏准确,而你控制的角色暂时不可能去那儿,相应的游戏不可能给出的反应Win7也不知道,因此该丢弃的缓存又不如游戏自身有效。对系统而言所谓的热数据的确定远比游戏能限定的范围要大,漫无目的。加之整个系统可能除了游戏还在处理别的任务,可能下载软件要求了内存,可能杀毒软件防火墙申请了更多内存或者CPU资源,此时系统为了腾出内存需要清理部分缓存……这样下来又容易造成该缓存的没缓存,不该丢弃的倒丢弃了,CPU还忙东忙西。还是游戏自身安排有效,而我看Win7的缓存机制未必会去替游戏缓存什么,游戏的效率还得游戏自身主动去获得。
196#
jeffxl  楼主| 发表于 2012-10-8 04:35 | 只看该作者
本帖最后由 jeffxl 于 2012-10-8 05:07 编辑
jeffxl 发表于 2012-10-8 03:35
是你自己说的“而且游戏本身才最了解该缓存哪些更有效率” ,你其他的我还没看懂,我慢慢看先 ...


反过来我想您提问一下:
如果2小时前我进过4个副本3个战场(其实战场也是副本的一种),按您的说法,是如何判断我下一步可能会进哪个副本?如何才能避免我下一次进入这些副本的IO读需求最低?现在的魔兽世界,能够在任意地点排进任何副本,这些都为游戏中可能的行进最短路线,你甚至不需要移动就可以排进你想排的副本,游戏引擎是不是需要在进程内“缓存或预读”所有副本资料?

按进程自保留和统计数据热度的理论,玩几个小时我需要保留大量数据在进程当中,譬如5小时从进程流过的材质数据可能有5G。进程需要继续申请到5G内存需求来保存这些东西吗?如果进程提交了内存申请,系统少了5G资源,如果只有8G内存,系统用1G,其他应用还有提交内存请求的余地吗?如果我需要这时需要3开魔兽呢(8G可以3开魔兽)?

退一步说,大部分常用用户进程目前都为32位进程,很多应用自己进程运算使用就需要不少了,甚至接近2G极限了,如何在进程里再去做私有缓存去运用其中?而且这是真私有,你进程用了,其他进程就不可用这些容量。一般的游戏只保留当前即时演算需要的材质,魔兽世界在大地图上有角色周边资源预读效益是特殊情况,为的是照顾的是无缝地图的IO体验(这当时可能是游戏业界首例无缝大地图)。


其实您最后谈到的问题都是基于用户行为模式的预读,并不是缓存机制了。预读并没有缓存靠谱,预测用户行为经常会失败,而热数据统计或命中率原则属于时间线上本次开机已经发生过的用户访问经验规律统计,在通过一定时间(时间越长几率越大)的命中率学习后,如果剩余内存容量是足够的,命中率倾向都是无限在提高(仅缓存容量受限);内存容量有限的情况下,内存复用率无限提高。
197#
jeffxl  楼主| 发表于 2012-10-8 04:48 | 只看该作者
本帖最后由 jeffxl 于 2012-10-8 05:16 编辑

操作系统热缓存仅仅是数据缓存,操作系统认为那只是一些热度高的IO数据,不关心数据内容。如果进程下次访问同样数据时,向磁盘请求某个LBA地址的IO读请求,操作系统拦截到进程这个请求后先查询是否为缓存热数据,如果是的话,直接拦截请求从缓存中把数据发给进程使用。您角色经常去的地方,甚至只要是去过的地方(如果剩余内存够大)需要的材质数据都会按照热度排列加权计算,效益一定是最高且资源利用合理的,此效益的产生并不影响剩余内存的继续使用(比如又开软件,其他进程又需要内存)。

其实这里只有经常用的数据和不经常用的数据而已,操作系统的判断依据仅是热度,这对IO压力分散就已经足够了。不需要动用游戏进程内的用户行为预测或者判断周边的行进路线可能性那么复杂的东西,而且效果也没有缓存系统做得效率高。要读的数据你总是要读的,只要你读,系统就可以统计出热度(这是全局热度,对所有进程产生的IO平均加权),而且对所有应用一视同仁,共享缓存资源(WIN7上是所有未使用的内存)。非常简单的方式最大可能的减缓磁盘IO效能问题,把IO重复访问产生不必要IO压力这个问题的复杂度一次性留在操作系统设计时考虑,不需要软件设计师每设计一个软件都考虑自身读需求分布和判定将来可能读到什么,如果是这样就把复杂度扩散到每个应用了,这增加了每个程序的逻辑复杂度而且还是共同的复杂度。单一化基于操作系统的IO压力分散方案,譬如动态缓存是本地执行效率和整个IT行业软件IO效率最有利的统一解决方案。

特殊行业,譬如网吧无盘镜像的缓存这类。定向的、基于进程内部的私有缓存这时的效能是比系统自带缓存高不少的,这是特殊情况。和资源访问范围有关,范围集中、访问分布集中且可控,那么可以启用这类应用的私有缓存架构。在无盘软件上这种私有缓存是基于后台服务的(你可以看做是进程的一种)。

某些游戏中的CONFIG文件可能有类似的材质缓存(进程本地调配的)可调设置,那些缓存仅关心游戏逻辑中程序员可预计的极高热度甚至是必然需要的逻辑材质需求缓存,可能IO密度高但总量非常低(仅仅最最常用的通用材质或者游戏资料),大部分游戏材质或资料载入的IO压力分散还是依赖的系统缓存
198#
jeffxl  楼主| 发表于 2012-10-8 06:18 发自PCEVA移动客户端 | 只看该作者
本帖最后由 jeffxl 于 2012-10-8 06:25 编辑

实例:网吧游戏服务器使用10g的内存对1000g的游戏做热数据模型的缓存,仅经过一天的热统计学习,访问命中率就超过90%甚至95%以上。您要知道这是网吧针对所有1000g数据的热统计1天造成的结果。1天也许产生了5T的数据请求,实际的磁盘IO只需求了可能不到500M。
同样是游戏,这么多游戏只消耗10g固定的内存产生抵消90%以上磁盘IO的效益,您就可以知道一般用户的游戏IO访问重复性有多高了

其实wow这样的游戏 最热也就是最常读取的数据不会超过2g 4g内存的机器运行wow有相当大的几率在当次pc关机前游戏数据被系统缓存大量二次命中。这会极大的提高游戏体验。同样的环境,xp的命中率会低得多,剩余大量内存它也不见得会去利用
199#
hongqi8 发表于 2012-10-8 07:53 | 只看该作者
16g内存应该足够了吧
200#
变心金刚2 发表于 2012-10-8 11:15 | 只看该作者
本帖最后由 变心金刚2 于 2012-10-8 11:17 编辑
jeffxl 发表于 2012-10-8 06:18
实例:网吧游戏服务器使用10g的内存对1000g的游戏做热数据模型的缓存,仅经过一天的热统计学习,访问命中率 ...


系统怎么知道游戏中的那些数据将会成为热数据?游戏的所谓“经常读取的热数据”是没有标准的也没有时间范围的,系统不知道你在游戏的某处,并且多长时间内不可能从哪儿到哪儿和能干什么又不能干什么,就没法有效缓存,因为缓存和丢弃都没有依据。系统只能从第一秒开始就缓存数据,当还不存在热数据的时候,但一块数据在5分钟内比其他多读10次算热数据吗?然而可能几秒钟后另一块数据又超过它,然后它也潜伏不动了……这样很快几G内存就没了用户还没从中获益系统就已经开始丢弃缓存了。
Win7料不到哪些东西真正需要缓存,无法知晓游戏的进程估算缓存时间范围,它要漫无目的的占用,它还会把游戏缓存的了的数据视作热数据再缓存一遍……而且如果真的只需要2G的缓存那么XP也有缓存软件,并可以打开XP下隐藏未管理的内存,然而玩游戏却不会有帮助,这也是系统不太可能主动参与对游戏数据缓存试图加快游戏的原因——不是XP太老土那时候微软想不到而是没有作用。只有游戏主动向系统申请的效益才高,游戏才是有条件全局统筹
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部