LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 618|回复: 8

sata硬盘性能疑问,和dma有关?

[复制链接]
发表于 2012-2-1 23:17:00 | 显示全部楼层 |阅读模式
我的机器,只要访问硬盘,cpu就很高,能达到100%,因为有多核,所以体验不到系统慢,但是在system monitor里能看到。
多媒体还没配好,所以无法用电影测试。

直觉上就是dma没开,但似乎硬盘吞吐率并不低:
fpemud-workstation fpemud # hdparm -tT /dev/sda
/dev/sda:
Timing cached reads:   24976 MB in  2.00 seconds = 12503.56 MB/sec
Timing buffered disk reads: 286 MB in  3.01 seconds =  94.93 MB/sec

用的genkernel,所以肯定没有错误加载ide模块。

下面是我的几个命令输出:
fpemud-workstation linux # hdparm /dev/sda

/dev/sda:
multcount     = 16 (on)
IO_support    =  0 (default)
readonly      =  0 (off)
readahead     = 256 (on)
geometry      = 121601/255/63, sectors = 1953525168, start = 0
fpemud-workstation linux # hdparm -cuda /dev/sda

/dev/sda:
IO_support    =  0 (default)
[color="red"] HDIO_GET_UNMASKINTR failed: Inappropriate ioctl for device
HDIO_GET_DMA failed: Inappropriate ioctl for device
readahead     = 256 (on)

红色的两个错误去网上查了也没有找到具体原因,是不是内核配的不对?

fpemud-workstation linux # hdparm -i /dev/sda

/dev/sda:

Model=WDC WD10EADX-00TDHB0, FwRev=77.04D77, SerialNo=WD-WCAV5P368233
Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=50
BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=1953525168
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes:  pio0 pio3 pio4
DMA modes:  mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 [color="Red"]*udma6
AdvancedPM=no WriteCache=enabled
Drive conforms to: Unspecified:  ATA/ATAPI-1,2,3,4,5,6,7

* signifies the current active mode

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2012-2-2 14:40:39 | 显示全部楼层
Post by fpemud;2159415

fpemud-workstation fpemud # hdparm -tT /dev/sda
/dev/sda:
Timing cached reads:   24976 MB in  2.00 seconds = 12503.56 MB/sec
Timing buffered disk reads: 286 MB in  3.01 seconds =  94.93 MB/sec


速度正常,驱动没有问题。

考虑其他原因吧,top、 iotop 看看到底是谁吃了CPU/硬盘。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-2 21:30:21 | 显示全部楼层
那2个红色的fail是怎么回事?是不是还是驱动没配对?
回复 支持 反对

使用道具 举报

发表于 2012-2-4 19:47:44 | 显示全部楼层
试试 用sdparm设dma
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-4 20:36:32 | 显示全部楼层
看了man sdparm,搜索dma没搜着,也没看到哪个参数是设dma的

清帮忙给个例子用什么参数
回复 支持 反对

使用道具 举报

发表于 2012-2-4 21:21:25 | 显示全部楼层
我没设过,unbuntu那边早有人提过类似问题,据他们说是有些sata驱动和hdparm 不合,所以用sdparm

https://lists.ubuntu.com/archive ... 8-April/027524.html
http://linux.derkeiler.com/Newsg ... 08-05/msg00473.html
http://sg.danny.cz/sg/sdparm.html

另外,如果dma没打开速应该度不会有那么快,

我试了一下,-i 和 -cuda 输出和你一样,但没有访问硬盘cpu占用率高的问题

IO_support    =  1 (32-bit)                                                                                                                                          
HDIO_GET_UNMASKINTR failed: Inappropriate ioctl for device                                                                                                                                            
HDIO_GET_DMA failed: Inappropriate ioctl for device                                                                                                         
readahead     = 256 (on)         

Model=WDC WD10EARS-00Y5B1, FwRev=80.00A80, SerialNo=WD-WCAV5F211942                                   
                                                                                                       │ Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }                           
                                                                                                       │ RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=50                                                
                                                                                                       │ BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=16                                       
                                                                                                       │ CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=1953525168                                   
                                                                                                       │ IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}                                      
                                                                                                       │ PIO modes:  pio0 pio3 pio4                                                                           
                                                                                                       │ DMA modes:  mdma0 mdma1 mdma2                                                                        
                                                                                                       │ UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6                                                
                                                                                                       │ AdvancedPM=no WriteCache=enabled                                                                     
                                                                                                       │ Drive conforms to: Unspecified:  ATA/ATAPI-1,2,3,4,5,6,7                                             
                                                                                                       │                                                                                                      
                                                                                                       │ * signifies the current active mode

也许是个别进程的问题?查io吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-5 14:22:20 | 显示全部楼层
多谢楼上给的资料,我学习学习
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-6 22:23:51 | 显示全部楼层
刚复习了top和htop,做大文件cp实验,cpu占用的%wa非常高

看了man top中对wa的定义
又搜索到了一个帖子http://hi.baidu.com/higkoo/blog/ ... 871cf8d6cae25e.html
这个帖子中建议用iostat定位。

用iostat -cdx 10,每10秒打印一次信息。(其中sda和dm0是同一个物理 设备)

avg-cpu:  %user   %nice %system [color="red"]%iowait %steal   %idle
           4.08    0.00    3.91  [color="Red"] 28.30    0.00   63.71

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  [color="Red"]%util
sda               1.00  7748.00  328.30   74.40 33018.80 30884.00   317.37    51.56  129.02    3.62  682.37   2.48  [color="red"]99.96
dm-0              0.00     0.00  329.30 7821.70 33043.20 31286.80    15.78  5667.58  694.28    4.46  723.32   0.12  [color="red"]99.95
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

avg-cpu:  %user   %nice %system [color="Red"]%iowait  %steal   %idle
           3.81    0.00    3.99   [color="red"]27.05    0.00   65.14

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  [color="red"]%util
sda              83.80  8240.00  346.20   81.70 37084.00 34357.60   333.92    68.03  156.91    4.35  803.38   2.33  [color="red"]99.90
dm-0              0.00     0.00  430.10 8319.80 37064.40 33279.20    16.08  7119.70  804.74    5.58  846.05   0.11  [color="red"]99.90
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

avg-cpu:  %user   %nice %system [color="red"]%iowait  %steal   %idle
           4.04    0.00    4.26   [color="red"]27.88    0.00   63.82

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  [color="red"]%util
sda               2.60  8262.80  310.50   77.30 35862.00 32037.20   350.18    51.25  124.24    3.90  607.62   2.58  [color="red"]99.87
dm-0              0.00     0.00  313.10 8342.40 35881.60 33369.60    16.00  6034.51  652.56    4.79  676.87   0.12  [color="red"]99.87
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

%iowait有25%左右,就是1个core的利用率100%,和kde system monitor显示的数据一致。
%user和%system非常低。

是不是我搞错了?这个结果是不是正常的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-6 22:51:25 | 显示全部楼层
我禁用了3个cpu:
echo 0 > /sys/devices/cpu/cpu3/online
echo 0 > /sys/devices/cpu/cpu2/online
echo 0 > /sys/devices/cpu/cpu1/online

再次实验,虽然cpu0的占用率在system monitor还是100%,但是%iowait下降了,只有17%,换算后约是一个core的60%。而且没有发现系统响应慢的情况。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表