注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

dp: 生活的脚步,进步的点滴...

Cam、DSP、FPGA、PM、Life、More ...

 
 
 

日志

 
 

PCI-E SSD卡中断配置问题  

2013-01-15 23:05:22|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Erlang非业余研究

原创文章,转载请注明: 转载自非业余研究

本文链接地址: PCI-E SSD卡中断配置问题

随着PCI-E SSD卡的普及,很多高性能的服务器都用上了如fusionio这样的设备来提升IO的性能,这样会带来一些问题。 这些高速的IO设备在运作的时候会产生大量的中断来通知IO的完成,而中断是默认摊到所有的CPU:

#cat /proc/irq/1/smp_affinity
ffffffff

在实践中来看会落在最繁忙的0核心上,这样就会给性能雪上加霜,效果如下:

cat /proc/interrupts |grep fct
144: 39913474 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge iodrive-fct0
145: 44976079 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge iodrive-fct1

中断144,145属于iodrive-fct高速设备的,都落在了0号核心上。

对于大多数的高性能服务器通常都有16-32个核心,越靠后面的核心越闲,那为什么我们不把中断移到后面的核心,让核心0解放出来多做其他的事情呢?毕竟由于历史原因,很多东西还是在核心0上做的,减负!

这个问题的核心就是要设置/proc/N/145/smp_affinity的CPU掩码, 手工做比较麻烦。

好了,脚本来了:

# cat set_fio_affinity.sh   #!/bin/bash    set_affinity()  {      MASK_TMP=$((1<<(`expr $VEC + $CORE`)))      MASK=`printf "%X" $MASK_TMP`      printf "%s mask=%s for /proc/irq/%d/smp_affinity\n" $DEV$VEC $MASK $IRQ      printf "%s" $MASK > /proc/irq/$IRQ/smp_affinity  }      if [ $# -ne 1 ] ; then      echo "usage:"      echo "    $0 core "      exit  fi    CORE=$1  DEV="iodrive-fct"  MAX=`grep -i $DEV /proc/interrupts | wc -l`  if [ "$MAX" == "0" ] ; then      echo no $DIR vectors found on $DEV      exit  fi    for VEC in `seq 0 1 $MAX`  do      for IRQ in `cat /proc/interrupts | grep -i $DEV$VEC|cut  -d:  -f1| sed "s/ //g"`      do          set_affinity      done  done    # ./set_fio_affinity.sh 30   iodrive-fct0 mask=40000000 for /proc/irq/144/smp_affinity  iodrive-fct1 mask=80000000 for /proc/irq/145/smp_affinity  

再cat /proc/interrupts看下实践效果就可以看到后面的核心已经有中断了,而且0号核心上的数字没变!

fusionio_irq

另外一姐妹篇 “MYSQL数据库网卡软中断不平衡问题及解决方案” 参见 这里

祝玩的开心!

Post Footer automatically generated by wp-posturl plugin for wordpress.

Sent with Reeder
  评论这张
 
阅读(470)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016