PCEVA,PC绝对领域,探寻真正的电脑知识
开启左侧

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

  [复制链接]
电脑爱好者 发表于 2012-9-15 10:40 | 显示全部楼层
新人 报道  看看
wxleasyland 发表于 2012-9-26 19:59 | 显示全部楼层
很不错,学习了,LZ也很敬业
neeyuese 发表于 2012-9-27 11:39 | 显示全部楼层
太气人 发表于 2012-9-27 13:20
本不想发言的!!!但看到jeffxl楼主的傻话(误导了一圈人)!!!阿Q精神!!都是一厢情愿的想!!!你做 ...

请您指教一下哪里误导了,具体说说,不要注册一个号就为了回一句话,纯浪费网络资源。
jeffxl  楼主| 发表于 2012-9-27 13:08 | 显示全部楼层
太气人 发表于 2012-9-27 11:20
本不想发言的!!!但看到jeffxl楼主的傻话(误导了一圈人)!!!阿Q精神!!都是一厢情愿的想!!!你做 ...

我是做做网吧相关业务和技术支持、KTV点歌系统技术、宾馆和工业园区弱电系统集成等,我做的事很杂,不知道您认为我对家庭和密集IO环境的内存利和缓存的理解有什么问题。

文章中所有关于个人理解阐述的部分都是经过多年系统集成部署,特别是网吧部署时掌握的经验和规律,而且现在很多软件都可以科学的从各种方面统计缓存效率并从实际商业运营效果反复得到验证的规律。

解除误导也是我写这篇文章的初衷,很多人对大内存利用的理解有偏差,我从我个人工作和学习的经验上做出一定的总结,如有误导或者不妥的部分还请您指出,必将修改。
hifiu 发表于 2012-9-30 11:18 | 显示全部楼层
Windows在笔记本电脑电池模式下,也不能延长缓存写时间,是一种浪费啊。
as0607891266 发表于 2012-9-30 13:55 | 显示全部楼层
学无止境  不断看精品文
jarod360 发表于 2012-10-2 23:26 | 显示全部楼层
比较难懂,还是要好好看看。
变心金刚2 发表于 2012-10-6 09:58 | 显示全部楼层
说到IO压力,硬盘灯闪烁频繁程度和持续时间是硬道理吧?Win7比会XP少吗?
jeffxl  楼主| 发表于 2012-10-6 20:01 | 显示全部楼层
变心金刚2 发表于 2012-10-6 09:58
说到IO压力,硬盘灯闪烁频繁程度和持续时间是硬道理吧?Win7比会XP少吗?


从操作系统本身来说,相对于XP的后台背景读写,肯定WIN7要多很多,需要实时读写的进程也多不少。

NT6的缓存的意义不是在于避免操作系统本身比如NTFS日志、系统日志之类的读写,这些无论如何延迟写也终将要写入磁盘。这些IO的密度不会变小,在WIN7上肯定也是大于XP没错。

站在全局看用户行为来说,WIN7可以调配所有“未使用”的内存部分来做IO缓存,那么当你做任何用户级别操作时,同样情况下的二次命中率将会比XP高几个数量级。


注意,我们这里并不是考究WIN7和XP的系统自带进程的IO背景读写的流量,这些东西的类型本身也并不容易再次命中,比如写日志类,所以这种IO大了就是大了,也不会因为WIN7的IO缓存大而受益。而且这种你认为“增量”了的额外IO压力对于HDD来说都是小意思而已,而真正需要展现WIN7的IO缓存威力的地方还是必定会体现动态缓存的价值。
变心金刚2 发表于 2012-10-7 11:14 | 显示全部楼层
本帖最后由 变心金刚2 于 2012-10-7 11:16 编辑
jeffxl 发表于 2012-10-6 20:01
从操作系统本身来说,相对于XP的后台背景读写,肯定WIN7要多很多,需要实时读写的进程也多不少。

NT6的 ...


额,目前的硬盘价格和耐用性的口碑……既然你都说Win7的IO要比XP大不少那我想这应该是确实的了。系统本身的组件越少对硬盘的IO操作也就相应越少,问题是你微软增加的这些组件是不是都有用?对很多人而言都已经有了第三方软件的解决方案,你有没有我都会装上我已经习用的软件了,所以又增加了IO操作。
IO总量哪怕一定不变,但是缓存后均匀读取写入和频繁地读,东一榔头西一棒子地写入对硬盘也不一样,缓存软件的作用之一就是延迟均匀写入,虽然我哪怕用缓存软件也是不开延迟写入的,为了安全。当然缓存软件自己也得读写硬盘,总体是赚了还是差不多这就没法计算了。
jeffxl  楼主| 发表于 2012-10-7 16:06 | 显示全部楼层
本帖最后由 jeffxl 于 2012-10-7 16:16 编辑
变心金刚2 发表于 2012-10-7 11:14
额,目前的硬盘价格和耐用性的口碑……既然你都说Win7的IO要比XP大不少那我想这应该是确实的了。系统本身 ...


您的理解是是错误的,之前我故意把IO分为系统背景IO和用户行为造成的IO不记得吗?

系统IO是比XP多没错,但应用IO的二次命中率会比XP高很多。换句话说,读盘的几率就小很多。而操作系统背景IO那几秒才闪一下硬盘灯的压力其实是可以忽略的。

因为之前您问我关于硬盘灯的闪动频率和磁盘压力相关,问WIN7会比XP少吗?我当然回答的是这个问题,这假设大家啥都不做,都是“待机”看硬盘灯,WIN7必须比XP闪动频率高些。

您开一次机难道一致都在“挂机”?啥都不做?如果是这样,那么XP确实在“IO压力”上更低,更优秀。

一般情况下,用户按需求自然的使用任何软件造成的IO压力都远大于操作系统造成的背景IO。动态缓存对这种需求产生的效益远大于系统背景回写产生的IO压力。

待机时(啥都不做),WIN7是比XP的“静态背景IO”要多不少,因为这些背景读写都是“死回写”不重复(比如日志之类),缓存效益低但是压力也低。待机时非要比IO体验的话,WIN7和XP用户并无体验差别。

基于用户行为,比如跑应用时和真正运行用户需求时,读逻辑的重复率变得相当的高,缓存效益得到非常好的发挥,用户会感觉WIN7的IO体验比XP好很多。
变心金刚2 发表于 2012-10-7 17:59 | 显示全部楼层
jeffxl 发表于 2012-10-7 16:06
您的理解是是错误的,之前我故意把IO分为系统背景IO和用户行为造成的IO不记得吗?

系统IO是比XP多没错, ...

你认为比如说边QQ边上网听歌浏览网页下载迅雷BT,这时候XP的硬盘灯闪烁时间比Win7要长吗?这符合实际情况吗?
你认为静态时Win7那些维持系统运转的读写是不会因为这些任务而增多,依然保持不变的?这可能吗?
jeffxl  楼主| 发表于 2012-10-7 21:15 | 显示全部楼层
变心金刚2 发表于 2012-10-7 17:59
你认为比如说边QQ边上网听歌浏览网页下载迅雷BT,这时候XP的硬盘灯闪烁时间比Win7要长吗?这符合实际情况 ...

您说的这些东西都没什么全局缓存效益,bt缓存由软件自身定向缓存来降低io。而且这些应全局二次命中不高但持续的低压力io对io能力并不敏感,并不造成体验的区别。
而大量的应用的运行会产生大量的重复度读io,而win7最大可能的利用剩余容量做读io缓存会产生比xp高得多的命中可能,这才是对体验影响最明显的部分。


基于安全的因素,win的默认延迟写是安全导向设计的所以写缓存效益并不高,但是从全局来说win7的读缓存是优秀的
变心金刚2 发表于 2012-10-7 21:30 | 显示全部楼层
jeffxl 发表于 2012-10-7 21:15
您说的这些东西都没什么全局缓存效益,bt缓存由软件自身定向缓存来降低io。而且这些应全局二次命中不高但 ...

呃~大家干得最多的事显不出好来,那有什么用呢?
jeffxl  楼主| 发表于 2012-10-7 21:44 | 显示全部楼层
变心金刚2 发表于 2012-10-7 17:59
你认为比如说边QQ边上网听歌浏览网页下载迅雷BT,这时候XP的硬盘灯闪烁时间比Win7要长吗?这符合实际情况 ...


操作系统自带的缓存设计一般都基于命中率和全局有利性原则。

您的预设场景比如QQ、边上网边听歌。您很好的规避了软件的启动过程缓存的作用,这个部分的体验依赖整体IO能力(包含缓存效率),您仅谈这类软件在运行中产生的IO。

       第一,这类应用运行中的IO,比如在线听歌属于网络流媒体。这类媒体数据从网络下行到PC HOST的过程中因为是持续媒体流,相对HOST来说就是媒体流的暂时写入,码率按最大无损音频的要求是1411.2Kbps除以8为170Kbit/S左右的速率持续写入到HOST,根据软件设计的不同,在线流媒体临时缓存可能是在RAM中直接完成流解码,解码后数据即可放弃并更新。按脑残设计,就算是实体写入磁盘系统内,这个码率可能会造成硬盘灯持续闪动,但压力相对于现在的磁盘系统来说相当的低。基于缓存原理,这类数据没有二次命中可能,所以没有缓存效益,但并不影响用户体验。QQ运行中收发用户消息也是如此。这里不符合缓存原理,并且没有有利性、且不影响用户体验。        

      第二,BT类应用。操作系统确实在P2P类应用运行时可以设计无差别的高延迟写或者无限写为目标的写缓存架构,但是违反了全局有利性原则。这伤害了其他软件数据的安全性,这种缓存架构的风险极大。一般推荐由第三方软件设计者为自己的P2P软件自身设计定向缓存,因为这样高级别的延迟写缓存仅专用在此P2P软件的范围内,如果掉电等风险产生的数据损失仅仅控制在P2P软件自身缓存的范围内。换句话说,数据丢失风险的范围仅是你下载的内容。那么,我们来假设您可能需要操作系统全局无差别的高延迟写或无限写缓存,这个时候如果您开机以后产生的写IO也许都或多或少的在系统写缓存上,这些内容也许并没有回写到磁盘,虽然优化了P2P软件的写IO,但是如果此时掉电的话。。。。没有任何人做操作系统架构时仅仅考虑某一种应用的效益而无限增加其他应用的风险。

jeffxl  楼主| 发表于 2012-10-7 21:48 | 显示全部楼层
变心金刚2 发表于 2012-10-7 21:30
呃~大家干得最多的事显不出好来,那有什么用呢?

您说的这些类型IO,谁也做不到缓存优化。因为您说的都是最不利性缓存原则下的“经典”IO类型。而且这类IO一般不影响用户体验。

恰巧需要IO能力的家庭应用,NT6缓存都有很高的效益。试问在没必要、也没办法缓存的IO上动脑筋优化忽略不计的效益有什么用?这和什么操作系统没有任何关系。
变心金刚2 发表于 2012-10-7 22:48 | 显示全部楼层
jeffxl 发表于 2012-10-7 21:48
您说的这些类型IO,谁也做不到缓存优化。因为您说的都是最不利性缓存原则下的“经典”IO类型。而且这类IO ...

这些不是我个人凭空想象出来的常用应用,确实是大多数人每次开机后做的最多的事,不能在这些应用上显出Win7所谓更好的缓存机制的实际效果,那不等于说Win7是个光吃内存不干活儿的低效系统吗?有什么区别呢?我还可以说XP的缓存机制更好,因为同样的效果却用不着那么多内存,对不对?在被普遍应用的项目中不能有所建树那为什么不节约呢?
jeffxl  楼主| 发表于 2012-10-7 23:03 | 显示全部楼层
变心金刚2 发表于 2012-10-7 22:48
这些不是我个人凭空想象出来的常用应用,确实是大多数人每次开机后做的最多的事,不能在这些应用上显出Wi ...


1、您说的这些没办法缓存
2、假设能缓存也没效益,和体验无关
3、缓存并不用来减少这些IO,这不是缓存的目标,不符合有利性原则。
4、最需要缓存的地方是各种应用的反复资源载入过程,这部分数据量大而且重复率高、大部分时候IO压力大,最影响体验。这部分缓存有最大效益。
5、PC是拿来用的、大部分使用时产生的IO,从总量上来说都为资源载入型。这种既影响IO效能,量又巨大的IO是关键性能指标,其实90%以上的IO数据量在此,而不是那些“本底背景IO”或者流式写入IO。用户的缓存收益面90%在此,你偏要谈那10%不到的IO数据量和毫无体验差异的性能差异。
6、不是说让硬盘灯不闪了,对于用户体验就是最有利的。


mcszjs 发表于 2012-10-7 23:05 | 显示全部楼层
变心金刚2 发表于 2012-10-7 22:48
这些不是我个人凭空想象出来的常用应用,确实是大多数人每次开机后做的最多的事,不能在这些应用上显出Wi ...

我只想说一句,你还是先甩开那些你自己想的‘道理’,然后仔细看明白jef版究竟说的是什么,再来回帖吧。看这几楼,你说的压根就不是版大在谈的那种层次,我是觉得你可能根本没看懂版大说的话呢。
jeffxl  楼主| 发表于 2012-10-7 23:09 | 显示全部楼层
本帖最后由 jeffxl 于 2012-10-7 23:13 编辑

缓存并不用来无差别减少磁盘IO读写。
缓存设计目标至少为:
1、无关痛痒可以不缓存
2、不影响体验可以不缓存
3、命中率过低(访问重复性)可以不缓存
4、IO压力大的,可重复再现的IO必须缓存
5、从有利性设计缓存淘汰机制,实现体验最有利化
6、系统自身写缓存安全导向优先。
7、尽最大可能利用所有RAM资源服从命中率原则。

IO压力大的地方,不管是家用还是企业或服务器场合都有很高的可重复性,服务器场合更甚。捡芝麻丢西瓜的设计意图不是一个程序员会做的事。无差别减少磁盘IO不是缓存的设计目的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部