一种中断负载均衡优化方法及装置制造方法及图纸

技术编号:36803947 阅读:15 留言:0更新日期:2023-03-09 00:03
本发明专利技术涉及中断负载领域,具体公开一种中断负载均衡优化方法及装置,根据服务器各部件的链路获取磁盘控制器的硬盘亲和性物理CPU列表;并通过内核获取原始CPU亲和核心列表中的各个CPU亲和核心所在的物理CPU,记为原始物理CPU;计算各个原始物理CPU的工作负载,若某个原始物理CPU的工作负载超过第一负载阈值,则将该原始物理CPU对应的CPU亲和核心从原始CPU亲和核心列表中删除,并从硬盘亲和性物理CPU列表中选择负载小于第一负载阈值且负载最小的物理CPU,从该物理CPU上选择CPU核心添加到原始CPU亲和核心列表中获得优化CPU亲和核心列表。本发明专利技术通过增加中断负载均衡监控服务对中断原有的CPU亲和核心进行调整,实现中断负载的均衡处理,减少CPU发生软锁的几率。减少CPU发生软锁的几率。减少CPU发生软锁的几率。

【技术实现步骤摘要】
一种中断负载均衡优化方法及装置


[0001]本专利技术涉及中断负载领域,具体涉及一种中断负载均衡优化方法及装置。

技术介绍

[0002]服务器业务运行压力过大,比如常见的在对服务器磁盘进行压力测试的过程中,会经常出现在某个CPU上大量积压的任务得不到执行而导致软锁(soft lockup)的情况,系统日志中会出现soft lockup日志及相应的寄存器信息、Call Trace(函数调用跟踪)信息。
[0003]软锁就是内核线程或陷入内核态的用户进程占用CPU的时间过长,超过了允许的阈值,将CPU上的业务压力小时,发生软锁的几率大大降低。软锁问题的存在会影响客户业务的顺畅运行,降低业务运行的效率,严重的情况下会出现死机或宕机重启。
[0004]软锁问题在目前主流的Linux操作系统磁盘业务压力大的场景下,普遍存在(比如Redhat Enterprise Linux 7、Redhat Enterprise Linux 8、SUSE Linux Enterprise Server、Unbuntu、Debian等)。现有技术中Linux内核中CPU死锁(软锁和硬锁)的检测机制已经比较完善,但Linux内核中的中断负载均衡机制实际执行效果不太理想,尤其是对于SATA控制器、sSATA控制器下的SATA、SAS盘,实际中断仍然集中在少数几个CPU核上,导致这几个CPU核过度繁忙,而其他CPU核心却可能因为空闲而进入节能状态,而过度繁忙的CPU核心出现软锁的几率大大增加。
[0005]图1是当前中断负载均衡原理示意图,当用户提交磁盘读写指令后(比如fio随机读的指令:fio
‑‑
name=r_4k
‑‑
filename=/dev/sdb
‑‑
ioengine=libaio
‑‑
numjobs=4
‑‑
iodepth=128
‑‑
rw=randread
‑‑
blocksize=4k
‑‑
time_based
‑‑
runtime=600
‑‑
direct=1),内核首先会检索磁盘或文件系统所在磁盘对应的磁盘控制器,之后获取内核给磁盘控制器分配的中断号列表。首先获取第一个中断号的CPU亲和性列表,往第一个CPU亲和核心上分配第一个fio读任务,然后往第一个中断号的第二个CPU亲和核心分配第二个fio读任务,若存在未分配的fio读任务,则依次往第一个中断号对应的CPU亲和核心上分配任务,直到第一个中断号对应的CPU亲和核心列表都遍历完。若存在未分配的fio读任务,则继续获取第二个中断号对应的CPU亲和性列表,根据第二个中断号CPU亲和顺序,依次往对应的CPU亲和核心上分配任务,直到所有任务都分配完成或第二个中断号CPU亲和性列表遍历完成。若仍然存在未完成分配的fio读任务,则依次类推,往磁盘控制器对应的其他中断号的CPU亲和核心上分配任务,直到所有的任务都完成分配。若遍历完所有中断号对应的所有CPU亲和核心后,仍有任务未得到分配,则中断号置为磁盘控制器对应的第一个中断号,按照同样的规则,依次遍历各个中断对应的CPU亲和核心列表分配任务,直到所有任务都完成分配。
[0006]当前Linux内核中的中断负载均衡机制,无法做到有效均衡负载的原因有如下几点:
[0007](1)一个SATA、sSATA控制器下最多可以接15块磁盘,15个磁盘共用1个控制器对应的1个中断号,当对一个控制器下的所有磁盘同时进行压力测试或同时增大业务负载时,则所有的磁盘任务的CPU中断将非常集中。
[0008](2)控制器中断号对应的CPU亲和性列表是由控制器驱动确定的,控制器驱动会根据控制器的物理位置,选择物理位置更近的CPU作为亲和CPU,比如连接PCH的SATA控制器的中断会选择CPU 0作为亲和CPU,CPU 0下的核心作为亲和CPU核心。CPU 0的核心在同一时刻,不只负责处理磁盘中断,还有很多其他任务运行在CPU 0的核心上。若此时负载过大,则发生软锁的几率增大。
[0009](3)磁盘读写任务的数量是有限的,根据现有技术的中断分配原则,中断将更多的集中于前几个CPU亲和核心上,导致前几个亲和核心负载过大,进而导致在这几个CPU核心上发生软锁的几率增大。

技术实现思路

[0010]为解决上述问题,本专利技术提供一种中断负载均衡优化方法及装置,通过增加中断负载均衡监控服务,监控CPU及CPU上核心的负载情况,对中断原有的CPU亲和核心进行调整,实现中断负载的均衡处理,减少CPU发生软锁的几率。
[0011]第一方面,本专利技术的技术方案提供一种中断负载均衡优化方法,包括以下步骤:
[0012]接收内核反馈的中断负载任务,根据服务器各部件的链路获取磁盘控制器的硬盘亲和性物理CPU列表;
[0013]获取中断号对应的原始CPU亲和核心列表,并通过内核获取各个CPU亲和核心所在的物理CPU,记为原始物理CPU;
[0014]计算各个原始物理CPU的工作负载,若某个原始物理CPU的工作负载超过第一负载阈值,则将该原始物理CPU对应的CPU亲和核心从原始CPU亲和核心列表中删除,并从硬盘亲和性物理CPU列表中选择负载小于第一负载阈值且负载最小的物理CPU,从该物理CPU上选择CPU核心添加到原始CPU亲和核心列表中获得优化CPU亲和核心列表,其中添加到原始CPU亲和核心列表的CPU核心与删除的CPU亲和核心数量相同;
[0015]将优化CPU亲和核心列表发送给中断负载任务,进行磁盘读写任务分配。
[0016]进一步地,物理CPU工作负载的计算,具体包括:
[0017]向内核获取物理CPU上的所有CPU核心的就绪任务数和等待任务数;
[0018]将就绪任务数和等待任务数相加获得物理CPU的工作负载。
[0019]进一步地,该方法具体包括以下步骤:
[0020]从硬盘亲和性物理CPU列表中选出负载小于第一负载阈值且负载最小的物理CPU;
[0021]将该选出的物理CPU上的CPU核心按照负载大小进行排序;
[0022]选择与删除的CPU亲和核心数量相同的负载小的CPU核心添加到原始CPU亲和核心列表中获得优化CPU亲和核心列表。
[0023]进一步地,该方法还包括以下步骤:
[0024]若硬盘亲和性物理CPU列表中的所有物理CPU的负载均超过第一负载阈值,则从原始物理CPU中的剩余原始物理CPU中选择负载最小的物理CPU,将该物理CPU上的CPU核心按照负载大小进行排序,选择与删除的CPU亲和核心数量相同的负载小的CPU核心添加到原始CPU亲和核心列表中获得优化CPU亲和核心列表。
[0025]进一步地,该方法还包括以下步骤:
[0026]对优化CPU亲和核心列表中的所有CPU亲和核心按照负载大小进行排序,负载小的
CPU亲和核心排名本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种中断负载均衡优化方法,其特征在于,包括以下步骤:接收内核反馈的中断负载任务,根据服务器各部件的链路获取磁盘控制器的硬盘亲和性物理CPU列表;获取中断号对应的原始CPU亲和核心列表,并通过内核获取各个CPU亲和核心所在的物理CPU,记为原始物理CPU;计算各个原始物理CPU的工作负载,若某个原始物理CPU的工作负载超过第一负载阈值,则将该原始物理CPU对应的CPU亲和核心从原始CPU亲和核心列表中删除,并从硬盘亲和性物理CPU列表中选择负载小于第一负载阈值且负载最小的物理CPU,从该物理CPU上选择CPU核心添加到原始CPU亲和核心列表中获得优化CPU亲和核心列表,其中添加到原始CPU亲和核心列表的CPU核心与删除的CPU亲和核心数量相同;将优化CPU亲和核心列表发送给中断负载任务,进行磁盘读写任务分配。2.根据权利要求1所述的中断负载均衡优化方法,其特征在于,物理CPU工作负载的计算,具体包括:向内核获取物理CPU上的所有CPU核心的就绪任务数和等待任务数;将就绪任务数和等待任务数相加获得物理CPU的工作负载。3.根据权利要求2所述的中断负载均衡优化方法,其特征在于,该方法具体包括以下步骤:从硬盘亲和性物理CPU列表中选出负载小于第一负载阈值且负载最小的物理CPU;将该选出的物理CPU上的CPU核心按照负载大小进行排序;选择与删除的CPU亲和核心数量相同的负载小的CPU核心添加到原始CPU亲和核心列表中获得优化CPU亲和核心列表。4.根据权利要求3所述的中断负载均衡优化方法,其特征在于,该方法还包括以下步骤:若硬盘亲和性物理CPU列表中的所有物理CPU的负载均超过第一负载阈值,则从原始物理CPU中的剩余原始物理CPU中选择负载最小的物理CPU,将该物理CPU上的CPU核心按照负载大小进行排序,选择与删除的CPU亲和核心数量相同的负载小的CPU核心添加到原始CPU亲和核心列表中获得优化CPU亲和核心列表。5.根据权利要求4所述的中断负载均衡优化方法,其特征在于,该方法还包括以下步骤:对优化CPU亲和核心列表中的所有CPU亲和核心按照负载大小进行排序,负载小的CPU亲和核心排名靠前,负载大的CPU亲和核心排名靠后,获得优先级调整后的优化CPU亲和核心列表;将优先级调整后的优化CPU亲和核心列表中的工作负载超过第二负载阈值的CPU亲和核心删除,得到最终的优化CPU亲和核心列表;将最终的优化CPU亲和核心列表发送给中断负载任务。6.根据权利要求5所述的中断负载均衡优化方法,其特征在于,该方法还包括以下步骤:先获取第一个中断号的原始CPU亲和核心列表进行优化;若第一个中断号的最终的优化CPU亲和核心...

【专利技术属性】
技术研发人员:张旭芳匡志鹏
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1