一种资源状态查询方法、装置、电子设备及存储介质与流程

文档序号:32305247发布日期:2022-11-23 09:46阅读:61来源:国知局
一种资源状态查询方法、装置、电子设备及存储介质与流程

1.本技术涉及硬件资源查询技术领域,具体而言,涉及一种资源状态查询方法、装置、电子设备及存储介质。


背景技术:

2.随着科技的飞速发展,为了满足日益增大的计算需求,需要提高处理器资源利用率。而提高处理器资源利用率的根本在于需要有效地得到资源的占用状态,从而做到资源合理分配,资源有效利用,发挥硬件的物理性能,有效提高处理器资源的利用率。
3.但处理器资源的占用和释放具有随机性,其更新的频率也非常高,目前的软件查询算法无法得到实时的、且准确的资源状态。


技术实现要素:

4.本技术实施例的目的在于提供一种资源状态查询方法、装置、电子设备及存储介质,以提高处理器资源状态查询的实时性和准确性。
5.本发明是这样实现的:第一方面,本技术实施例提供一种资源状态查询方法,包括:在资源更新后,触发更新一维数组;其中,所述一维数组中的每个元素均对应处理器的一个资源;当元素中包括第一字符时,表征该元素对应的资源为空闲状态,当元素中包括第二字符时,表征该元素对应的资源为忙碌状态;基于更新后的一维数组,确定所述处理器的资源使用状态。
6.由于硬件上处理器的资源在每个时钟周期都可能存在占用或者释放,因此,在本技术实施例中,通过在资源更新后,触发更新一维数组,并通过一维数组中的各元素的字符来标记各资源的使用状态,与现有的软件查询算法相比,可以提高处理器资源状态查询的实时性和准确性。
7.结合上述第一方面提供的技术方案,在一些可能的实现方式中,所述一维数组中的各元素顺序与所述处理器中的资源顺序相同。
8.在本技术实施例中,由于一维数组中的各元素顺序与处理器中的资源顺序相同,因此,可以直接基于各元素与资源的映射确定出处理器各资源使用状态。
9.结合上述第一方面提供的技术方案,在一些可能的实现方式中,所述基于更新后的一维数组,确定所述处理器的资源使用状态,包括:基于所述更新后的一维数组,构建二维数组;其中,所述二维数组的第一行为所述一维数组;所述二维数组的第二行至第n行均为前一行按照预设方向移动一位得到;n的数值等于所述一维数组的元素的个数;基于所述二维数组,确定所述处理器的资源使用状态。
10.在本技术实施例中,通过构建二维数组,使得二维数组的每一行元素和每一列元素都能够表示处理器的所有资源的使用状态,以便于分析空闲资源之间的位置关系,以及以便于后续合理地利用空闲资源。
11.结合上述第一方面提供的技术方案,在一些可能的实现方式中,所述第一字符为
1,所述第二字符为0,所述基于所述二维数组,确定所述处理器的资源使用状态,包括:基于所述二维数组,构建二维统计数组;其中,所述二维统计数组中的每个元素由该元素与前一行的同一列的元素通过相与计算得到,且所述二维统计数组由所述二维数组逐行计算生成;基于所述二维统计数组,确定所述处理器的资源使用状态。
12.在本技术实施例中,通过构建二维统计数组,可以有效地确定出处理器中的所有连续的空闲资源,以便于后续合理地利用连续空闲资源。
13.结合上述第一方面提供的技术方案,在一些可能的实现方式中,所述基于所述二维统计数组,确定所述处理器的资源使用状态,包括:基于所述二维统计数组,构建一维统计数组;其中,所述一维统计数组表征每行元素中存在连续空闲资源的个数;基于所述一维统计数组,确定所述处理器的资源使用状态。
14.在本技术实施例中,通过构建一维统计数组,可以有效地确定出存在连续空闲资源的个数,以便于后续合理分配连续空闲资源。
15.结合上述第一方面提供的技术方案,在一些可能的实现方式中,在所述确定所述处理器的资源使用状态之后,所述方法还包括:基于所述处理器的资源使用状态进行资源分配。
16.结合上述第一方面提供的技术方案,在一些可能的实现方式中,所述处理器为gpu。
17.第二方面,本技术实施例提供一种资源状态查询装置,包括:更新模块,用于在资源更新后,触发更新一维数组;其中,所述一维数组中的每个元素均对应处理器的一个资源;当元素中包括第一字符时,表征该元素对应的资源为空闲状态,当元素中包括第二字符时,表征该元素对应的资源为忙碌状态;资源状态确定模块,用于基于更新后的一维数组,确定所述处理器的资源使用状态。
18.第三方面,本技术实施例提供一种电子设备,包括:处理器和存储器,所述处理器和所述存储器连接;所述存储器用于存储程序;所述处理器用于调用存储在所述存储器中的程序,执行如上述第一方面实施例和/或结合上述第一方面实施例的一些可能的实现方式提供的方法。
19.第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器运行时执行如上述第一方面实施例,或第二方面实施例提供的方法。
附图说明
20.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
21.图1为本技术实施例提供的一种电子设备的模块框图。
22.图2为本技术实施例提供的一种资源状态查询方法的步骤流程图。
23.图3为本技术实施例提供的的一种一维数组的示意图。
24.图4为本技术实施例提供的的一种二维数组的示意图。
25.图5为本技术实施例提供的的一种二维统计数组的示意图。
26.图6为本技术实施例提供的的一种二维统计数组构建一维统计数组的过程示意图。
27.图7为本技术实施例提供的一种资源状态查询装置的模块框图。
28.图标:100-电子设备;110-处理器;120-存储器;200-资源状态查询装置;210-更新模块;220-资源状态确定模块。
具体实施方式
29.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
30.请参阅图1,本技术实施例提供的一种应用资源状态查询方法及装置的电子设备100的示意性结构框图。本技术实施例中,电子设备100可以是终端或者服务器,终端可以是,但不限于个人计算机(personal computer,pc)、智能手机、平板电脑、个人数字助理(personal digital assistant,pda)、移动上网设备(mobile internet device,mid)等。当然,上述列举的设备仅用于便于理解本技术实施例,其不应作为对本实施例的限定。
31.在结构上,电子设备100可以包括处理器110和存储器120。
32.处理器110与存储器120直接或间接地电性连接,以实现数据的传输或交互,例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。资源状态查询装置包括至少一个可以软件或固件(firmware)的形式存储在存储器120中或固化在电子设备100的操作系统(operating system,os)中的软件模块。处理器110用于执行存储器120中存储的可执行模块,例如,资源状态查询装置所包括的软件功能模块及计算机程序等,以实现资源状态查询方法。处理器110可以在接收到执行指令后,执行计算机程序。
33.其中,处理器110可以是一种集成电路芯片,具有信号处理能力。于本技术实施例中,处理器110可以为gpu(graphics processing unit,图形处理器)。
34.当然,处理器110也可以是通用处理器,例如,可以是中央处理器(central processing unit,cpu)、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit ,asic)、分立门或晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。此外,通用处理器可以是微处理器或者任何常规处理器等。
35.存储器120可以是,但不限于,随机存取存储器(random access memory,ram)、只读存储器(read only memory,rom)、可编程只读存储器(programmable read-only memory,prom)、可擦可编程序只读存储器(erasable programmable read-only memory,eprom),以及电可擦编程只读存储器(electric erasable programmable read-only memory,eeprom)。存储器120用于存储程序,处理器110在接收到执行指令后,执行该程序。
36.需要说明的是,图1所示的结构仅为示意,本技术实施例提供的电子设备100还可以具有比图1更少或更多的组件,或是具有与图1所示不同的配置。
37.请参阅图2,图2为本技术实施例提供的资源状态查询方法的步骤流程图,该方法应用于图1所示的电子设备100。需要说明的是,本技术实施例提供的资源状态查询方法不以图2及以下所示的顺序为限制,该方法包括:步骤s101-步骤s102。
38.步骤s101:在资源更新后,触发更新一维数组。
39.其中,一维数组中的每个元素均对应处理器的一个资源。如图3所示,i[0]~i[63]均表示一维数组中的一个元素。即,一维数组包括64个元素,每个元素均对应于处理器中的一个资源。
[0040]
需要解释的,资源定义为处理器中的运算单元。比如处理器为gpu时,其包括200分运算单元,则构建一个包含200个元素的一维数组,并使一维数组中的每个元素均对应于gpu中的一个运算单元。
[0041]
并且,本技术实施例中,通过不同的字符来标记各资源的使用状态。其中,使用状态包括空闲状态和忙碌状态。具体的,当元素中包括第一字符时,表征该元素对应的资源为空闲状态,当元素中包括第二字符时,表征该元素对应的资源为忙碌状态。其中,忙碌状态可以理解为该资源被占用,而空闲状态可以理解为该资源为空,或该资源被释放。
[0042]
上述的第一字符和第二字符可以根据需求设定,为了便于计算,可以将第一字符设定为二进制1,第二字符设定为二进制0。
[0043]
在其他实施例中,也可以是将第一字符设定为二进制0,第二字符设定为二进制1,对此,本技术不作限定。
[0044]
在每次资源更新后,则触发更新一维数组。比如,一维数组中的元素i[63]=1,1表示空闲状态,则当元素i[63]对应的资源被占用后,触发更新一维数组,以使元素i[63]=0,0表示忙碌状态。
[0045]
步骤s102:基于更新后的一维数组,确定处理器的资源使用状态。
[0046]
在得到更新后的一维数组后,可以直接基于一维数组中的各元素所包括的字符,确定出处理器的资源使用状态。
[0047]
示例性,更新后的一维数组中元素i[61]=1,则表示元素i[61]对应的资源为空闲状态,更新后的一维数组中元素i[20]=0,则表示元素i[20]对应的资源为忙碌状态。
[0048]
可见,由于硬件上处理器的资源在每个时钟周期都可能存在占用或者释放,因此,在本技术实施例中,通过在资源更新后,触发更新一维数组,并通过一维数组中的各元素的字符来标记各资源的使用状态,与现有的软件查询算法相比,可以提高处理器资源状态查询的实时性和准确性。上述处理器的资源使用状态的查询可以实现在一个时钟周期完成。
[0049]
一实施例中,一维数组中的各元素顺序与处理器中的资源顺序相同。由于一维数组中的各元素顺序与处理器中的资源顺序相同,因此,可以直接基于各元素与资源的映射确定出处理器各资源使用状态。
[0050]
比如,一维数组中元素i[0]可以直接对应处理器中的第一个资源(第一个运算单元);一维数组中元素i[1]可以直接对应处理器中的第二个资源(第二个运算单元)。
[0051]
当一维数组中的各元素顺序与处理器中的资源顺序相同时,上述步骤s102可以具体包括:基于更新后的一维数组,构建二维数组;基于二维数组,确定处理器的资源使用状态。
[0052]
其中,二维数组的第一行为一维数组;二维数组的第二行至第n行均为前一行按照预设方向移动一位得到;n的数值等于一维数组的元素的个数。
[0053]
上述预设方向可以是向右或者向左,本技术不作限定。
[0054]
请参阅图4,图4示出了从更新后的一维数组到二维数组的扩展过程。以图4为例,n的数值为64。具体的拓展过程为,二维数组的第一行为之前更新后的一维数组,然后,二维
数组的第二行至第n行均为前一行进行列循环右移一位得到,比如,第二行中元素i[63]经过右移一位后,落入该行从左到右的第二位,第二行中元素i[1]经过右移一位后,落入最后一位,而第二行中元素i[0]右移至第一位。二维数组的第三行又在第二行的基础上通过右移一位得到,依次类推直至生成第64行。
[0055]
从图4示例可以看出,通过构建二维数组,使得二维数组的每一行元素和每一列元素都能够表示处理器的所有资源的使用状态,以便于分析空闲资源之间的位置关系,以及以便于后续合理地利用空闲资源。
[0056]
一实施例中,当第一字符设定为二进制1,第二字符设定为二进制0,上述确定处理器的资源使用状态的过程还可以具体包括:基于二维数组,构建二维统计数组;基于二维统计数组,确定处理器的资源使用状态。
[0057]
其中,二维统计数组中的每个元素由该元素与前一行的同一列的元素通过相与计算得到,且二维统计数组由二维数组逐行计算生成。
[0058]
需要说明的是,相与计算指在给定的逻辑变量中,只要有一个为0,两个二进制数相与的结果就为0;只有当两者都为1时,两个二进制数相或的结果为1。比如,元素i[1]=1,元素i[2]=1,则元素i[1]和元素i[2]相与结果为1,元素i[1]=1,元素i[2]=0,则元素i[1]和元素i[2]相与结果为0,元素i[1]=0,元素i[2]=0,则元素i[1]和元素i[2]相与结果为0。
[0059]
请参阅图5,图5为示出的二维统计数组的示意图。其中,第二行中的元素&i[1:0]表示该行元素i[1]与前一行同一列的元素i[0]相与计算。第三行中的元素&i[2:0]表示该行元素i[2]与前一行同一列的元素相与计算,由于是逐行计算,且前一行同一列的元素为该行元素i[1]与前一行同一列的元素i[0]相与计算,因此,第三行中的元素&i[2:0]可以理解为该行元素i[2]与前一行同一列的元素i[1]以及前两行的元素i[0]相与计算,此处在表述中进行了省略。相应的,第64行的元素&i[63:0]表示该行元素i[63]与前一行同一列的元素相与计算,第64行的元素&i[63:0]也可以理解为与同一列的前63个元素相与计算。
[0060]
可见,通过该方式,使得二维统计数组中的每列可以用于表示可利用的空闲资源个数,比如,第一列中出现1的元素则可以表示在此之前的所有元素对应的资源均为空闲资源。示例性的,图5中,&i[2:0]=1,则表示在二维数组中元素i[2]、元素i[1]及元素i[0]均为空闲元素。此为一组连续的空闲资源。相应的,每行可以代表空闲资源个数相同的资源存在情况,比如,第三行存在四个1,则表示存在四个连续的空闲资源,且每个连续的资源个数为三。
[0061]
可见,通过构建二维统计数组,可以有效地确定出处理器中的所有连续的空闲资源,以便于后续合理地利用连续空闲资源。
[0062]
一实施例中,上述基于二维统计数组,确定处理器的资源使用状态还可以具体包括:基于二维统计数组,构建一维统计数组;基于一维统计数组,确定处理器的资源使用状态。
[0063]
其中,一维统计数组表征每行元素中存在连续空闲资源的个数。
[0064]
示例性的,请参阅图6,图6示出了从二维统计数组到一维统计数组构建过程。其中,一维统计数组的每个元素对应二维统计数组中的一行,且一维统计数组的每个元素对应该行元素存在连续空闲资源的个数。
[0065]
示例性的,二维统计数组的第三行中存在1的个数为4,则一维统计数组中元素[2]
=4。
[0066]
最后,根据元素序号进行排序,即,按照图6中[0]~[63]的顺序排序即可生成一维统计数组。
[0067]
理论上,当前最大个数的连续空闲资源包含了比其小的连续空闲资源。
[0068]
可见,在本技术实施例中,通过构建一维统计数组,可以有效地确定出存在连续空闲资源的个数,以便于后续合理分配连续空闲资源。
[0069]
此外,在确定处理器的资源使用状态之后,上述方法还包括:基于处理器的资源使用状态进行资源分配。
[0070]
最后,处理器可以根据上述资源使用状态进行资源分配。比如可以根据处理任务大小,确定对应的多个连续资源,对此,本技术不作限定。
[0071]
下面再以一个完整的示例对上述资源状态查询方法进行说明,该方法具体包括:步骤一:在资源更新后,触发更新一维数组;其中,一维数组中的每个元素均对应gpu的一个资源;当元素中包括二进制1时,表征该元素对应的资源为空闲状态,当元素中包括二进制0时,表征该元素对应的资源为忙碌状态。
[0072]
步骤二:基于更新后的一维数组,构建二维数组;其中,二维数组的第一行为一维数组;二维数组的第二行至第n行均为前一行向右移动一位得到;n的数值等于一维数组的元素的个数。
[0073]
步骤三:基于二维数组,构建二维统计数组;其中,二维统计数组中的每个元素由该元素与前一行的同一列的元素通过相与计算得到,且二维统计数组由二维数组逐行计算生成。
[0074]
步骤四:基于二维统计数组,构建一维统计数组;其中,一维统计数组表征每行元素中存在连续空闲资源的个数。
[0075]
步骤五:基于一维统计数组,确定gpu的资源使用状态。
[0076]
步骤六:基于gpu的资源使用状态进行资源分配。
[0077]
由于硬件上gpu的资源每个时钟同期都会占用和释放,而上述过程可以在一个时钟周期就能完成,解决了gpu资源更新地随机性和实时性,能够给gpu分配提供准确地高效地信息。
[0078]
需要说明的是,上述步骤一至步骤六在前述实施例中均已有说明,相同部分互相参考即可,此处不作赘述。
[0079]
请参阅图7,基于同一发明构思,本技术实施例还提供一种资源状态查询装置200,包括:更新模块210,用于在资源更新后,触发更新一维数组;其中,所述一维数组中的每个元素均对应处理器的一个资源;当元素中包括第一字符时,表征该元素对应的资源为空闲状态,当元素中包括第二字符时,表征该元素对应的资源为忙碌状态。
[0080]
资源状态确定模块220,用于基于更新后的一维数组,确定所述处理器的资源使用状态。
[0081]
可选地,所述一维数组中的各元素顺序与所述处理器中的资源顺序相同。
[0082]
可选地,资源状态确定模块220还具体用于基于所述更新后的一维数组,构建二维数组;其中,所述二维数组的第一行为所述一维数组;所述二维数组的第二行至第n行均为
前一行按照预设方向移动一位得到;n的数值等于所述一维数组的元素的个数;基于所述二维数组,确定所述处理器的资源使用状态。
[0083]
可选地,所述第一字符为1,所述第二字符为0,资源状态确定模块220还具体用于基于所述二维数组,构建二维统计数组;其中,所述二维统计数组中的每个元素由该元素与前一行的同一列的元素通过相与计算得到,且所述二维统计数组由所述二维数组逐行计算生成;基于所述二维统计数组,确定所述处理器的资源使用状态。
[0084]
可选地,资源状态确定模块220还具体用于基于所述二维统计数组,构建一维统计数组;其中,所述一维统计数组表征每行元素中存在连续空闲资源的个数;基于所述一维统计数组,确定所述处理器的资源使用状态。
[0085]
可选地,该装置还包括:资源分配模块。
[0086]
资源分配模块,用于基于所述处理器的资源使用状态进行资源分配。
[0087]
需要说明的是,由于所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0088]
基于同一发明构思,本技术实施例还提供一种计算机程序产品,包括计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行上述实施例提供的方法。
[0089]
基于同一发明构思,本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序在被运行时执行上述实施例中提供的方法。
[0090]
该存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如软盘、硬盘、磁带)、光介质(例如dvd)、或者半导体介质(例如固态硬盘solid state disk (ssd))等。
[0091]
在本技术所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0092]
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0093]
再者,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0094]
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
[0095]
以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的
任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1