我正在尝试使用
Linux优化某些Sun硬件上的存储设置.任何想法将不胜感激.
我们有以下硬件:
> Sun Blade X6270
> 2 * LSISAS1068E SAS控制器
> 2 *带有1 TB磁盘的Sun J4400 JBOD(每个JBOD 24个磁盘)
> Fedora Core 12
> 2.6.33从FC13发布内核(也尝试使用FC12的最新2.6.31内核,结果相同)
这是SAS硬件的数据表:
它使用PCI Express 1.0a,8x通道.每个通道的带宽为250 MB /秒,我们应该能够为每个SAS控制器执行2000 MB /秒的速度.
每个控制器每端口可以达到3 Gb /秒,并且有两个4端口PHY.我们将两个PHY从控制器连接到JBOD.因此,在JBOD和控制器之间,我们有2个PHY * 4个SAS端口* 3 Gb /秒= 24 Gb /秒的带宽,这超过了PCI Express带宽.
启用写入缓存和执行大写操作时,每个磁盘可以维持大约80 MB /秒(靠近磁盘的起始位置).有24个磁盘,这意味着我们应该能够为每个JBOD做1920 MB /秒.
multipath {
rr_min_io 100
uid 0
path_grouping_policy multibus
failback manual
path_selector "round-robin 0"
rr_weight priorities
alias somealias
no_path_retry queue
mode 0644
gid 0
wwid somewwid
}
我为rr_min_io尝试了50,100,1000的值,但似乎并没有太大的区别.
随着rr_min_io的变化,我尝试在启动dd之间添加一些延迟以防止它们同时在相同的PHY上写入,但这没有任何区别,所以我认为I / O正在适当地分散.
根据/ proc / interrupts,SAS控制器正在使用“IR-IO-APIC-fasteoi”中断方案.由于某种原因,机器中的核心#0只处理这些中断.通过为每个SAS控制器分配一个单独的内核来处理中断,我可以稍微提高性能:
echo 2 > /proc/irq/24/smp_affinity
echo 4 > /proc/irq/26/smp_affinity
使用dd写入磁盘会生成“函数调用中断”(不知道它们是什么),它们由核心#4处理,因此我也将其他进程保留在此核心之外.
我运行48 dd(每个磁盘一个),将它们分配给不处理中断的内核,如下所示:
taskset -c somecore dd if=/dev/zero of=/dev/mapper/mpathx oflag=direct bs=128M
oflag = direct可防止任何类型的缓冲区缓存参与其中.
我的核心似乎都没有达到最大化.处理中断的内核大多是空闲的,所有其他内核都在等待I / O,正如人们所期望的那样.
cpu0 : 0.0%us,1.0%sy,0.0%ni,91.2%id,7.5%wa,0.0%hi,0.2%si,0.0%st
cpu1 : 0.0%us,0.8%sy,93.0%id,0.2%wa,6.0%si,0.0%st
cpu2 : 0.0%us,0.6%sy,94.4%id,0.1%wa,4.8%si,0.0%st
cpu3 : 0.0%us,7.5%sy,36.3%id,56.1%wa,0.0%si,0.0%st
cpu4 : 0.0%us,1.3%sy,85.7%id,4.9%wa,8.1%si,0.0%st
cpu5 : 0.1%us,5.5%sy,36.2%id,58.3%wa,0.0%st
cpu6 : 0.0%us,5.0%sy,58.7%wa,0.0%st
cpu7 : 0.0%us,5.1%sy,58.5%wa,0.0%st
cpu8 : 0.1%us,8.3%sy,27.2%id,64.4%wa,0.0%st
cpu9 : 0.1%us,7.9%sy,55.8%wa,0.0%st
cpu10 : 0.0%us,7.8%sy,56.0%wa,0.0%st
cpu11 : 0.0%us,7.3%sy,56.4%wa,0.0%st
cpu12 : 0.0%us,5.6%sy,33.1%id,61.2%wa,0.0%st
cpu13 : 0.1%us,5.3%sy,36.1%id,0.0%st
cpu14 : 0.0%us,4.9%sy,36.4%id,0.0%st
cpu15 : 0.1%us,5.4%sy,36.5%id,58.1%wa,0.0%st
鉴于此,运行“dstat 10”报告的吞吐量在2200-2300 MB /秒的范围内.
鉴于上面的数学,我期望在2 * 1920~ = 3600 MB / sec的范围内.
有没有人知道我的丢失带宽去了哪里?
谢谢!