Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29645
  • 博文数量: 17
  • 博客积分: 1440
  • 博客等级: 上尉
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-28 20:55
文章分类

全部博文(17)

文章存档

2010年(17)

我的朋友

分类: 服务器与存储

2010-11-23 17:30:02

cache对于连续io具有较好的效果,尤其是连续小块io。针对cache,不同的产品有不同的算法,但是大部分是众人皆知的的算法。 连续小块io效果较好的原因是因为预读程序会预先读入与本次IO相连的周围地址的数据,而io的size越小,并且io越连续,性能提升的效果就越明显了。连续大块io为何效果不明显?其实这里所说的明显与否是相对的。连续大块io的时候,更多的压力在于磁盘和通道带宽,cache只起到一个缓冲作用,并没有体现出任何优化的效果。大块连续io情况下,cache eject率非常高,系统没有必要也没有这个精力去再做什么优化,也没有可优化的地方。

ncache在重复读的情况下效果最佳。所谓重复读,也就是外部频繁的读取某些地址的数据,而从来不更改他们。这样,这些数据就会长时间的停留在cache中而无需访问硬盘。

上述是cache管理大概思想,至于更多细节的实现方式,比如多流合并,分区等思想和技术,就要看不同产品不同设计方式和开发人员富有创造力的头脑了。

随机IO的情况下,cache效果最小。随机IO的瓶颈在于磁盘寻道,并且更加考验一个产品针对IO的优化程度。但是广泛来讲,随机IO性能低下的问题在机械硬盘的世界里,是永远不可能有本质上的解决办法。只有SSD或者其他概念的存储方式才可以从本质上解决随机IO的性能问题。但是面对随机io,cache也不是一点效果也起不到的,比如某种算法,类似数据库的优化方法,即让数据在磁盘上的分布单位加大,每次读都读出整个extent来碰运气,也就是类似这种思想,比如有一群蚂蚁,你要把他们全收集起来,而你的筷子每次夹的太少,麻烦费力低效,而如果你换成勺子,直接将蚂蚁和泥土一起挖起来,同样可以达到收集蚂蚁的效果。也就是用大炮大蚊子,炮弹爆炸了,那肯定周围的蚊子也被烧死了。

连续读:对于小块连续读io,cache优化效果最好。对于大块连续读io,优化效果不明显。
连续写:对于连续小块写io,如果cache是write back模式(通常都应当write back),由于io size比较小,cache剩余空间充裕,不至于频繁引起cache flush操作,加之系统不繁忙,有更多时间去进入算法流程对这些io进行优化调度重排等,所以此时cache效果良好。 对于连续大块写io,cache flush频繁,整体瓶颈归于磁盘,cache优化不明显,仅作缓冲之用。
随机读:瓶颈归于磁盘,cache优化不佳,只作为缓冲之用。
随机写:对于随机小块写io,如果cache是write back模式,则cache表现出来的优化效果良好,使得程序有充分时间去重排、优化这些io数据从而为更高效的并行写入磁盘做准备。对于随机大块写io,此时cache效率最为低下,整体瓶颈归于磁盘但是表于cache,因为cache快速被充满而后端磁盘出于瓶颈态,此时系统最为难受。
增加cache会对连续大块io性能提升比较明显,但是对于小块io,cache空间足够,再增加也无济于事。不过依然要综合来看,比如如果太多客户端写入导致cache不够用,那当然就考虑增加cache,总之,都是相对的。

 

阅读(1247) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~