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

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

  [复制链接]
103#
jeffxl  楼主| 发表于 2012-4-26 03:03 | 只看该作者
本帖最后由 jeffxl 于 2012-4-26 03:05 编辑
yanleiberg 发表于 2012-4-26 02:57
我有两块SSD,还有3块机械硬盘。
现在我只想让ram为我的机械硬盘来做优先cache,很明显用windows自带的缓 ...


我楼上的回复和你的需求没有冲突,系统缓存对用户的所有存储卷是全局效应,并且是对用户层透明的,你无需关心它的存在,但是它一定会起到应有的作用。

你额外附加SSD这样容量价格比好过RAM的存储介质充当HDD的缓存也是有效提高IO响应的手段(RAM动态缓存还是做为SSD缓存的上一级缓存在产生它的效益)。


我在游戏服务器也会经常额外的提供一块单独的SSD作为HDD的缓存来跑热数据,承接RAM缓存剩下未命中的部分,最大的满足了整个存储架构的容量、价格、效能比。

多级缓存/存储在任何需要的地方都是非常有效的IO压力分散的方案
102#
yanleiberg 发表于 2012-4-26 02:57 | 只看该作者
jeffxl 发表于 2012-4-25 13:39
NT6的动态缓存和IO压力直接相关。如果你是典型家用(家用的IO空闲太多),那么动态缓存经常会被回收到“ ...

我有两块SSD,还有3块机械硬盘。
现在我只想让ram为我的机械硬盘来做优先cache,很明显用windows自带的缓存机制无法达到这个目的。

ssd上的io我不想也不是很需要大量内存做cache,但是io却不算少,有虚拟机文件和所有的程序都在ssd上。
我觉得就我的情况来看fancycache有益无害。

点评

不管你愿意不愿意,或者你是否使用第三方缓存,SSD上的虚拟机、应用都会受益于动态缓存策略。仅从读IO上来说,fancycache提供的效益有点多余。  发表于 2012-4-26 03:12
101#
jeffxl  楼主| 发表于 2012-4-26 02:39 | 只看该作者
本帖最后由 jeffxl 于 2012-4-26 03:41 编辑
yanleiberg 发表于 2012-4-26 01:58
我之所以弃用ramdisk之类的内存虚拟硬盘软件,主要有两个原因。
一就是我有不少系统级的软件,系统启动时 ...


NT6的动态缓存和IO压力直接相关。如果你是典型家用(家用的IO空闲太多),那么动态缓存经常会被回收到“空闲”值随时给冷加载的前台应用使用,提供最大的冷加载响应效率(无需临时回收缓存给应用申请,直接就有“空闲”内存待用)

如果是重IO负荷,比如你正好在运行高IO压力的应用(典型家用实在算不上什么高IO),那么当你需要IO响应能力时,NT6会最大能力的调配所有“空闲”内存来缓存所有热数据,这个时候“空闲”内存甚至一直保持在0的程度(你有多少内存也全部被拿来增强IO响应能力)。


举例,我使用WIN2008 R2 DC版做无盘+游戏服务器时,“空闲”内存几乎永远是0。所有需要的无盘客户端IO请求被最大限度的缓存到RAM中。


这里的NT6核心的动态缓存中表述的“空闲”内存不等于“可用”内存。可用内存还是由总RAM容量减去本地应用提交的PF使用值,也是随时可用的。高IO负载时可能“空闲”值保持为0,提供最大的IO响应能力,但是如果正好比如这服务器端需要运行或新开启一个服务器本地应用,那么需要回收部分缓存内容来增加“空闲”容量,并立即给你的本地应用使用,本地应用能使用的最大值其实还是“可用”容量。而这个部分并不在PF使用率当中表现,所以你不会看到所谓系统帮助你“撑满”超过50%的内存占用。

动态缓存对用户是透明的,缓存占用的多寡并不影响本地应用的内存使用提交。NT6的缓存逻辑策略其实适用性比较广泛,包括服务器版操作系统也相当的受益(明显比家用效能好很多)。

所以你看起来家用“空闲”容量有很多,那是因为操作系统认为按最有利策略需要的热数据都已经被缓存能够命中并且已经缓存。对家用来说,大部分IO里面,这个压力不容易满足NT6动态缓存的某个“阀值”,一直去拿“空闲”内存去当缓存填充,对于家用来说得不偿失,毕竟客户端应用多会经常启动应用,随时需要新的“空闲”容量来保证立即能够有“空闲”内存资源随时可以启动应用,而不需要经常去回收动态缓存去调配给本地应用(这个必须有性能开销)。

区别就在文件服务器是重IO访问型的数据模型,而家用是N多经常需要启动的前台本地应用+部分缓存支持软件的二次“热”加载或提供已经的IO二次命中。微软提供的某个决断阀值显然同时照顾到了比如家用和IO型服务器型应用,一个统一的策略对两种不同的IO访问模型同时受益,所以NT6体系的系统自带缓存策略,不管对家用还是对服务器都是统一和谐的一个适用性非常好的策略。高IO压力则尽量使用“空闲”资源填充出最大的缓存(几乎是所有可用内存),而家用则因为不满足IO压力阀值要求,则经常留出“空闲”资源待用。

NT6的动态缓存,在你需要响应最大IO能力的时候,系统会自动安排尽可能最大的缓存容量来满足(所有可用内存);而家用类的应用,利用IO压力阀值判决决定出适用的缓存和“空闲”内存占用比

通过各种观察,猜测动态缓存的逻辑是这样的:按时间片来统计IO,在低IO压力时释放掉“当前最不经常使用”的数据缓存。如果你当前的IO流量+数据热度不满足超过数据缓存释放的速率(家用典型IO),那么这时你的缓存容量则开始一直呈递减状态(流入比流出慢),直到仅仅剩下当前“最热”的数据就是你现有的“缓存占用”。如果IO压力加大且这些当前IO数据热度在当前时间片超过缓存命中的阀值,那么则有可能缓存填充热数据的速率比缓存释放冷数据速率快,你会看到“空闲”内存慢慢被消耗,直到变成0 ,达成“可用”内存的最大效能利用。这个过程中还有“可用”内容容量加权递增算法,在以上规则内如果总内存越大,可用越多,那么同比条件下被“缓存”的数据也越多(在低IO压力,“空闲”内存不为0时;高IO压力剩多少都会用光)。


点评

居然今日无分可送了,此贴大赞~  发表于 2012-4-26 08:21
100#
yanleiberg 发表于 2012-4-26 01:58 | 只看该作者
本帖最后由 yanleiberg 于 2012-4-25 12:59 编辑
quietist 发表于 2012-4-25 08:27
   
  你说的对,cache类软件我以前没注意过,因为总觉得系统会自动预读取、以及读取后驻留内存,这 ...


我之所以弃用ramdisk之类的内存虚拟硬盘软件,主要有两个原因。
一就是我有不少系统级的软件,系统启动时加载时间可能比ramdisk还要早。
而这时虚拟硬盘尚未准备好,其他软件一旦读写temp文件夹就立即报错退出了。

二就是内存虚拟硬盘软件免费的不好用,功能满足不了我的需要,付费的又破解起来太麻烦。。。好吧。。这个是我的问题。。

还有就是用了SSD以后就真的没有任何必要使用内存硬盘了。
99#
quietist 发表于 2012-4-25 21:27 | 只看该作者
yanleiberg 发表于 2012-4-24 01:51
1. ut的缓存已经设置成1024MB了,但是我内存大,闲着也是闲着。
2. 那些虚拟内存硬盘的软件我也试用过, ...

   
  你说的对,cache类软件我以前没注意过,因为总觉得系统会自动预读取、以及读取后驻留内存,这不都是在给硬盘操作做缓存么,所以认为cache不必须。

  后来发现非也,系统所做的有限,就好比大内存,除了做设计的哥们一渲染能干掉几G、两三张图就能或假或真弄死系统之外,很少见到被系统主动撑到50%以上的(我和周围朋友都基本不玩游戏,所以对游戏资源占用不太了解),这说明大内存的使用效率和平均/极限占用都是有较大富裕空间的。

  以前认为这是应用软件自身算法、调用策略的问题,比如上面说的utorrent就可以设置1G缓存占用,但想想一般软件在不知系统内存大小和分配用途的情况下,也不可能个个都往大了去占,所以一种特定用途的第三方软件支援还是有用的。

  这几天正好因supereven网友那个主题,去初步了解了一点cache类软件的功能和定位,确实如你所说,跟SRT技术有相似思路,确实是有用的。

  当然中庸点先设个限:cashe类软件如果过度使用,也是不好的,我个人认为cpu缓存-内存缓存-(应用软件自身算法和资源调用策略的优化)-内存分隔的硬盘缓存-SSD或/和硬盘上嵌入闪存所做的硬盘缓存,这么个序列纺锤体,以流线的比例搭配,应该一般适用而且潜在的威胁会比较少一点吧。

  至于ramdisk类,我倒是认真觉得一般个人用户轻易不必去非要用,毕竟系统temp和IE缓存文件影响不算很大,即使定期不定期手动清理也不算太麻烦,何况很多系统管理软件都有清理功能,而页面文件如果放到虚拟硬盘上,那还真不知道是否有所风险。
  
  
  
98#
yanleiberg 发表于 2012-4-24 01:51 | 只看该作者
本帖最后由 yanleiberg 于 2012-4-23 12:53 编辑
quietist 发表于 2012-4-17 22:10
俺门外小白掺和一下讨论:

1、比如utorrent新版不是可以手动指定缓存以覆盖系统缓存么,可以设为1024MB不 ...


1. ut的缓存已经设置成1024MB了,但是我内存大,闲着也是闲着。
2. 那些虚拟内存硬盘的软件我也试用过,的确很麻烦,软件冲突很多,而且有了ssd后对性能的提升极其微小。但fancycache的机制不是虚拟硬盘,而是类似srt那样的缓存技术。我24小时pt下载加做种,能多保护机械硬盘一点就是一点。

就是因为不了解才更要去学,去用才对啊。要不岂不是永远都是小白?
实际上你也已经从中学习到了ramdisk、superspeed之类的软件对你来说不是必需的。
至于fancycache,也建议你尝试一下。
97#
yeeyee2000 发表于 2012-4-23 09:11 | 只看该作者
非常感谢!
96#
quietist 发表于 2012-4-18 11:10 | 只看该作者

俺门外小白掺和一下讨论:

1、比如utorrent新版不是可以手动指定缓存以覆盖系统缓存么,可以设为1024MB不,够用吗?

2、ramdisk、superspeed等试用过几种,来回折腾很多次,没一个能用顺的的,而且关键的个人日常应用,就没有找到体验上的提升幅度明显在哪儿,但是兼容性或冲突多发,每次到最后都只好卸载掉不管了。

  我个人的理解,是否接口、调用等等各种环节,越少越好,多的话,除非是原应用软件优化太烂、或存在某种明显的不足或溢出,否则无论是拿内存映射硬盘还是硬盘映射内存,来回折腾的环节多了实际应用上的某种好处也就很难享受到了;还有这种缓存使用软件相当于在系统和应用中的一层界面、或另开一个界面,就算它和应用软件之间无问题,但很怕它跟系统、底层包括硬件固件之间的未知因素。

  未知因素和不确定性是最可怕的,除非很了解和能掌握它,知其然而且知其所以然,但那绝非俺这样的小白门外汉可以向往的了,所以多次接触、多次挥别,最后反正什么好处没尝到。。。

  
95#
yanleiberg 发表于 2012-4-18 00:05 | 只看该作者
jeffxl 发表于 2012-4-17 10:49
首先,你用这个,我并不反对你用,文章谈的普适性是针对大范围的用户个人能力平均加权的善意推荐。

你说的也没有错,但是过于稳重了,没有确定的好处就不用,这一般是企业部署方案的策略。

我们个人用户,很多时候都要亲自实践,不亲自用一下是不会知道到底有没有好处或者坏处的。
94#
jeffxl  楼主| 发表于 2012-4-17 23:49 | 只看该作者
yanleiberg 发表于 2012-4-17 23:46
这个不应该用见仁见智,而是应该说不同情况,不同的需求下要用不同的解决方案。
win7 64位自带的缓存毫无 ...

首先,你用这个,我并不反对你用,文章谈的普适性是针对大范围的用户个人能力平均加权的善意推荐。


只是这种参与系统核心级的配置方案,如果有非常大的好处的话还是可以针对性的部署,但是如果没有可见好处那么就要权商了。

这种东西并不是100%的对其他部署透明的,虽然对用户界面是透明的。
93#
yanleiberg 发表于 2012-4-17 23:46 | 只看该作者
jeffxl 发表于 2012-4-17 10:42
所以说,我认为是见仁见智的问题,增加了普适性方面的复杂度。虽然你认为没有任何问题,但不见得有任何可 ...


这个不应该用见仁见智,而是应该说不同情况,不同的需求下要用不同的解决方案。
win7 64位自带的缓存毫无疑问是最适合绝大多数用户的,但是是不是最适合自己,还要具体情况具体分析。

fc用起来很透明,我设置一次后但现在都几乎忘了自己在用它。
至少我的情况这样子用,目前绝对没有任何可见的坏处,对吧?
92#
jeffxl  楼主| 发表于 2012-4-17 23:42 | 只看该作者
yanleiberg 发表于 2012-4-17 23:37
我有用UPS,而且网速很快,而且我这里断电的可能性极其低。所以断电这种情况对我来说可以忽略。 ...

所以说,我认为是见仁见智的问题,增加了普适性方面的复杂度。虽然你认为没有任何问题,但不见得有任何可见的好处,而且哪天也许会出现无法预知的麻烦。
91#
yanleiberg 发表于 2012-4-17 23:37 | 只看该作者
jeffxl 发表于 2012-4-17 10:33
你这个问题就是见仁见智的问题了,不推荐大部分普通用户去折腾。

HDD的设计是可以承受一定频度的寻道的 ...

我有用UPS,而且网速很快,而且我这里断电的可能性极其低。所以断电这种情况对我来说可以忽略。
90#
jeffxl  楼主| 发表于 2012-4-17 23:33 | 只看该作者
本帖最后由 jeffxl 于 2012-4-17 23:35 编辑
yanleiberg 发表于 2012-4-17 23:29
那像我做pt下载的,24小时开机做种。为了减少对hdd的读写,我强制用fancycache把种子盘做了缓存。
16GB内存 ...


你这个问题就是见仁见智的问题了,不推荐大部分普通用户去折腾。

HDD的设计是可以承受一定频度的寻道的。下载软件本身一般都自带延迟写缓存已经足够了。而读缓存,WIN7自带的动态读缓存就更不用操心了,本来就以热度统计,系统写缓存不大是为了安全。



作为做网吧技术支持的,我们的机械盘(也经常是普通SATA)是24X7的在高频度的寻道和读写,远远大于家用的IO操作量,也没见大面积坏盘。
89#
yanleiberg 发表于 2012-4-17 23:29 | 只看该作者
那像我做pt下载的,24小时开机做种。为了减少对hdd的读写,我强制用fancycache把种子盘做了缓存。
16GB内存,uTorrent分了1GB缓存,2GB给fancycache缓存种子盘。
还有足够的剩余内存空间给windows使用。

这种情况下我觉得用第三方缓存还是有意义的。
88#
chwchwchw 发表于 2012-4-17 20:02 | 只看该作者
学习了。明天ssd收到!试试!
87#
kx945` 发表于 2012-4-15 08:14 | 只看该作者
jeffxl 发表于 2012-2-1 01:30
这样做没什么好处呢。让win自己管理就很好

可我还是觉得RAMDISK不错  经常用来放下载电影文件

个人觉得现在多数人的瓶颈是网络 硬盘内存早已不是问题了
86#
geek 发表于 2012-4-15 00:25 | 只看该作者
请教楼主,遍历了以上回贴,大致的意思是第三方cache软件对家用意义不大;如果是单SSD环境,superfetch开关都可以。但问题是在SSD+HDD的混合环境下,SSD装系统和应用,HDD主要存下载的电影,这种场景下是否应该开启superfetch,来为HDD缓存呢?

点评

电影本身是流媒体,没缓存的必要  发表于 2012-4-15 11:16
85#
counterflow 发表于 2012-4-12 11:45 | 只看该作者
不错~对WIN7缓存和大容量内存有了新的理解
84#
wonree 发表于 2012-4-7 09:41 | 只看该作者
拜读,收藏,琢磨,学习。,看来64位WIN7加8G内存,是一个不用操心的性能方案。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部