Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3853061
  • 博文数量: 421
  • 博客积分: 685
  • 博客等级: 上将
  • 技术积分: 3670
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-18 14:20
文章分类

全部博文(421)

文章存档

2012年(5)

2011年(52)

2010年(83)

2009年(67)

2008年(65)

2007年(149)

分类:

2010-02-23 22:24:38

有个项目最近发现在执行一些oracle数据库的数据补入的sql语句时非常慢,经查发现来自存储的硬盘io会冲到100busy

device r/s w/s kr/s kw/s wait actv svc_t %w %b
sd2 18.2 1204.5 5480.8 9524.5 0.0 14.0 11.4 1 100


分析:
每秒有1K多次写,即平均来讲,每次写的时间只有1ms,或者说每1ms就要完成1次写操作

分析硬盘
存储硬盘:1W转/分。平均寻道时间3.5ms,假设10个硬盘做raid5(不太确定)

磁头平均等待时间按磁头每次都等待半圈计算,磁碟每转半圈需要的时间=60秒/10000转/2=3ms

每个硬盘的平均寻址时间=3.5ms+3ms=6.5ms

假设需求平摊到RAID5的硬盘上,按有效率提高7倍算,6.5ms/7<=1ms

结论:应付每秒1千多次的随机写,存储已经满负荷了

估计得从oracle上去想办法,看能否优化查询语句或合并一些随机写请求


同一台机器,另外一组不同时刻的数据


extended device statistics tty cpu
device r/s w/s kr/s kw/s wait actv svc_t %w %b
sd2 0.4 79.8 3.2 638.3 0.0 0.0 0.3 0 2
sd2 0.4 74.8 1.7 598.3 0.0 0.0 0.3 0 2
sd2 0.2 71.4 1.6 571.1 0.0 0.0 0.3 0 2
sd2 0.0 68.1 0.0 543.5 0.0 0.0 0.3 0 2
sd2 36.5 62.5 30700.1 500.0 0.0 0.7 7.2 0 43
sd2 74.9 48.8 65637.8 390.7 0.0 1.6 12.6 0 90
sd2 45.2 87.6 42729.4 701.0 0.0 1.9 14.0 0 93
sd2 76.6 74.4 73397.6 595.0 0.0 1.5 10.1 0 90


这个就复杂了,读写才几十MB字节,每秒读写次数都不到100,负荷居然也满了...

尝试分析

从第一行90busy的开始

每秒种读写有123.7次,消耗的总寻址时间为120+ms,即只有880ms不到的时间用于数据读写,完成了读写70MB左右。理论最高值读写合计可达到70MB/880ms×1000ms=80MB/S

第二行 132.8,消耗132+ms,剩余870ms,完成50MB,50/870×1000=57MB/S
第三行 151.0,消耗150+ms,剩余850ms,完成80MB,80/850×1000=94MB/S

晕了,存储的磁盘RAID-5,从实际情况反推出来,最高理论值才接近100MB/S的水准??

哦对了,和阵列连接的光纤卡速率也有关系,如果光纤卡是1gb,最高吞吐量200MBps,读写同时理论值最高可达100MBps,那差不多也就才到一半嘛怎么回事?如果是2gb的和4gb的,这么低的速率明显就不对了。

光纤的速率查看:

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

chenzq16042010-03-10 23:26:13

这种环境不用Raid10说不过去呀,楼主不要省成本了

zhoubaozhou2010-03-10 19:33:20

RAID-5的性能提升确实很有限,软RAID性能更低。 磁盘I/O这块不是这么简单的,各种调度策略影响很大的。

chinaunix网友2010-03-08 14:21:30

raid5在小数据随机读写的时候,对速度的提升并没有多大作用,每个硬盘的寻址时间还是一样的,并没有“效率提高7倍”这样的算法。一个人跑一百米要12秒,难道12个人同时跑100米就可以1秒跑完了? 另外,随机读写和连续读写的速度,差老远了。