CN113553172B - 一种ipmi服务执行方法、装置及存储介质 - Google Patents
一种ipmi服务执行方法、装置及存储介质 Download PDFInfo
- Publication number
- CN113553172B CN113553172B CN202110652889.1A CN202110652889A CN113553172B CN 113553172 B CN113553172 B CN 113553172B CN 202110652889 A CN202110652889 A CN 202110652889A CN 113553172 B CN113553172 B CN 113553172B
- Authority
- CN
- China
- Prior art keywords
- ipmi
- thread
- task
- coroutine
- pool
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 108010028984 3-isopropylmalate dehydratase Proteins 0.000 title claims abstract 44
- 238000012544 monitoring process Methods 0.000 claims abstract description 7
- 230000008569 process Effects 0.000 claims description 31
- 230000000903 blocking effect Effects 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 5
- 238000004806 packaging method and process Methods 0.000 claims 2
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013480 data collection Methods 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及的IPMI服务执行方法包括:S1,用户配置需要带外执行的命令来构建IPMI任务;S2,根据采集端负载自适应配置线程池的线程数量;S3,利用线程资源构建协程池,根据IPMI任务创建设定数量的协程并放入协程池,实现将IPMI任务分配给线程;S4,通过调度器根据协程优先级和状态调度协程执行IPMI任务,协程完成IPMI任务后协程池回收和销毁该协程;S5,CPU执行完一个线程后切换下一个线程执行,空闲线程分配IPMI任务,直至将全部IPMI任务执行完;S6,实时监听各个IPMI任务的返回值,整理为json格式,返回给用户。本申请利用协程实现IPMI任务的并发,协程切换快,效率高。利用线程池实现IPMI任务分配与执行的异步,充分利用CPU资源。
Description
技术领域
本申请涉及IPMI服务执行领域,尤其涉及一种IPMI服务执行方法、装置及存储介质。
背景技术
智能平台管理接口(IPMI)是一种开放标准的硬件管理接口规格,定义了嵌入式管理子***进行通信的特定方法。IPMI信息是通过不依赖于服务器的处理器、BIOS或操作***的基板管理控制器进行交流。使用而基板管理控制器不使用操作***进行管理,具有两个主要优点:首先,此配置允许进行带外服务器管理;其次,操作***不必负担传输***状态数据的任务。Linux使用ipmitool命令通过IPMI能够实现监控服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等;还可以通过串口、Modem以及Lan等远程环境管理服务器***。
但是由于ipmitool仅支持单点服务器,在应用到数据中心中大规模服务器运维场景下,需要运维人员提供批量执行任务的逻辑配合ipmitool命令来获取服务器数据。常规的调用ipmitool命令方式,运行进程占用内存多,切换进程麻烦,CPU利用率低,进程创建和销毁速度慢。上述问题导致调用ipmitool命令来获取服务器数据的过程需要耗费较长的时间。即使为了提高IPMI服务执行效率降低IPMI服务执行时间,采用多线程的方式,在线程因为等待IO或网络返回数据的时候,会阻塞当前线程,切换到其它线程,这样在当前线程等待IO的过程中,其它线程可以继续执行。一旦当线程数量非常多的时候,一是***线程会占用非常多的内存空间,二是对线程进行管理需要额外的开销、影响CPU的处理能力,线程切换会导致***用户态和内核态的转换,同样也会造成时间浪费。综上,现有技术中,IPMI服务应用在大批量设备数据采集时存在执行慢,占用资源严重的问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供一种IPMI服务执行方法、装置及存储介质。
第一方面,本申请提供了一种IPMI服务执行方法,包括,
S1,用户配置需要带外执行的命令来构建IPMI任务;
S2,根据采集端负载自适应配置线程池一定数量的线程;
S3,利用线程资源构建协程池,根据IPMI任务创建设定数量的协程并放入协程池,实现将所述IPMI任务分配给线程;
S4,通过调度器根据协程优先级和状态调度协程执行IPMI任务,协程完成IPMI任务后协程池回收和销毁该协程;
S5,线程完成后进入空闲,CPU切换下一个线程执行,给空闲线程分配IPMI任务,直至将全部IPMI任务执行完;
S6,实时监听各个IPMI任务的返回值,整理为json格式,返回给用户。
更进一步地,配置若干与服务器连接的连接信息,其中所述连接信息包括数据中心服务器的ip地址、用户名以及密码,配置的ip地址、用户名和密码按设定的格式排列、以便通过IPMI接口与服务器的基板管理控制器连接。
更进一步地,按如下公式自适应配置线程池线程数量:
线程池线程数量=(线程IO响应时间/线程CPU时间+1)×CPU数量。
更进一步地,构建IPMI任务时,为每个IPMI任务配置与IPMI任务本身重要程度相关联的重要程度参数;在将IPMI任务分配给线程后,统计该线程下全部IPMI任务重要程度参数的平均值,根据重要程度参数的平均值大小确定CPU执行线程的次序。
更进一步地,协程状态包括运行中、阻塞、等待以及可运行,其中,
运行中为协程使用CPU资源执行IPMI任务;
当运行中的协程因IO延迟以及异步等待导致停滞时,协程处于阻塞;
协程阻塞时,协程主动放弃CPU占用,返回协程池,协程进入等待;
当等待的协程条件满足可继续运行时,协程进入可运行,另外新加入到协程池的协程也为可运行。
更进一步地,为协程配置表示优先级的变量,初始化优先级的变量等于重要程度参数,每当协程停滞返回协程池,变量值加设定的步进量。
更进一步地,通过调度器根据协程优先级和状态调度协程执行IPMI任务包括:
监测运行中的协程是否陷入阻塞;
如果陷入阻塞,调度器比较协程池处于可运行状态协程的优先级;
调度器调取优先级值最大的可运行的协程执行IPMI任务。
更进一步地,封装ipmitool,利用ipmitool的指令配置需要带外执行的命令。
第二方面,本申请提供一种实现IPMI服务执行方法的装置,包括处理单元、存储单元、总线单元、接口单元、输入单元以及显示单元,所述总线单元电性连接处理单元、存储单元、接口单元、输入单元以及显示单元;
所述存储单元存储至少一条指令,所述处理单元执行所述指令实现所述IPMI服务执行方法;
所述接口单元用于与数字中心服务器连接;
所述输入单元用于配置连接信息与需要带外执行的命令;
所述显示单元用于显示与用户的交互信息以及IPMI任务的返回值。
第三方面本申请提供一种用于IPMI服务执行的存储介质,所述存储介质存储至少一条指令,执行所述指令实现所述IPMI服务执行方法。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请根据协程阻塞的次数更新协程的优先级,并利用优先级以及协程的状态来在发生协程阻塞时有效的调度协程到CPU运行。完全通过用户态调度器进行调度,无需***在用户态和内核态之间来回切换,调度时间更快,使得执行IPMI任务的效率提高。
本申请利用线程资源构建协程池,协程池配置协程来处理IPMI任务,由于协程对于CPU来说是不可见的,协程的切换无需CPU从用户态切换到内核态在切换到用户态,协程的切换速度更快。协程阻塞切换协程,使得线程不会阻塞持续运行。本申请仅仅在CPU执行完线程后按顺序执行下一个线程才进行线程切换,直至执行完全部配置的IPMI任务,相比现有通过线程来执行IPMI指令在发生线程阻塞后即切换线程的方式,利用更快地协程切换取代线程切换,大大减少线程之间来回切换次数,从而节约了时间,使得处理IPMI任务更快,效率更高。
本申请通过配置需要带外执行的命令来构建IPMI任务,并根据IPMI任务构建协程,从而突破现有ipmitool工具单点服务的限制,能够应用在多服务器节点。
本申请构建线程池提供线程由CPU选择执行,空闲线程分配IPMI任务,实现IPMI任务分配与执行的异步,通过线程池保证CPU资源的充分利用。而且CPU根据线程中重要程度参数的平均值选取执行的线程,可以优先处理重要IPMI任务相对多的线程。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本实施例提供的一种IPMI服务执行方法示意图;
图2为本实施例提供的一种IPMI服务执行方法示意图;
图3为本实施例提供的第一种实现IPMI服务执行方法的装置架构图;
图4为本实施例提供的第二种实现IPMI服务执行方法的装置架构图;
图5为本实施例提供的第三种实现IPMI服务执行方法的装置架构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本申请旨在利用协程实现CPU并行执行IPMI任务,减少以线程执行IPMI任务的方式造成CPU切换线程耗时耗资源的情况,对于Linux***,现有由线程实现并发执行IPMI任务的过程如下:
(1)CPU在运行线程时处于用户模式,CPU运行的线程阻塞即停止线程,并切换至内核模式,由内核接管CPU控制权。
(2)内核记录下当前CPU和内存的状态信息,当前CPU和内存的状态信息在恢复被停止的线程时需要用到。
(3)内核准备执行下一个下程,从准备就绪的线程中选择一个执行。
(4)内核为新线程准备CPU和内存。
(5)内核将CPU切换至用户模式,将CPU控制权移交给新线程。
根据上述描述的线程执行IPMI任务并发过程,每次进行线程切换都会涉及CPU内核态和用户态的切换,造成大量的时间浪费。而且阻塞频繁,内核记录下被阻塞的线程的状态信息多,会占用大量的资源。
耗时耗资源的情况在对大规模应用服务器的数据中心通过IPMI进行数据采集的过程中更加明显。数据中心服务器数量多,IPMI任务线程与服务器通信会更加频繁,遇到的通信延迟或者异步等待情况更多,造成的线程阻塞以及线程切换频繁,导致耗时耗资源情况更加严重,IPMI服务执行速度慢,效率低。
实施例1
为解决上述问题,本实施例提供一种IPMI服务执行方法,应用在数据中心服务器和采集端,通过配置若干与数据中心服务器连接的连接信息,其中所述连接信息包括数据中心服务器的ip地址、用户名以及密码,配置的ip地址、用户名和密码按设定的格式排列保存于登录文件中,采集端获取登录文件的内容解析处ip地址、用户名以及密码连接到服务器,服务器通过创建session的方式保存采集端的登录信息。
参阅图1所示,本申请IPMI服务执行方法具体过程包括:
S1,用户在采集端配置需要带外执行的命令来构建IPMI任务。具体实施过程中,用户根据信息采集需要配置需要带外执行的命令来构建IPMI任务,本申请封装ipmitool,带外执行的命令使用ipmitool命令构建。具体实施过程中,一种可行的用户在采集端配置需要带外执行的命令来构建IPMI任务方式是:设置一个IPMI任务配置文件,在所述IPMI任务配置文件中保存利用ipmitool命令编辑的带外执行命令。通过采集端的命令行、VI工具来编辑所述IPMI任务配置文件实现IPMI任务输入。具体实施过程中,一种可行的用户在采集端配置需要带外执行的命令来构建IPMI任务方式是:提供一种图形化的IPMI任务配置程序,该程序采集采集端连接的服务器的名称,并将服务器展示给用户,提供图形化的选择按键,用户通过选择按键从采集的服务器中选择至少一个作为IPMI任务的目标服务器;该程序提供ipmitool命令的图形化按钮,通过图形化按钮输入相应的ipmitool命令形成外带执行指令,将目标服务器与带外执行指令搭配形成IPMI任务写入到所述IPMI任务配置文件。ipmitool命令图形化按钮提供常用的ipmitool命令输入,包括:raw、lan、chassis、event、bmc、sdr、sensor、fru、sel、sol、user、channel、session、shell、exec、set。用户选择图形化按钮时,触发提示框,该提示框显示该图形化按钮所输入的ipmitool命令的含义及用法。通过图形化的IPMI任务配置程序配置所述IPMI任务配置文件的内容以帮助与ipmitool接触不多的用户构建IPMI任务。
具体实施过程中,在构建IPMI任务时,为每个IPMI任务配置一个重要程度属性,给重要程度属性赋予不同大小的非负数值表示IPMI任务的重要程度,数值越大,表示该IPMI任务越重要。
S2,根据采集端负载来自适应配置线程池的线程数量。按如下公式自适应配置线程池线程数量:线程池线程数量=(线程IO响应时间/线程CPU时间+1)×CPU数量。采集端CPU执行线程池中的线程,每个CPU同一时刻执行一个所述线程。具体实施过程中,为线程池中的线程定义一个空闲时间阈值,当线程池中的空闲时,统计线程池中线程的空闲持续时间,如果所述空闲持续时间到达所述空闲时间阈值,线程池杀死并回收线程。IPMI任务执行后期,会逐渐出现线程空闲,线程池杀死并回收线程,造成线程池线程数量减少,后续有任务追加时,按线程池线程数量=(线程IO响应时间/线程CPU时间+1)×CPU数量补足线程。
S3,利用线程资源构建协程池,根据分配的IPMI任务创建设定数量协程并放入协程池实现IPMI任务的分配;在分配IPMI任务过程中,为相应的协程初始优选级,初始优先级继承所述重要程度属性,并配置协程的状态为可运行。根据IPMI任务的分配情况计算每个线程的重要程度属性的平均值,即用每个线程中IPMI任务总的中场程度属性除以总IPMI任务数量。在CPU执行完一个线程后,比较线程池中线程重要程度属性的平均值的大小,取重要程度平均值最大的作为CPU下一执行的线程,其中空闲线程重要程度属性值指定为0。
S4,通过调度器根据协程优先级和状态调度协程执行IPMI任务,协程完成IPMI任务后协程池回收和销毁该协程。
具体实施过程中,协程状态包括运行中、阻塞、等待以及可运行,其中,运行中为协程使用CPU资源执行IPMI任务;当运行中的协程因IO延迟以及异步等待导致停滞时,协程需等待条件满足才能执行,此时协程处于阻塞;协程阻塞时,协程主动放弃CPU占用,返回协程池,协程进入等待;当等待的协程条件满足可继续运行时,协程记进入可运行;另外刚进入协程池的协程其状态同样为可运行。
协程的初始优先级继承所述重要程度属性。随着协程运行,状态转变过程中,每次协程陷入阻塞时,更新优先级,使优先级数值在现有基础上加一。
当CPU中运行中的协程发生阻塞时,向调度器发送协程阻塞通知,所述调度器接收到阻塞通知后确定该CPU发生协程阻塞,所述调度器比较协程池中处于可运行状态协程的优先级值;调度器调取优先级值最大的可运行的协程到该CPU执行IPMI任务。
本申请的调度器属于用户层面,其调度过程完全由用户层控制,与采用线程并发的方式对比,无需内核参与调度过程,无需CPU进行内核态与用户态的切换,因此本申请采用协程切换实现并发能节约大量的时间,提高IPMI任务执行效率。调度器调取优先级值最大的可运行的协程执行IPMI任务。一方面初始优先级继承重要程度属性,重要的任务可以被优先执行,另一方面,协程被阻塞次数增多会增加优先级,阻塞次数多说明与服务器通信次数多,则协程占用资源更多,优先处理这种通信次数多占用资源多的协程能够尽快执行完占用资源多的协程,避免协程切换过程中持续占用更多的资源。
协程完成IPMI任务后协程池回收和销毁该协程。当协程池中的协程全部完成IPMI任务后协程池回收全部的资源,线程空闲。
S5,线程完成后进入空闲,CPU切换下一个线程执行,空闲线程的协程池放入根据IPMI任务创建的新的协程,等待CPU来执行,直至全部IPMI任务执行完。
由于本申请通过协程实现并发,并发过程无需线程参与,因此线程的切换仅仅是CPU执行完线程才发生切换,相比现有线程执行IPMI任务时发生阻塞切换线程,可以大大减少线程切换次数。本申请通过线程池的配置实现IPMI任务分配和执行的异步,保证线程执行过程中CPU不会闲置,从而能够充分利用CPU的计算资源。
具体实施过程中,一种可行的CPU选择下一个线程方式为:
统计线程池中全部线程所分配的全部IPMI任务的重要程度参数的平均值;
比较线程池中线程的重要程度参数平均值的大小;
确定重要程度参数平均值最大的线程为CPU执行的下一个线程。
从而实现一个线程IPMI任务的重要程度参数平均值越高,则控制CPU越先执行该线程。通过优先执行重要程度参数平均值高的线程可以优先执行相对重要的IPMI任务。
S6,实时监听各个IPMI任务的返回值,并将返回值整理为json格式,返回给用户。
实施例2
参阅图2所示,实施例2提供另一种应用在数据中心服务器与采集端的IPMI服务执行的方法:
用户在采集端配置需要带外执行的命令来构建IPMI任务,IPMI任务配置重要程度参数属性;
根据重要程度参数属性排序IPMI任务形成IPMI任务队列;
根据采集端负载来自适应配置线程池一定数量的线程;
利用线程资源构建协程池,根据IPMI任务队列中IPMI任务排序依次创建设定数量的协程并放入协程池;
通过调度器根据协程优先级和状态调度协程执行IPMI任务;
线程完成后进入空闲,CPU切换下一个线程执行,给空闲线程分配IPMI任务,直至将全部IPMI任务执行完;
实时监听各个IPMI任务的返回值,整理为json格式,返回给用户。
与实施例1相比区别在于,实施例2增加构建IPMI任务队列的过程。具体的,根据实施例1中IPMI任务的重要程度参数由大到小对IPMI任务进行排序。根据排列顺序构建一个IPMI任务队列,在分配任务时,依照IPMI任务队列中IPMI任务的排序将IPMI任务分配给线程。
实施例2先将IPMI任务根据重要程度参数排序,再按排列先后分配给线程,IPMI任务队列、线程选择与调度器配合确保重要的IPMI任务优先执行。
实施例3
参阅图3所示,本申请提供第一种实现IPMI服务执行方法的装置,包括连接模块,连接模块用于根据服务器ip地址、用户名、密码连接服务器;
任务配置模块,任务配置模块用于根据用户本地输入的带外执行命令构建IPMI任务;
线程池创建模块,线程池创建模块用于创建线程池,并给自适应给线程池配置一定数量的线程;
任务分配模块,任务分配模块用于根据IPMI任务创建协程分配到线程的协程池;
执行模块,执行模块用于执行协程池中的协程完成相应的IPMI任务;
第一调度模块,第一调度模块用于在执行模块执行协程阻塞时调度协程切换;
第二调度模块,第二调度模块用于执行模块执行完线程后调度切换线程;
数据处理模块,数据处理模块监听IPMI任务返回值并整理为json格式返回给用户。
实施例4
参阅图4所示,本申请实施例提供第二种实现IPMI服务执行方法的装置,实施例4与实施例3区别在于,实施例4的连接模块既连接服务器又连接客户端;实施例4的任务配置模块,任务配置模块用于根据用户本地输入的带外执行命令或从客户端输入的带外执行命令构建IPMI任务;实施例4的数据处理模块将json格式的数据返回给客户端。通过实施例4一种实现IPMI服务执行方法的装置,实现客户端对数据中心服务器进行IPMI数据采集。客户端可以设置在异地,可以应用在异地分工。
实施例5
参阅图5所示,本申请实施例提供第三种实现IPMI服务执行方法的装置,实施例5与实施例4相比区别在于,配置账户认证授权模块,所述账户认证授权模块用于配置注册账号信息,在账号信息与数据中心之间建立映射关系,并根据客户端登录的账号控制客户端访问相应的数据中心。实施例5实现客户端对数据中心服务器进行IPMI数据采集的基础上,根据客户端登录的账号来确定客户端的访问权限,限制不同用户访问不同的数据中心。
实施例6
本申请实施例提供一种用于IPMI服务执行的存储介质,所述存储介质存储至少一条指令,执行所述指令实现实施例1或实施例2的IPMI服务执行方法。
本申请根据协程阻塞的次数更新协程的优先级,并利用优先级以及协程的状态来在发生协程阻塞时有效的调度协程到CPU运行。完全通过用户态调度器进行调度,无需***在用户态和内核态之间来回切换,调度时间更快,使得执行IPMI任务的效率提高。
本申请利用线程资源构建协程池,协程池配置协程来处理IPMI任务,由于协程对于CPU来说是不可见的,协程的切换无需CPU从用户态切换到内核态在切换到用户态,协程的切换速度更快。协程阻塞切换协程,使得线程不会阻塞持续运行。本申请仅仅在CPU执行完线程后按顺序执行下一个线程才进行线程切换,直至执行完全部配置的IPMI任务,相比现有通过线程来执行IPMI指令在发生线程阻塞后即切换线程的方式,利用更快地协程切换取代线程切换,大大减少线程之间来回切换次数,从而节约了时间,使得处理IPMI任务更快,效率更高。
本申请通过配置需要带外执行的命令来构建IPMI任务,并根据IPMI任务构建协程,从而突破现有ipmitool工具单点服务的限制,能够应用在多服务器节点。
本申请构建线程池提供线程由CPU选择执行,空闲线程分配IPMI任务,实现IPMI任务分配与执行的异步,通过线程池保证CPU资源的充分利用。而且CPU根据线程中重要程度参数的平均值选取执行的线程,可以优先处理重要IPMI任务相对多的线程。
在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (7)
1.一种IPMI服务执行方法,其特征在于,包括,
S1,用户配置需要带外执行的命令来构建IPMI任务,其中,配置若干与服务器连接的连接信息,其中所述连接信息包括数据中心服务器的ip地址、用户名以及密码,配置的ip地址、用户名和密码按设定的格式排列;封装ipmitool,利用ipmitool的指令配置需要带外执行的命令;
S2,根据采集端负载自适应配置线程池一定数量的线程;按如下公式自适应配置线程池线程数量:线程池线程数量=(线程IO响应时间/线程CPU时间+1)×CPU数量;
S3,利用线程资源构建协程池,根据IPMI任务创建设定数量的协程并放入协程池,实现将所述IPMI任务分配给线程;
S4,通过调度器根据协程优先级和状态调度协程执行IPMI任务,协程完成IPMI任务后协程池回收和销毁该协程,其中,调度器属于用户层面,其调度过程完全由用户层控制;
S5,CPU执行完的线程进入空闲,CPU切换下一个线程执行,给空闲线程分配IPMI任务,直至将全部IPMI任务执行完;
S6,实时监听各个IPMI任务的返回值,整理为json格式,返回给用户。
2.根据权利要求1所述IPMI服务执行方法,其特征在于,构建IPMI任务时,为每个IPMI任务配置与IPMI任务本身重要程度相关联的重要程度参数;在将IPMI任务分配给线程后,统计该线程下全部IPMI任务重要程度参数的平均值,根据重要程度参数的平均值大小确定CPU执行的下一个线程。
3.根据权利要求1所述IPMI服务执行方法,其特征在于,协程状态包括运行中、阻塞、等待以及可运行,其中,
运行中为协程使用CPU资源执行IPMI任务;
当运行中的协程因IO延迟以及异步等待导致停滞时,协程处于阻塞;
协程阻塞时,协程主动放弃CPU占用,返回协程池,协程进入等待;
当等待的协程条件满足可继续运行时,协程进入可运行,另外新加入到协程池的协程也为可运行。
4.根据权利要求1所述IPMI服务执行方法,其特征在于,为协程配置表示优先级的变量,初始化优先级的变量等于重要程度参数,每当协程停滞返回协程池,变量值加设定的步进量。
5.根据权利要求4所述IPMI服务执行方法,其特征在于,通过调度器根据协程优先级和状态调度协程执行IPMI任务包括:
监测运行中的协程是否陷入阻塞;
如果陷入阻塞,调度器比较协程池处于可运行状态协程的优先级;
调度器调取优先级值最大的可运行的协程执行IPMI任务。
6.一种实现IPMI服务执行方法的装置,其特征在于,包括连接模块,连接模块用于连接服务器;
任务配置模块,任务配置模块用于构建IPMI任务,配置若干与服务器连接的连接信息,其中所述连接信息包括数据中心服务器的ip地址、用户名以及密码,配置的ip地址、用户名和密码按设定的格式排列;封装ipmitool,利用ipmitool的指令配置需要带外执行的命令;
线程池创建模块,线程池创建模块用于创建线程池;其中,按如下公式自适应配置线程池线程数量:线程池线程数量=(线程IO响应时间/线程CPU时间+1)×CPU数量;
任务分配模块,任务分配模块用于根据IPMI任务创建协程分配到线程的协程池;其中,利用线程资源构建协程池,根据IPMI任务创建设定数量的协程并放入协程池,实现将所述IPMI任务分配给线程;
执行模块,执行模块用于执行线程中的协程完成IPMI任务;根据协程优先级和状态调度协程执行IPMI任务,协程完成IPMI任务后协程池回收和销毁该协程;
第一调度模块,第一调度模块用于在执行模块执行协程阻塞时调度协程切换;
第二调度模块,第二调度模块用于执行模块执行完线程后调度切换线程;
数据处理模块,数据处理模块监听IPMI任务返回值并整理为json格式返回给用户。
7.一种用于IPMI服务执行的存储介质,其特征在于,所述存储介质存储至少一条指令,处理器执行所述指令实现权利要求1-5任一所述IPMI服务执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110652889.1A CN113553172B (zh) | 2021-06-11 | 2021-06-11 | 一种ipmi服务执行方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110652889.1A CN113553172B (zh) | 2021-06-11 | 2021-06-11 | 一种ipmi服务执行方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113553172A CN113553172A (zh) | 2021-10-26 |
CN113553172B true CN113553172B (zh) | 2024-02-13 |
Family
ID=78130580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110652889.1A Active CN113553172B (zh) | 2021-06-11 | 2021-06-11 | 一种ipmi服务执行方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113553172B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114297135B (zh) * | 2021-12-10 | 2023-11-14 | 苏州浪潮智能科技有限公司 | 动态调整高速输入输出通道分配的方法、装置及存储介质 |
CN115080247B (zh) * | 2022-08-15 | 2022-11-04 | 科来网络技术股份有限公司 | 一种高可用线程池切换方法及装置 |
CN115987652B (zh) * | 2022-12-27 | 2023-11-03 | 北京深盾科技股份有限公司 | 一种账号管理方法、***、设备及计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1788486A2 (en) * | 2005-11-18 | 2007-05-23 | Sap Ag | Cooperative scheduling using coroutines and threads |
CN104142858A (zh) * | 2013-11-29 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 阻塞任务调度方法及装置 |
CN106980546A (zh) * | 2016-01-18 | 2017-07-25 | 阿里巴巴集团控股有限公司 | 一种任务异步执行方法、装置及*** |
CN108156181A (zh) * | 2018-02-01 | 2018-06-12 | 杭州安恒信息技术股份有限公司 | 一种基于协程异步io的漏洞探测方法及其漏洞扫描*** |
CN109298922A (zh) * | 2018-08-30 | 2019-02-01 | 百度在线网络技术(北京)有限公司 | 并行任务处理方法、协程框架、设备、介质和无人车 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7363369B2 (en) * | 2003-10-16 | 2008-04-22 | International Business Machines Corporation | Monitoring thread usage to dynamically control a thread pool |
-
2021
- 2021-06-11 CN CN202110652889.1A patent/CN113553172B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1788486A2 (en) * | 2005-11-18 | 2007-05-23 | Sap Ag | Cooperative scheduling using coroutines and threads |
CN104142858A (zh) * | 2013-11-29 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 阻塞任务调度方法及装置 |
CN106980546A (zh) * | 2016-01-18 | 2017-07-25 | 阿里巴巴集团控股有限公司 | 一种任务异步执行方法、装置及*** |
CN108156181A (zh) * | 2018-02-01 | 2018-06-12 | 杭州安恒信息技术股份有限公司 | 一种基于协程异步io的漏洞探测方法及其漏洞扫描*** |
CN109298922A (zh) * | 2018-08-30 | 2019-02-01 | 百度在线网络技术(北京)有限公司 | 并行任务处理方法、协程框架、设备、介质和无人车 |
Non-Patent Citations (1)
Title |
---|
Kotlin协程技术在网络开发中的应用;黄文亮;;现代计算机(专业版)(第33期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113553172A (zh) | 2021-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113553172B (zh) | 一种ipmi服务执行方法、装置及存储介质 | |
CN104618693B (zh) | 一种基于云计算的监控视频在线处理任务管理方法及*** | |
US20190324819A1 (en) | Distributed-system task assignment method and apparatus | |
JP4519098B2 (ja) | 計算機の管理方法、計算機システム、及び管理プログラム | |
CN1890638B (zh) | 用于代理、总计和优化基于网络管理的虚拟机信息的方法、装置和*** | |
CN111796908B (zh) | 一种资源自动弹性伸缩的***、方法及云平台 | |
JP2021521518A (ja) | 仮想マシンスケジューリング方法および装置 | |
JPWO2007072544A1 (ja) | 情報処理装置、計算機、リソース割り当て方法及びリソース割り当てプログラム | |
CN103677990B (zh) | 虚拟机实时任务的调度方法、装置和虚拟机 | |
US20070294736A1 (en) | Method for dynamic information technology infrastructure provisioning | |
US10305974B2 (en) | Ranking system | |
CN108153590A (zh) | 管理硬件资源 | |
CN106209412B (zh) | 资源监控***与其方法 | |
JP5355592B2 (ja) | ハイブリッド型のコンピューティング環境を管理するためのシステムおよび方法 | |
US20240152395A1 (en) | Resource scheduling method and apparatus, and computing node | |
CN112395075A (zh) | 资源的处理方法、装置以及资源调度*** | |
CN109840141A (zh) | 基于云监控的线程控制方法、装置、电子设备及存储介质 | |
CN109800261A (zh) | 双数据库连接池的动态控制方法、装置及相关设备 | |
CN111459622A (zh) | 调度虚拟cpu的方法、装置、计算机设备和存储介质 | |
CN113626145A (zh) | 业务虚拟机数量动态扩容方法及*** | |
US10768996B2 (en) | Anticipating future resource consumption based on user sessions | |
US10157066B2 (en) | Method for optimizing performance of computationally intensive applications | |
Huang et al. | Multi-resource packing for job scheduling in virtual machine based cloud environment | |
CN110488714A (zh) | 一种异步状态机控制方法及装置 | |
WO2022177455A1 (en) | Method and system for optimizing resource and traffic management of a computer execution environment in a vran |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |