一种将sas控制器中断绑定到cpu的自动化方法

文档序号:8258162阅读:506来源:国知局
一种将sas控制器中断绑定到cpu的自动化方法
【技术领域】
[0001]本发明涉及计算机技术,具体地说是一种将SAS控制器中断绑定到CPU的自动化方法。
【背景技术】
[0002]从2.4版本内核开始,Linux改进了分配特定中断到指定的处理器(或处理器组)的功能,被称为SMP IRQ affinity,它可以控制系统如何响应各种硬件事件,允许限制或者重新分配服务器的工作负载,从而让服务器更有效的工作。以SAS控制器中断为例,在没有设置SMP IRQ affinity时,所有SAS控制器中断主要被关联到CPU0,这导致了 CPUO负载过高,且会影响1PS性能。通过SMP IRQ affinity,把SAS控制器多个中断分配到多个CPU上,可以分散CPU压力,提高数据处理速度。但是要实现SAS控制器中断到指定CPU之间的绑定需要输入大量的系统命令,这不仅需要熟练的操作和专业知识,还需要耗费大量的时间。

【发明内容】

[0003]本方明针对现有技术存在的技术问题,开发了一个基于shell脚本的将SAS控制器中断绑定到CPU的自动化方法。
[0004]本发明所述一种将SAS控制器中断绑定到CPU的自动化方法,解决上述技术问题采用的技术方案如下:整个过程主要是利用shell脚本实现SAS控制器中断到CPU的自动化绑定,自动实现SAS控制器中断到CPU的绑定,免去人机交互过程。
[0005]本发明所述自动化方法,利用shell脚本自动获取SAS控制器中断号,自动计算并分配中断号到指定的CPU,该过程完全自动完成。该动化方法的具体流程如下,首先强制关闭irqbalance服务,然后自动获取CPU内核总数,并自动获取SAS控制器中断号、SAS卡中断数量以及绑定这些中断所需的CPU组;最后,显示最终绑定结果,整个过程结束。
[0006]本发明的一种将SAS控制器中断绑定到CPU的自动化方法与现有技术相比具有的有益效果是:该自动化方法通过shell脚本实现特定SAS控制器中断到指定CPU的全自动绑定,无需手动输入大量的系统命令和其他操作;较以往需要手动绑定的方法,减少了不必要的人机交互过程,节省人力、时间、成本等资源,并且操作简单无需经验也可完成相关操作;该自动化方法应用在服务器性能测试阶段和服务器投入使用时,用来提高SAS卡1PS性能,可以节省人力和时间,提高工作效率。
【附图说明】
[0007]附图1为将SAS控制器中断绑定到CPU的自动化方法的流程图。
【具体实施方式】
[0008]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参考附图,对本发明所述一种将SAS控制器中断绑定到CPU的自动化方法进一步详细说明。
[0009]本发明所述一种将SAS控制器中断绑定到CPU的自动化方法,整个过程主要是利用shell脚本实现SAS控制器中断到CPU的自动化绑定,自动实现SAS控制器中断到CPU的绑定,免去人机交互过程。该shell脚本使用方便,操作简单,无需掌握专业知识也可完成操作;该自动化方法应用在服务器性能测试阶段和服务器投入使用时,用来提高SAS卡1PS性能,可以节省人力和时间,提高工作效率。
[0010]实施例1:
本实施例所述一种将SAS控制器中断绑定到CPU的自动化方法,通过shell脚本实现特定SAS控制器中断到指定CPU的全自动绑定,无需手动输入大量的系统命令和其他操作;整个过程主要是利用shell脚本自动获取SAS控制器中断号,自动计算并分配中断号到指定的CPU,该过程完全自动完成。
[0011]本实施例所述自动化方法的具体流程,如附图1所示,首先强制关闭irqbalance服务,然后,自动获取CPU内核总数,并自动获取SAS控制器中断号、SAS卡中断数量以及绑定这些中断所需的CPU组;最后,显示最终绑定结果,整个过程结束。
[0012]在该将SAS控制器中断绑定到CPU的自动化方法中,关于强制关闭irqbalance服务:因系统自带用于自动中断分配服务(irqbalance)与本操作冲突,脚本根据OS不同(suse或redhat),首先强制将irqbalance服务关闭;
实现方法如下:
if [ -f /etc/SuSE-release ] && [ -f /etc/init.d/irq_balancer ];then /etc/init.d/irq_balancer stop
elif [ -f /etc/redhat-release ] && [ -f /etc/init.d/irqbalance ];then /etc/init.d/irqbalance stopelse exit I;fi;.在该将SAS控制器中断绑定到CPU的自动化方法中,自动计算CPU内核总数(cpu_count):
cpu_count= cat /proc/cpuinfo | grep - c process.在该将SAS控制器中断绑定到CPU的自动化方法中,自动获取SAS控制器的中断号unique id (1c)、SAS卡中断数量(msix_count)、绑定这些中断所需的CPU组(grouping),是指按CPU内核总数和SAS卡中断号总数,计算每个中断绑定哪些CPU内核,形成位掩码bitmask,并写入 /proc/irq/IRQ#/smp_aff inity,实现方法如下:scsi_host=〃/sys/class/scsi_host〃cd $ {scsi_host}subfolders=' Is -1'for i in $ {subfolders};do cd ${scsi_host}/${i};
if [ cat proc_name ! = //mpt2sas// ];then continue;fi; if [ ! -f reply_queue_count ]; then
echo 〃reply_queue_count sysfs attribute doesn’ t exist〃 continue;
fi;
if [ cat reply_queue_count' -1t 2 ]; thencontinue;
fi;
1c=' cat unique—id'# 获取 SAS 控制器的 unique id
index=0
affinity=l
cpu—affinity—count=0
msix_count=' cat /proc/interrupts | grep _c mpt2sas$ {1c} -msix' #总中断数
if [ ${cpu—count} -gt ${msix_count}]; then let grouping=$ {cpu—count}/$ {msix—count}# 所需的 CPU 组
let grouping—mod=${cpu_count}%${msix_count}.在该将SAS控制器中断绑定到CPU的自动化方法中,输出SAS控制器的中断号uniqueid (1c),cpu内核总数(cpu—count),总中断矢量数量(msix—count),每个中断向量分配的核数。同时,获取SAS卡中断号(a),表示a中断将被路由到哪个指定处理器的位掩码(b),实现方法如下:
echo grouping = $ {grouping},grouping—mod = ${grouping—mod}if [ $ {grouping} -1t 2 ]; thencpu_grouping=2;
elif [ $ {grouping} _eq 2 ] && [ ${grouping—mod} _eq 0 ]; then cpu_grouping=2; elif [ $ {grouping} -1t 4 ]; then cpu—grouping=4;
elif [ $ {grouping} _eq 4 ] && [ $ {grouping—mod} _eq 0 ]; then cpu—grouping=4; elif [ $ {grouping} -1t 8 ]; then cpu—grouping=8;
elif [ $ {grouping} _eq 8 ] && [ $ {grouping—mod} _eq 0 ];
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1