CN115562830A - 主机总线适配器调优方法及装置、电子设备、存储介质 - Google Patents

主机总线适配器调优方法及装置、电子设备、存储介质 Download PDF

Info

Publication number
CN115562830A
CN115562830A CN202211215606.8A CN202211215606A CN115562830A CN 115562830 A CN115562830 A CN 115562830A CN 202211215606 A CN202211215606 A CN 202211215606A CN 115562830 A CN115562830 A CN 115562830A
Authority
CN
China
Prior art keywords
cpu
cpu core
core
processed
tasks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211215606.8A
Other languages
English (en)
Inventor
赵洪宋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202211215606.8A priority Critical patent/CN115562830A/zh
Publication of CN115562830A publication Critical patent/CN115562830A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Abstract

本申请提供了一种主机总线适配器调优方法及装置、电子设备、存储介质,其中,方法包括:获取主机总线适配器HBA卡待处理的多个任务队列,以及HBA卡绑定的多个中央处理器CPU内核;其中,一个任务队列绑定一个CPU内核;从HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核;启动中断请求,以将待处理CPU内核对应的任务队列中的任务分配给目标CPU内核处理;实现了通过中断请求将任务分配给响应次数最低的目标CPU内核处理,同时达到CPU亲和度的优化,解决了数据读写慢的问题,提高了HBA卡性能。

Description

主机总线适配器调优方法及装置、电子设备、存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及主机总线适配器调优方法及装置、电子设备、存储介质。
背景技术
主机总线适配器,英文Host Bus Adapter,简称HBA卡是一个在服务器和存储装置间提供输入/输出(I/O)处理和物理连接的电路板或集成电路适配器。因为HBA卡减轻了主处理器在数据存储和检索任务的负担,所以它能够提高服务器、存储设备的性能。
但随着IT(Information Technology,信息技术)企业的建设,数据量的急剧增加,数据访问的频率增加,使得服务器在使用过程中存在CPU(Central Processing Unit,中央处理器)内核被多数占用的情况,影响了硬盘数据的读写。因此,如何对HBA优化以提高硬盘数据的读写能力,是本领域技术人员迫切需要解决的技术问题。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
鉴于上述问题,提出了本申请以便提供克服上述问题或者至少部分地解决上述问题的主机总线适配器调优方法及装置、电子设备、存储介质,包括:
一种主机总线适配器调优方法,所述方法包括:
获取主机总线适配器HBA卡的多个任务队列,以及所述HBA卡绑定的多个中央处理器CPU内核;其中,一个任务队列绑定一个CPU内核;
从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核;
启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理。
可选地,在所述启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理之前,所述方法包括:
确定所述HBA卡对应的中断号;
根据所述中断号和所述待处理CPU内核以及所述目标CPU内核,生成中断请求。
可选地,所述从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核,包括:
确定所述HBA卡绑定的各个CPU内核在预设时间段内执行的任务数量;
将所述任务数量最多的CPU内核确定为待处理CPU内核,以及将所述任务数量最少的CPU内核确定为目标CPU内核。
可选地,所述将所述任务数量最多的CPU内核确定为待处理CPU内核,还包括:
当所述任务数量最多的CPU内核对应的任务数量大于预设任务数量阈值时,将所述任务数量最多的CPU内核确定为待处理CPU内核。
可选地,所述将所述任务数量最少的CPU内核确定为目标CPU内核,包括:
当所述任务数量最少的CPU内核有多个时,确定每个所述任务数量最少的CPU内核所属的物理核标识;所属物理核标识为数值标识;
对多个所述任务数量最少的CPU内核所属的物理核标识按照数值大小进行排序,将数值最小的物理核标识对应的CPU内核确定为目标CPU内核。
可选地,所述从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核,包括:
按照指定间隔从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核;或者,
在执行所述启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理步骤之后,继续执行所述从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核。
可选地,在所述启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理之前,所述方法还包括:
当中断平衡守护进程irqbalance处于运行状态时,停止运行所述irqbalance。
一种主机总线适配器调优装置,所述装置包括:
队列获取模块,用于获取主机总线适配器HBA卡的多个任务队列,以及所述HBA卡绑定的多个中央处理器CPU内核;其中,一个任务队列绑定一个CPU内核;
内核确定模块,用于从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核;
任务分配模块,用于启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理。
可选地,所述装置还包括:
中断号确定模块,用于确定所述HBA卡对应的中断号;
中断请求生成模块,用于根据所述中断号和所述待处理CPU内核以及所述目标CPU内核,生成中断请求。
可选地,所述内核确定模块,包括:
第一确定子模块,用于确定所述HBA卡绑定的各个CPU内核在预设时间段内执行的任务数量;
第二确定子模块,用于将所述任务数量最多的CPU内核确定为待处理CPU内核,以及将所述任务数量最少的CPU内核确定为目标CPU内核。
可选地,所述第二确定子模块具体用于当所述任务数量最多的CPU内核对应的任务数量大于预设任务数量阈值时,将所述任务数量最多的CPU内核确定为待处理CPU内核。
可选地,所述第二确定子模块,包括:
物理核标识确定单元,用于当所述任务数量最少的CPU内核有多个时,确定每个所述任务数量最少的CPU内核所属的物理核标识;所属物理核标识为数值标识;
目标内核确定单元,用于对多个所述任务数量最少的CPU内核所属的物理核标识按照数值大小进行排序,将数值最小的物理核标识对应的CPU内核确定为目标CPU内核。
可选地,所述内核确定模块具体用于按照指定间隔从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核;或者,用于在执行所述启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理步骤之后,继续执行所述从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核。
可选地,所述装置还包括:
irqbalance停止模块,用于当中断平衡守护进程irqbalance处于运行状态时,停止运行所述irqbalance。
一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的主机总线适配器调优方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的主机总线适配器调优方法的步骤。
本申请具有以下优点:
在本申请的实施例中,通过获取主机总线适配器HBA卡待处理的多个任务队列,以及HBA卡绑定的多个中央处理器CPU内核;其中,一个任务队列绑定一个CPU内核;从HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核;启动中断请求,以将待处理CPU内核对应的任务队列中的任务分配给目标CPU内核处理;实现了通过中断请求将任务分配给响应次数最低的目标CPU内核处理,同时达到CPU亲和度的优化,解决了数据读写慢的问题,提高了HBA卡性能。
附图说明
为了更清楚地说明本申请的技术方案,下面将对本申请的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的一种主机总线适配器调优方法的步骤流程图;
图2为本申请实施例一示例中的主机总线适配器调优方法的步骤流程图;
图3为本申请实施例的一种主机总线适配器调优装置的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
随着技术的发展,大数据应用正在快速发展。目前服务器是大数据时代的载体,记录数据和计算数据的传输。服务器主要包含存储器、中央控制器、内存寄存器、传输总线等。服务器根据功能可分为打印服务器、存储服务器、文件服务器、WEB(World Wide Web,全球广域网)服务器等。在大数据时代,存储服务器的保存数据功能,起到关键作用。
HBA卡是服务器和存储系统的输入/输出通道之间的物理连接。它减轻了CPU在数据传输的负担,同时提高了服务器的性能,解决了服务器卡顿问题。高速的数据传输,提高了工作效率。
但随着IT企业的建设,数据量的急剧增加,数据访问的频率增加,使得服务器在使用过程中存在CPU内核被多数占用的情况,影响了硬盘数据的读写。
目前存储系统上不同应用数据IO访问影响着其性能。主要表现在IO大小,读写比例,顺序或随机读写上,同时还有触发了性能瓶颈。针对影响性能的特征点,发明人想到了如下优化方法:
(1)考虑整个IO路径的性能瓶颈,分析性能优化方案中连锁反应,可以从硬件层面上解决性能瓶颈问题。如采用速率为Gen4(第四代)的卡比速率为Gen3(第三代)的卡,在性能瓶颈上有提高。如增加CPU支持速率和链路带宽等。
(2)从硬盘上进行优化。传统的机械硬盘替换成全闪存硬盘。如SSD/NVME,优化了底层的通信框架,提高数据传输速率,降低延时。
(3)调整性能负载。调整硬盘负载或调整HBA卡负载,增加新的存储。
(4)数据缓存优化。采用高端内存,增加数据缓存。
(5)使用fio(一个多线程IO生成工具,可以生成多种IO模式,用来测试磁盘设备的性能)压力测试时,绑定CPU内核,提高硬盘性能。
当发明人发现上述优化方法存在如下缺陷:
缺点一:当出现性能瓶颈时,若从硬件上修改,需要提高CPU和链路带宽。该种方法研发投入时间,需求开发资源较大。同时CPU的升级需要Intel/AMD平台合作升级,若从板卡上升级,需平台支持速率和带宽满足性能。这种优化方法不利于当前企业已购产品的替换。
缺点二:目前传统机械硬盘的传输速率较SSD/NVME低,但存储容量符合企业级。另一方面传统机械硬盘的价格低于SSD/NVME的价格,更适合企业做存储。该问题导致企业更倾向于传统机械硬盘,实用性上调整空间小。
缺点三:企业更倾向于配置的全部应用,而非增加负载和内存解决。
缺点四:在使用绑核方式跑压测过程中,绑在哪个CPU上,无法确定,需多次尝试才能达到最优。
鉴于此,本申请实施例提出了一种主机总线适配器调优方法,通过获取主机总线适配器HBA卡的多个任务队列,以及HBA卡绑定的多个中央处理器CPU内核;从HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核;启动中断请求,以将待处理CPU内核对应的任务队列中的任务分配给目标CPU内核处理;实现了通过中断请求将任务分配给响应次数最低的目标CPU内核处理,达到CPU亲和度的优化,解决了数据读写慢的问题,提高了HBA卡性能。
可以理解,本申请的核心构思之一在于,基于中断请求,将HBA卡的任务分配给其绑定的响应次数最低的CPU内核,以达到CPU亲和度的优化,解决了数据读写慢的问题,提高了HBA卡性能。
参照图1,示出了本申请一实施例提供的一种主机总线适配器调优方法,该方法可以包括如下步骤:
步骤101,获取主机总线适配器HBA卡的多个任务队列,以及所述HBA卡绑定的多个中央处理器CPU内核。
在本申请实施例中,HBA卡支持多任务队列,每个任务队列绑定一个CPU内核,可以理解,每个任务队列中的任务在默认情况下分配给其绑定的CPU内核处理。每个任务队列中具有多个待处理的任务,该待处理的任务具体可以是待处理的IO请求。
一个HBA卡可以绑定多个CPU内核,本申请实施例中的CPU内核是指逻辑CPU。
具体地,在一台设备中,可以具有一个或多个CPU,即具有一个或多个物理CPU,物理CPU是实在的可以看到的计算机硬件,插入设备的CPU插槽里。一个物理CPU可以有一个或多个物理核,即一个物理CPU可以有一个或多个物理CPU核心。一个物理CPU核心可以作为一个或者两个逻辑CPU,当开启超线程时,一个物理CPU核心作为两个逻辑CPU,即两个CPU内核。
步骤102,从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核。
本申请实施例中,一个HBA卡绑定有多个CPU内核,可以获取每个CPU内核的响应次数,从中确定出响应次数最高的CPU内核和响应次数最低的CPU内核,将响应次数最高的CPU内核作为待处理CPU内核,将响应次数最低的CPU内核作为目标CPU内核。具体地,该响应次数与负载相关,一般地,响应次数越高的CPU内核,对应的负载越大;响应次数越低的CPU内核,对应的负载越小。
步骤103,启动中断请求,以将所述待处理CPU内核对应的任务队列中的任务分配给所述目标CPU内核处理。
中断请求,即IRQ(Interrupt ReQuest),在CPU正在执行其他工作时,若收到周边设备传来的中断信号,即停下当前的工作,优先处理该中断信号的工作,待完成该中断信号的工作后继续之前未完成的工作。
目前服务器都是多CPU多核的SMP(Symmetric Multi-Processor,对称多处理器结构)体系,在该体系结构中,可以通过调用系统和相关的宏来设置CPU亲和力。将一个或多个进程绑定到某个CPU核上运行,本申请实施例通过启动中断请求,将待处理CPU内核对应的任务队列中的任务分配给目标CPU内核处理。
本申请的实施例通过获取主机总线适配器HBA卡待处理的多个任务队列,以及HBA卡绑定的多个中央处理器CPU内核;其中,一个任务队列绑定一个CPU内核;从HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核;启动中断请求,以将待处理CPU内核对应的任务队列中的任务分配给目标CPU内核处理;实现了通过中断请求将任务分配给响应次数最低的目标CPU内核处理,同时达到CPU亲和度的优化,解决了数据读写慢的问题,提高了HBA卡性能。
下面,将对本示例性实施例中主机总线适配器调优方法作进一步地说明。
在步骤101中,获取主机总线适配器HBA卡的多个任务队列,以及所述HBA卡绑定的多个中央处理器CPU内核。
在本申请实施例中,HBA卡支持多任务队列,每个任务队列绑定一个CPU内核,可以理解,每个任务队列中的任务在默认情况下分配给其绑定的CPU内核处理。每个任务队列中具有多个待处理的任务,该待处理的任务具体可以是待处理的IO请求。
一个HBA卡可以绑定多个CPU内核,本申请实施例中的CPU内核是指逻辑CPU。
在一具体示例中,可以采用如下命令获取HBA卡的任务队列:
multiqueue=`ls-d/proc/irq/*/mpt2sas*|grep mpt2sas0.*-.*1`。
进一步地,在本申请一可选实施例中,可以对HBA卡绑定的多个CPU内核进行排序,以便后续可以基于排序后的顺序获取每个CPU内核的响应次数,可以减少后续获取每个CPU内核的响应次数的代码量,提高后续获取每个CPU内核的响应次数的效率。
示例性地,对于HBA卡绑定的多个CPU内核,当多个CPU内核属于同一个物理CPU时,可以根据CPU内核所属的物理核的物理核标识进行排序。其中,物理核标识为数值标识,根据CPU内核所属的物理核标识进行排序具体可以是按照物理核标识的数值从小到大的顺序进行排序。
例如,一个物理CPU,物理CPU标识为为0,具有8个物理核,物理核标识分别为0-7,每个物理核可以作为两个逻辑核,即两个CPU内核,则该物理CPU0具有16个CPU内核,分别为0-15,该0-15也可以认为是CPU内核的逻辑标识,对应关系如下表1所示。
表1
CPU内核 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
物理CPU 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
物理核标识 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
在具体实现中,可以通过如下代码对多个CPU内核进行排序:
Figure BDA0003876575860000091
Figure BDA0003876575860000101
对上述物理CPU的多个CPU内核进行重新排序后,可以得到如下表2所示的排序结果。
表2
物理CPU 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
物理核标识 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7
CPU内核 0 8 1 9 2 10 3 11 4 12 5 13 6 14 7 15
多个CPU内核按照对应的物理核标识从小到大的顺序进行排序,对于同一个物理核标识对应的两个CPU内核则按照CPU内核的逻辑标识从小到大的顺序进行排序。
在步骤102中,从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核。
本申请实施例中,一个HBA卡绑定有多个CPU内核,可以获取每个CPU内核的响应次数,从中确定出响应次数最高的CPU内核和响应次数最低的CPU内核,将响应次数最高的CPU内核作为待处理CPU内核,将响应次数最低的CPU内核作为目标CPU内核。
示例性地,确定响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核的过程,可以包括:
确定所述HBA卡绑定的各个CPU内核在预设时间段内执行的任务数量;
将所述任务数量最多的CPU内核确定为待处理CPU内核,以及将所述任务数量最少的CPU内核确定为目标CPU内核。
其中,预设时间段内执行的任务数量可以是指当前单位时间内正在执行的任务数量和待执行的任务数量之和。可以通过相关命令,获取HBA卡绑定的各个CPU内核在预设时间段内执行的任务数量;在确定HBA卡绑定的各个CPU内核在预设时间段内执行的任务数量之后,可以对各个CPU内核对应的任务数量进行排序,确定出任务数量最多的CPU内核和任务数量最少的CPU内核,将任务数量最多的CPU内核确定为待处理CPU内核,将任务数量最少的CPU内核确定为目标CPU内核。
可选地,当任务数量最多的CPU内核不止一个,或者,任务数量最少的CPU内核不止一个时,可以结合表2中多个CPU内核的排序顺序,将任务数量最多且排序靠前的CPU内核确定为待处理CPU内核,将任务数量最少且排序靠前的CPU内核确定为目标CPU内核。
在一具体示例中,可以通过如下命令获取HBA卡绑定的各个CPU内核在预设时间段内执行的任务数量。
ls-d/proc/irq/*/mpt2sas*|sed's/[^0-9][^0-9]*//g'|sort-n>/tmp/irqaffinity
queue_per_card=`cat/tmp/irqaffinity|awk-F""'{print$NF}'|sort-n|tail-n1`
具体地,以确定目标CPU内核为例,当所述任务数量最少的CPU内核有多个时,确定每个所述任务数量最少的CPU内核所属的物理核标识;所属物理核标识为数值标识;
对多个所述任务数量最少的CPU内核所属的物理核标识按照数值大小进行排序,将数值最小的物理核标识对应的CPU内核确定为目标CPU内核。
可选地,当数值最小的物理核标识对应的CPU内核有多个时,则从中选择逻辑标识最小的CPU内核作为目标CPU内核。
同理,当任务数量最多的CPU内核有多个时,确定每个任务最多的CPU内核所属的物理核标识,对多个任务最多的CPU内核所属的物理核标识按照数值大小进行排序,将数值最小的物理核标识对应的CPU内核确定为待处理CPU内核。
可选地,当数值最小的物理核标识对应的CPU内核有多个时,则从中选择逻辑标识最小的CPU内核作为待处理CPU内核。
进一步地,考虑到当CPU内核在预设时间段内执行的任务数量较少时,即使该CPU内核在预设时间段内执行的任务数量是最多的,也没有必要将其对应的任务队列中的任务分配给其他CPU内核处理,因此,在本申请一些可选实施例中,上述将所述任务数量最多的CPU内核确定为待处理CPU内核,可以包括:
当所述任务数量最多的CPU内核对应的任务数量大于预设任务数量阈值时,将所述任务数量最多的CPU内核确定为待处理CPU内核。
其中,预设任务数量阈值作为评估CPU内核是否超负载的参考,即当CPU内核在预设时间内执行的任务数量少于或等于预设任务数量阈值时,说明该CPU内核处于较轻的负载状态;当该CPU内核在预设时间内执行的任务数量大于预设任务数量阈值时,说明该CPU内核处于非较轻的负载状态,即处于中、重负载状态,因此,需要将其对应的待处理的至少部分任务分配给其他CPU内核处理。
在步骤103中,启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理。
在本实施例中,中断请求用于将待处理CPU内核对应的任务队列中的至少部分任务分配给目标CPU内核处理,以减轻任务数量最多的待处理CPU内核的负担,提高多个CPU内核整体处理任务的能力,优化HBA卡的性能,提高系统的整体吞吐能力。
示例性地,可以按照任务队列中各任务处理的先后顺序,将顺序靠前的待处理的预设数量的任务分配给目标CPU内核处理。其中,预设数量可以是一个,也可以是多个,以减轻待处理CPU内核的负担。该预设数量也可以是一个动态值,例如,由目标CPU内核按照待处理CPU内核对应的任务队列中各个任务处理的先后顺序,处理待处理CPU内核对应的任务序列中的任务,此时,目标CPU内核的响应次数增加,当目标CPU内核的响应次数达到HBA卡绑定的所有CPU内核的响应次数的最大值或达到预设值时,将待处理CPU内核对应的任务序列中剩余的待处理的任务分配给其他响应次数最小的CPU内核处理。
在本申请实施例中,每个设备都有自己的中断号,当需要将HBA绑定的待处理CPU内核对应的任务队列中的任务分配给目标CPU内核处理时,需要确定HBA卡的中断号,以便生成相应的中断请求。可以理解,在上述启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理之前,可以包括:
确定所述HBA卡对应的中断号;
根据所述中断号和所述待处理CPU内核以及所述目标CPU内核,生成中断请求。
假设HBA卡的中断号为90,待处理CPU内核的逻辑标识为14,目标CPU内核的逻辑标识为12,在本申请一示例中,生成的中断请求如下:
echo 12>//proc/irq/90/mpt2sas14/smp_affinity
进一步地,为了防止将待处理CPU内核对应的任务队列中的任务分配给目标CPU内核导致目标CPU内核负载过重,在本申请实施例中,在启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理之后,需要返回执行步骤102,通过循环执行,来优化HBA卡性能。
可选地,为实现在执行完步骤103后,返回步骤102循环执行,还可以通过定时器设置指定时长,以该指定时长作为循环执行的指定间隔,按照指定间隔执行步骤102及后续步骤,即按照指定间隔从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核。
考虑到一些系统中可能会存在中断平衡守护进程irqbalance,irqbalance是用于优化中断分配的服务,它在运行时会自动地将中断尽可能均匀地分发给各个CPU内核,导致本申请中的中断请求无法按照预期处理。因此,在本申请一些可选实施例中,该方法还可以包括:
当中断平衡守护进程irqbalance处于运行状态时,停止运行所述irqbalance。
本实施例可以先判断irqbalance是否处于运行状态,若是,则停止运行irqbalance,若否,则不需要处理。
在本申请一具体示例中,可以通过如下代码来对系统中的irqbalance进行处理。
Figure BDA0003876575860000141
本申请的实施例通过获取主机总线适配器HBA卡待处理的多个任务队列,以及HBA卡绑定的多个中央处理器CPU内核;其中,一个任务队列绑定一个CPU内核;从HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核;启动中断请求,以将待处理CPU内核对应的任务队列中的任务分配给目标CPU内核处理;实现了通过中断请求将任务分配给响应次数最低的目标CPU内核处理,同时达到CPU亲和度的优化,解决了数据读写慢的问题,提高了HBA卡性能。
为了方便本领域技术人员理解本方案,下面将结合图2所示的具体示例流程对本申请一可选实施例进行示例性解释、说明。
步骤201,获取HBA卡队列。即获取HBA卡的多个任务队列。
步骤202,判断irqblance是否打开,若是,则执行步骤203,若否,则执行步骤204。
本步骤用于判断系统中是否运行irqblance,若运行irqblance,则执行步骤203,若没有运行irqblance,则执行步骤204。
步骤203,关闭irqblance。即,将停止运行irqblance。
步骤204,获取CPU数量、物理核数量、逻辑核数量,并排序。
其中,获取CPU数量是指获取HBA卡绑定的CPU内核所涉及到的物理CPU的数量;获取物理核数量是指获取HBA卡绑定的CPU内核所属的物理核的数量。获取逻辑核数量是指获取HBA卡绑定的CPU内核的数量,排序是指将HBA卡绑定的多个CPU内核按照指定的顺序进行排序,该指定顺序可以是先按照CPU内核所属的物理CPU的标识进行排序,对于属于同一个物理CPU的多个CPU内核按照其所属的物理核是物理标识进行排序,最后,对于属于同一个物理核的多个CPU内核按照其对应的逻辑标识进行排序。
步骤205,查找HBA卡的中断号。
一个HBA卡对应一个中断号,可以通过查看命令查找HBA卡的中断号,以便生成后续的中断请求;例如通过命令cat/proc/interrupts,可以查看HBA卡的中断号。
步骤206,循环查找最大响应次数的CPU内核和最小响应次数的CPU内核。
最大响应次数的CPU内核即待处理CPU内核,最小响应次数的CPU内核即目标CPU内核。
本步骤具体包括按照指定间隔查找最大响应次数的CPU内核和最小响应次数的CPU内核;或者,在执行完步骤207后,返回步骤205,继续执行步骤206;以实现动态调优。
步骤207,修改smp_affinity,调整到响应次数小的CPU核上。
即通过修改smp_affinity,将待处理CPU内核对应的任务队列中的至少部分任务分配给目标CPU内核处理,以减轻任务数量最多的待处理CPU内核的负担,提高多个CPU内核整体处理任务的能力,优化HBA卡的性能。
步骤208,所有中断号设置完成结束。
一个HBA卡对应一个中断号,当有多个HBA卡时,则需要为每个HBA执行相同的步骤,以实现优化每个HBA卡的性能,在对所有HBA卡调优完成后,结束HBA卡调优过程。
本申请实施例提供的HBA卡调优方法,利用中断请求的特性,针对HBA卡进行循环查找响应次数最高的CPU内核和响应次数最低的CPU内核,将响应次数最高的CPU内核的任务中断绑核到响应次数最低的CPU内核上,达到CPU亲和度的优化,提高HBA卡性能和硬盘数据的读写速度。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图3,示出了本申请的一种主机总线适配器调优装置实施例的结构框图,与上述方法实施例相对应,在本申请实施例中,主机总线适配器调优装置可以包括如下模块:
队列获取模块301,用于获取主机总线适配器HBA卡的多个任务队列,以及所述HBA卡绑定的多个中央处理器CPU内核;其中,一个任务队列绑定一个CPU内核;
内核确定模块302,用于从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核;
任务分配模块303,用于启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理。
可选地,所述装置还可以包括:
中断号确定模块,用于确定所述HBA卡对应的中断号;
中断请求生成模块,用于根据所述中断号和所述待处理CPU内核以及所述目标CPU内核,生成中断请求。
可选地,所述内核确定模块302,可以包括:
第一确定子模块,用于确定所述HBA卡绑定的各个CPU内核在预设时间段内执行的任务数量;
第二确定子模块,用于将所述任务数量最多的CPU内核确定为待处理CPU内核,以及将所述任务数量最少的CPU内核确定为目标CPU内核。
可选地,所述第二确定子模块具体用于当所述任务数量最多的CPU内核对应的任务数量大于预设任务数量阈值时,将所述任务数量最多的CPU内核确定为待处理CPU内核。
可选地,所述第二确定子模块,可以包括:
物理核标识确定单元,用于当所述任务数量最少的CPU内核有多个时,确定每个所述任务数量最少的CPU内核所属的物理核标识;所属物理核标识为数值标识;
目标内核确定单元,用于对多个所述任务数量最少的CPU内核所属的物理核标识按照数值大小进行排序,将数值最小的物理核标识对应的CPU内核确定为目标CPU内核。
可选地,所述内核确定模块302具体用于按照指定间隔从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核;或者,用于在执行所述启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理步骤之后,继续执行所述从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核。
可选地,所述装置还包括:
irqbalance停止模块,用于当中断平衡守护进程irqbalance处于运行状态时,停止运行所述irqbalance。
本申请实施例提供的主机总线适配器调优装置,通过队列获取模块301、内核确定模块302、任务分配模块303实现了通过中断请求将任务分配给响应次数最低的目标CPU内核处理,同时达到CPU亲和度的优化,解决了数据读写慢的问题,提高了HBA卡性能。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还公开了电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的主机总线适配器调优方法的步骤。
本申请实施例还公开了计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的主机总线适配器调优方法的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本申请实施例中提出的所有获取信息的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种主机总线适配器调优方法及装置、电子设备、存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种主机总线适配器调优方法,其特征在于,所述方法包括:
获取主机总线适配器HBA卡的多个任务队列,以及所述HBA卡绑定的多个中央处理器CPU内核;其中,一个任务队列绑定一个CPU内核;
从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核;
启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理。
2.根据权利要求1所述的方法,其特征在于,在所述启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理之前,所述方法包括:
确定所述HBA卡对应的中断号;
根据所述中断号和所述待处理CPU内核以及所述目标CPU内核,生成中断请求。
3.根据权利要求1所述的方法,其特征在于,所述从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核,包括:
确定所述HBA卡绑定的各个CPU内核在预设时间段内执行的任务数量;
将所述任务数量最多的CPU内核确定为待处理CPU内核,以及将所述任务数量最少的CPU内核确定为目标CPU内核。
4.根据权利要求3所述的方法,其特征在于,所述将所述任务数量最多的CPU内核确定为待处理CPU内核,还包括:
当所述任务数量最多的CPU内核对应的任务数量大于预设任务数量阈值时,将所述任务数量最多的CPU内核确定为待处理CPU内核。
5.根据权利要求3所述的方法,其特征在于,所述将所述任务数量最少的CPU内核确定为目标CPU内核,包括:
当所述任务数量最少的CPU内核有多个时,确定每个所述任务数量最少的CPU内核所属的物理核标识;所属物理核标识为数值标识;
对多个所述任务数量最少的CPU内核所属的物理核标识按照数值大小进行排序,将数值最小的物理核标识对应的CPU内核确定为目标CPU内核。
6.根据权利要求1所述的方法,其特征在于,所述从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核,包括:
按照指定间隔从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核;或者,
在执行所述启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理步骤之后,继续执行所述从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核。
7.根据权利要求1-6任一项所述的方法,其特征在于,在所述启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理之前,所述方法还包括:
当中断平衡守护进程irqbalance处于运行状态时,停止运行所述irqbalance。
8.一种主机总线适配器调优装置,其特征在于,所述装置包括:
队列获取模块,用于获取主机总线适配器HBA卡的多个任务队列,以及所述HBA卡绑定的多个中央处理器CPU内核;其中,一个任务队列绑定一个CPU内核;
内核确定模块,用于从所述HBA卡绑定的多个CPU内核中,获取响应次数最高的待处理CPU内核和响应次数最低的目标CPU内核;
任务分配模块,用于启动中断请求,以将所述待处理CPU内核对应的任务队列中的至少部分任务分配给所述目标CPU内核处理。
9.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的主机总线适配器调优方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的主机总线适配器调优方法。
CN202211215606.8A 2022-09-30 2022-09-30 主机总线适配器调优方法及装置、电子设备、存储介质 Pending CN115562830A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211215606.8A CN115562830A (zh) 2022-09-30 2022-09-30 主机总线适配器调优方法及装置、电子设备、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211215606.8A CN115562830A (zh) 2022-09-30 2022-09-30 主机总线适配器调优方法及装置、电子设备、存储介质

Publications (1)

Publication Number Publication Date
CN115562830A true CN115562830A (zh) 2023-01-03

Family

ID=84744355

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211215606.8A Pending CN115562830A (zh) 2022-09-30 2022-09-30 主机总线适配器调优方法及装置、电子设备、存储介质

Country Status (1)

Country Link
CN (1) CN115562830A (zh)

Similar Documents

Publication Publication Date Title
CN109684065B (zh) 一种资源调度方法、装置及系统
US20140331235A1 (en) Resource allocation apparatus and method
KR20040065981A (ko) 스레드 유형에 근거한 컴퓨터 자원의 동적 할당
US20130138885A1 (en) Dynamic process/object scoped memory affinity adjuster
CN113590508B (zh) 动态可重构的内存地址映射方法及装置
CN114490085B (zh) 一种网卡配置方法、装置、设备及存储介质
CN107070709B (zh) 一种基于底层numa感知的nfv实现方法
JP2014120097A (ja) 情報処理装置、プログラム、及び、情報処理方法
EP3944091B1 (en) Cache allocation method and device, storage medium, and electronic device
US9069621B2 (en) Submitting operations to a shared resource based on busy-to-success ratios
CN114595043A (zh) 一种io调度方法和装置
US7904688B1 (en) Memory management unit for field programmable gate array boards
CN115421924A (zh) 一种内存分配方法、装置及设备
CN111177984B (zh) 电子设计自动化中异构计算单元的资源利用
CN103077081B (zh) 资源调整的方法及装置
US20080005726A1 (en) Methods and systems for modifying software applications to implement memory allocation
CN1851651A (zh) 嵌入式sram操作系统进程优先权调度的实现方法
US9405470B2 (en) Data processing system and data processing method
CN115562830A (zh) 主机总线适配器调优方法及装置、电子设备、存储介质
WO2017146618A1 (en) Methods and modules relating to allocation of host machines
WO2020076400A1 (en) Resource allocation using distributed segment processing credits
CN114528075A (zh) Numa系统的性能调优方法、装置及计算机设备
US11656905B2 (en) Delegation control based on program privilege level and page privilege level
CN114067917A (zh) 基于调优参数的gatk超级计算机系统
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination