Chinaunix首页 | 论坛 | 博客
  • 博客访问: 70059
  • 博文数量: 12
  • 博客积分: 450
  • 博客等级: 下士
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-02 11:19
文章分类
文章存档

2011年(1)

2010年(11)

我的朋友

分类: 服务器与存储

2010-03-03 14:22:04

磁盘IO满负荷性能分析(一)
有个项目最近发现在执行一些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的,这么低的速率明显就不对了。

光纤的速率查看:

 原文地址 http://yuhuohu.cublog.cn
阅读(1464) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~