LFU是用少的内存来实现高的效率 最近最不常用调度算法,软件统计数据被使用的频率,使用频率最低的数据首先被丢弃。
LRU是用多的内存来实现高的效率 最近最少使用调度算法,首先丢弃最近最少被使用的数据。
命中率 = 读取字节(缓存)/ 读取字节(总计)x100%
LRU 以时间为调度依据,并不统计频率。
LFU 则以频率为调度依据。
LFU有未命中,LRU没有
呵呵,我也才用一个星期而已,总结一下我对另外一个帖子中朋友们提出疑问的回帖,不对的地方请大家指正。
FancyCache效果比Ramdisk强很多,Ramdisk局限性太大,很多时候无法用内存替代硬盘做很多工作,现在则不然,有了这东西,我得出的结论就是,Ramdisk时代可以结束了,除非是什么IE缓存,系统tmp临时文件之类的需要用到目录指向的需求,其实单就这方面都是可用可不用,用Ramdisk存放临时文件的好处就是配合FancyCache完全不必写物理硬盘数据了,其他我就真看不出来Ramdisk有什么功能不会被FancyCache所替代了,呵呵。
FancyCache并不需要大内存,我们目前使用的传统机械硬盘缓存也就是16MB的常规,但是每提升1MB都会有很显著的性能提升。
二级缓存最好不要设置在Ramdisk中,不同的Ramdisk软件构架不同,优先级不一样,这个软件是驱动底层实现的,如果贸然设置在Ramdisk中,有几类Ramdisk的优先级别不如它,则会造成系统崩溃或者建立不了缓存文件,只有优先级别高于它的才可以,比如QsifRamdisk,我测试了,Qsoft Ramdisk即使被设置了缓存,也不会出问题,但是没有意义,潜在的应该也有不稳定因素。
设置延时数据后,如果设置的缓存空间满了之后会根据你的设置来决定数据去留,如果设置的是不常使用的数据优先被抛弃,则读数据被抛弃,写数据被正常写入物理硬盘,需要用到读数据时和正常的运行软件一样,重新读入,速度不会有影响,而如果是顺序抛弃,则根据数据进入内存的先后顺序进行读写抛弃,装入新数据,所以缓存越大,这种和物理硬盘间的数据交换就越少,速度就越快,反之,还是需要和物理硬盘进行数据交换,当然了,这个过程依然是提升速度的,因为即使不用这个软件,你进行电脑操作时也依然需要完成相应的读写操作,所以只能快不会慢。
你们觉得这个软件只有大内存才能用,我是在保证操作系统够用的情况下划出尽可能多的空间来使得整个电脑操作过程在内存中完成,但是实际上用了这个软件1MB就是1MB的效果,每1MB都能发挥效果,哪怕是设置16MB缓存都是有用的,前提是保证操作系统的正常内存需求,4GB内存如果用Windows7的话,划出 256MB或者512MB都是可以的。
反而说起来,FancyCache比起Ramdisk对于内存的利用率和利用效率更高,因为 Radmisk很多时候需要内存划出足够空间来满足要求,这就使得,举个例子,我要玩一个游戏纯内存运行,大小是2GB,我就必须划出2GB以上的Ramdisk来满足游戏拷贝和运行期间的数据交换需求,那么就需要内存远大于2GB来同时满足游戏和系统内存需求,但是FancyCache则不然,FancyCache得工作原理是截留所有和硬盘交换的数据,那么游戏不放在Ramdisk上,只要设置的缓存空间够大,则读取一次游戏后就实现了纯内存运行,当我不玩游戏时,缓存空间可以立刻被其他正在做的事情填充,而不会需要手动干预,最重要的是如果我没有2GB的内存,则我不能实现纯内存运行游戏,可是FancyCache设置512MB的情况下,当游戏正在进行的场景被载入,不到512MB,也依然是纯内存运行,这就使得自由度和利用效率大大增加了,具一步步分析原理需要费更多话,我就不罗嗦了,大家自己想想会觉得这极其恐怖,SSD完全可以无视。
对于不少朋友很自豪的说用SSD就不需要看此类软件了,我要说,完全理解错误。举个例子,我设置8GB缓存,然后延时写入6小时,在这六小时中,我进行了各种软件操作,包括打游戏,这六小时中,上网和游戏过程中产生了很多需要写入硬盘的临时缓存数据,而当我关闭游戏或者软件的时候,临时数据会被删除。那么你应该可以理解,实际上对于不使用FancyCache的情况下,物理硬盘在这个过程中是被反复读写的,但是最终很多数据在硬盘上被删除了,而使用了FancyCache之后,这一切都在内存中完成,最终需要写入硬盘的只是刚性写入需求文件,则实际上写入的文件数据量和次数会大大小于不用FancyCache的情况,对于硬盘速度和寿命会有显著提升和维护,SSD尤为如此,磁盘碎片也会大大减少。
另外说一下设置和选择版本问题。
如果只是对系统的速度提升有要求,那么分区版就最好,如果希望运行所有的软件都有效果,那么还是硬盘版更好,比如说,我希望装在D盘的某个游戏运行速度提高,而其他东西不要占用宝贵的缓存空间,则只需要运行分区版打开D盘缓存即可,如果希望运行所有东西速度都提高的话,那么一定是硬盘版比较好,前提是内存够大。
均匀写入缓存数据看你个人需要,举例说明就是,如果你想对外接存储设备开启延时,那么因为外接存储设备的数据速度慢,那么开启均匀比较好,不会造成大量数据涌入,但是如果是主挂硬盘,则没必要开启,延时很长的情况下,比如我开启六小时延时的情况下,六小时内大量的数据变化全在内存中完成,则不开启均匀写入,可以让最终写入的数据量小且更加整装。但是延时写入时间长一定要养成好习惯,重要数据工作完成后立刻手动写入延时,六小时内没有重要的数据,则无所谓。
缓写数据对于SSD尤其有用,缓写数据对于内存大的情况下,硬盘读写次数更加少,SSD的循环擦写概率会大大降低,像我开启4GB缓存并且缓写的情况下,一般应用是不会在启动硬盘,硬盘几乎处于休眠状态了,16GB内做了各种测试,觉得一般应用2GB内存缓存就够了。
因为软件原理是系统进行任何与硬盘有关的数据交换时,截留数据在内存,所以第一次运行某个软件基本上只有读操作,以后只能快不会慢,第二次运行程序,如果你的程序需求小于你设定的缓存容量,则必然是纯内存读写操作,完全秒开处理,只能越用越快,不会慢,除非,你用3GB内存运行windows7,然后设定2GB缓存,那就慢了,这个应用需要综合考量你的软件应用环境和硬件平台,进行合理设置,必然是飞一般的感觉。
http://www.romexsoftware.com/zh-cn/fancy-cache/
这是中文网站
我再举一个例子让大家可以更清晰地了解这东西的运作原理。
比如说,我想要看一部电影,但是我不想让看电影的两小时中磁头不停地寻道读取数据,减少硬盘损耗,那么我有两个办法。
第一,我有Ramdisk,则我把电影拷贝入虚拟硬盘,开始看,硬盘只需要十数秒一次读取完就好了,电影可以实现内存观看,硬盘不会再因为电影而工作了,休息两小时先。
第二,我有FancyCache,有Ramdisk,则我可以把电影随便从目标目录拷贝入任何一个目标容量大于电影容量的任意路径,同样,硬盘读取一次,但是,假如我设置了2GB的FancyCache缓存空间,而电影只有1.9GB,则电影完全进入内存,没有设置延时写入的情况下,电影真的被写入了目标路径,如果这个目标路径是物理硬盘,则真的对物理硬盘进行了写操作,如果目标路径是Ramdisk磁盘,则顺序是物理硬盘-〉FancyCache-〉Ramdisk,后两步完全在内存中完成,物理硬盘或者Ramdisk真的被占用了1.9GB,而FancyCache也有1.9GB的电影文件存在,也就是说计算机系统中存在了3个电影文件,目标硬盘(虚拟或者实体的),FancyCache缓存以及原始电影存放路径,各有一个电影文件存在,而我这个时候看电影,无论如何也是纯内存运行,无论目标路径是实体还是虚拟的。
这时候我因为实体硬盘或者虚拟硬盘被占用了1.9GB,我想释放出来,但是我还没有看电影,则我选择把刚拷贝的电影文件删了,那么虚拟硬盘和物理硬盘均完成一次删除的写操作,3个电影文件被删除了一个,FancyCache中的电影文件依然存在,我这时候点击原始电影文件观看,其实不会真的由磁头去读取电影文件,而是直接调用FancyCache进行播放,依然是纯内存播放电影,硬盘不会完成任何写或读操作。
如果我设置了延时写入呢?假如说是10分钟,则选择拷贝后,原始电影文件数据只是完成物理硬盘-〉FancyCache缓存的过程,不会真的向目标路径完成写入操作,我这时候开始看电影,十分钟后,电影文件被写入目标路径,不管是Ramdisk还是实体硬盘,写操作完成,但是在写入完成后不会读取这个东西,磁头依然是不工作的,仍然是内存在兢兢业业的干活。
但是如果我设置的延时是6小时呢?则在我看电影的两小时中,目标路径都不会真的被写入东西,虽然看起来目标路径是有东西的,但是它不是真实存在的,我删除也罢(清理空间)不删除也罢,都没有真的写入这个文件,看完电影后我选择删除这个电影文件,实际上只是看起来没有了,但是系统记得,原来6小时后应该把这个文件写入的,现在不用写了,也就说至始至终,所有的操作完成,物理硬盘也不过就是花了十几秒读了一次电影文件而已,接下来一直休息了,无论对机械还是SSD都是这个原理。
同理,大家仔细套用思考一下,平时的工作,办公还是游戏,还是上网,还是下载,都是内存,完成,什么BT,电驴,都是内存搞定,只是有朋友会说,我用Ramdisk下载BT和电驴文件也是一样的,不会损耗硬盘,其实不然,我要下载一个8GB的文件,那么我需要内存大于8GB来设置一个8GB的Ramdisk才行,条件不太够,我只能还是真的写入了物理硬盘,但是用FancyCache则不然,我只有2GB的FancyCache缓存,看起来没办法完成这个8GB的文件纯内存下载,的确,无法完成,但是……我下载前2GB的时候,纯内存下载了,到了2.01GB的时候,开始写操作,真的开始写物理硬盘,一次性写入,接下来的2GB又是纯内存下载来替换了FancyCache原有的2GB文件,也就是说,实际上下载8GB文件只写硬盘操作4次,磁头只工作一点点时间,其他时间在放假,如果是BT呢?一次性要在硬盘建立一个8GB的文件,则其实只是建立的那一次和不用FancyCache的情况差不多,其实有点差别,不过不必深究了,接下来就还是上面的那个流程了。
大家可以看出,我有16GB内存的情况下,我设置6小时延时,而6小时中,我下载也罢,还是运行什么东西也罢,所有的读操作,只读一次,写操作,只要不超过8GB的数据量,则没有一次是真实写入的,那么假如我这六小时中下载的东西只是临时看看,准备关机前就删除,或者很多东西只是建立一些临时文件,则这所有的一切都没有对硬盘进行真实的写操作,到我关机时,我的硬盘基本没有工作,对于SSD意义尤为重大