CN102662761A - 一种多核中央处理器***中内存池的调度方法以及装置 - Google Patents
一种多核中央处理器***中内存池的调度方法以及装置 Download PDFInfo
- Publication number
- CN102662761A CN102662761A CN2012100838823A CN201210083882A CN102662761A CN 102662761 A CN102662761 A CN 102662761A CN 2012100838823 A CN2012100838823 A CN 2012100838823A CN 201210083882 A CN201210083882 A CN 201210083882A CN 102662761 A CN102662761 A CN 102662761A
- Authority
- CN
- China
- Prior art keywords
- memory pool
- level memory
- pool
- memory
- level
- 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
Links
Images
Landscapes
- Memory System (AREA)
Abstract
本发明公开了一种多核中央处理器***中内存池的调度方法以及装置,根据该技术方案,内存池调度程序接收至少两个流水线线程分别发送的内存分配申请后,针对接收的每个内存分配申请,分别执行分配内存池的处理,即:从预先生成的至少两个一级内存池中,确定出预先分配给发送该内存分配申请的流水线线程的一级内存池,将确定出的一级内存池包括的缓冲单元分配给该流水线线程调用,其中,一级内存池包括的缓冲单元从二级内存池包括的缓冲单元中调度。根据该技术方案,在有多个流水线线程并发时,能够针对该多个流水线线程分别分配对应的内存池资源以供调度,从而提高了多核CPU***对数据处理的及时性。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种多核中央处理器***中内存池的调度方法以及装置。
背景技术
中央处理器(Central Processing Unit,CPU)主要实现对报文的处理,具体地,CPU每次接收到一个报文,就要从***内存中分配一块内存空间来存储该报文,并在处理完该报文且发送后,就要将分配给该报文的内存空间释放回***内存,一个报文从被CPU接收到被CPU发送的过程称为一条流水线。
随着CPU处理报文数量的增多,由于接收报文的时间的不确定性以及报文需要的内存空间大小的不同,CPU为每个报文分配内存以及释放内存的操作会消耗大量的CPU资源。针对此问题,较常见的解决办法就是一次性从***内存中申请一个较大的内存块,将该内存块分割成大小相等的多个缓冲单元(即buffer),该被分割成大小相等的多个buffer的内存块称为内存池(即Memory Pool))。通过采用内存池技术,可以减少CPU在每次接收到报文时分配内存空间以及释放内存空间的开销。
目前,对于内存池的管理机制主要包括两个方面,即软件管理机制和硬件管理机制,以下对这两种管理机制进行如下介绍。
软件管理机制,即通过链表结构管理内存池中每个buffer的机制。具体地,将内存池中每个buffer的buffer头链成链表,基于该链表进行统一管理。基于软件管理机制,内存池管理程序接收到流水线线程发送的内存分配申请时,内存池管理程序查找该链表中的空闲buffer表,根据设定的算法选择出当前要分配的空闲buffer,并根据链表中该buffer的buffer头指示的buffer分配给发送内存分配申请的流水线线程,并相应地更新链表中的空闲buffer表。类似地,在每次释放buffer后,需要更新链表,即将该释放的buffer的buffer头重新加入到空闲buffer表中。
硬件管理机制,即采用硬件管理单元(称为硬件内存池)对内存池进行管理的机制。具体地,在实现硬件管理机制时,在***初始化时,从***内存中分配大小相等的多个buffer,并分别将该多个buffer的buffer ptr(即头指针)分配给硬件管理单元,如图1所示,硬件内存池通过n个buffer ptr映射到***内存的n个buffer,每个buffer ptr对应***内存中的一个buffer。基于硬件软件管理机制,硬件内存池管理着***内存中每个buffer的头指针,当硬件内存池接收到流水线线程发送的内存分配申请时,从管理的buffer ptr中分配出一个buffer ptr给发送内存分配申请的流水线线程,即该流水线线程获得对该bufferptr对应的buffer的使用权,存放报文数据,在流水线线程发送报文后,将该buffer ptr释放回硬件内存池即可。
上述对内存池的软件管理机制以及硬件管理机制在面对单核CPU***时,在同一时间一般只需要对一个流水线线程进行处理,可以较好地对流水线线程的内存分配申请以及内存释放进行处理。而随着多核CPU***的普及,上述的对内存池的软件管理机制以及硬件管理机制在多核CPU***中应用时,会存在如下问题:
在多核CPU***中,往往会存在多个流水线线程同时申请内存的情况,即会有多条流水线同时有收发报文的处理需求,按照上述的软件管理机制或硬件管理机制,每次只能将资源池中的buffer分配给一个流水线线程,这样,只能在一个流水线线程结束后,再将资源池中的buffer分配给下一个流水线线程,如图2所示的内存处理示意图,当n个流水线线程同时发起内存分配申请时,每个流水线线程发送的内存分配申请将被保存至内存分配申请队列,内存池管理程序或硬件内存池每次从该内存分配申请队列获取一个内存分配申请,并对该内存分配申请进行处理,即为发送该内存分配申请的流水线线程分配相应的buffer,在该流水线线程释放buffer后,从内存分配申请队列中获取下一个内存分配申请,直至内存分配申请队列中所有的内存分配申请处理完毕。
可见,在多核CPU***中,基于上述的处理机制只能串行处理各流水线线程,大多数流水线线程的内存分配申请会处于等待状态,并且越在后面被处理的流水线等待的时间会越长,从而降低了多核CPU***对数据处理的及时性,降低了多核CPU***的处理性能。
发明内容
有鉴于此,本发明实施例提供一种多核中央处理器***中内存池的调度方法以及装置,采用该技术方案,能够提高多核CPU***对数据处理的及时性。
本发明实施例通过如下技术方案实现:
根据本发明实施例的一个方面,提供了一种多核中央处理器***中内存池的调度方法,包括:
内存池调度程序接收至少两个流水线线程分别发送的内存分配申请;
所述内存池调度程序针对接收的每个内存分配申请,分别执行:
从预先生成的至少两个一级内存池中,确定出预先分配给发送该内存分配申请的流水线线程的一级内存池,并将确定出的所述一级内存池包括的缓冲单元分配给该流水线线程调用,其中,所述一级内存池包括的缓冲单元从二级内存池包括的缓冲单元中调度。
根据本发明实施例的另一个方面,还提供了一种多核中央处理器***中内存池的调度装置,包括:
内存分配申请接收单元,用于接收至少两个流水线线程分别发送的内存分配申请;
内存池调度单元,用于针对接收的每个内存分配申请,分别执行:从预先生成的至少两个一级内存池中,确定出预先分配给发送该内存分配申请的流水线线程的一级内存池,并将确定出的所述一级内存池包括的缓冲单元分配给该流水线线程调用,其中,所述一级内存池包括的缓冲单元从二级内存池包括的缓冲单元中调度。
通过本发明实施例提供的上述至少一个技术方案,内存池调度程序接收至少两个流水线线程分别发送的内存分配申请后,针对接收的每个内存分配申请,分别执行分配内存池的处理,具体地,该分配内存池的处理过程包括:从预先生成的至少两个一级内存池中,确定出预先分配给发送该内存分配申请的流水线线程的一级内存池,并将确定出的一级内存池包括的缓冲单元分配给该流水线线程调用,其中,一级内存池包括的缓冲单元从二级内存池包括的缓冲单元中调度。根据该技术方案,在有多个流水线线程并发时,能够针对该多个流水线线程分别分配对应的内存池资源以供调度,与现有的串行处理各流水线线程的内存分配申请的技术相比,减少了流水线线程等待内存池分配的时间,从而提高了多核CPU***对数据处理的及时性,进而提升了多核CPU***对数据处理的性能。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为背景技术提供的硬件内存池通过n个buffer ptr映射到***内存的n个buffer的示意图;
图2为背景技术提供的内存处理示意图;
图3为本发明实施例一提供的生成一级内存池的流程示意图;
图4为本发明实施例一提供的逐个生成一级内存池的处理流程图;
图5为本发明实施例一提供的内存池调度程序生成一级内存池后对一级内存池进行监控的流程示意图;
图6为本发明实施例一提供的逐个监控一级内存池的处理流程图;
图7为本发明实施例二提供的一级内存池、二级内存池以及流水线线程的关系示意图;
图8为本发明实施例二提供的多核CPU***中调度内存池的流程示意图;
图9为本发明实施例二提供的动态释放buffer资源的处理流程示意图;
图10为本发明实施例三提供的多核CPU***中内存池的调度装置的结构示意图。
具体实施方式
为了给出提高多核CPU***对数据处理的及时性的实现方案,本发明实施例提供了一种多核中央处理器***中内存池的调度方法以及装置,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明提供的多核CPU***中内存池的调度方法中,需要预先生成多个分别与不同流水线线程对应的内存池,从而在有多个流水线线程并发时,能够针对该多个流水线线程分别分配对应的内存池资源以供调度,从而减少了流水线线程等待内存池分配的时间,提高了多核CPU***对数据处理的及时性。
本发明各实施例中涉及的内存池被划分为一级内存池和二级内存池,其中,一级内存池即用于分配给各流水线线程调用的内存池,二级内存池可以为采用硬件管理机制的多核CPU***中的硬件内存池,也可以为采用软件管理机制的多核CPU***中由内存池管理程序管理的内存池。在初始生成一级内存池时,每个一级内存池中包括的buffer主要从二级内存池包括的buffer中调度,并且根据后续的数据处理情况,该一级内存池中的buffer和二级内存池中的buffer可以相互调度,例如,将一级内存池中的buffer释放给二级内存池,或利用二级内存池中的buffer补充一级内存池中的buffer。
实施例一
本发明实施例一提供了一级内存池的生成过程,该一级内存池的生成过程一般在***初始化阶段完成,并且随着***的运行情况,可以根据实际情况增加一级内存池或减少一级内存池。
图3示出了生成一级内存池的流程示意图,具体地,生成一级内存池主要包括如下步骤301以及步骤302:
步骤301、内存池调度程序确定待生成的一级内存池的数量以及每个一级内存池的内存大小。
其中,待生成的一级内存池的数量可以根据多核CPU***中并发的流水线线程的数量确定,优选地,生成的一级内存池的数量可以等于并发的流水线线程的。实际应用中,也可以根据***中内存资源对生成的一级内存池的数量进行调整,例如,在内存资源较少(如低于设定阈值)的情况下,可以确定生成的一级内存池的数量小于并发的流水线线程,在此情况下,可以将一个一级内存池分配给至少两个流水线线程。其中,多核CPU***中并发的流水线线程的数量可以根据多核CPU***中多核数量确定,例如,在双核CPU***中,可以确定并发的流水线线程为2。
待生成的一级内存池的内存大小可以根据所对应的流水线线程处理的业务量确定,即首先确定该一级内存池要被分配给的流水线线程,根据该流水线线程处理的业务量,将与该业务量匹配的内存大小确定为待生成的一级内存池的内存大小。其中,流水线线程处理的业务量可以为该流水线处理的业务量的平均值,即在设定时长内可能产生的业务量。
步骤302、根据每个一级内存池的内存大小,从二级内存池包括的缓冲单元中分别调度与每个一级内存池的内存大小匹配的缓冲单元,生成所述数量的一级内存池。
至此,内存池调度程序生成一级内存池的流程结束。
图3对应流程包括的步骤302中,可以逐个生成一级内存池。为便于理解,以下结合具体实例对该逐个生成一级内存池的处理过程进行说明。
该具体实例中,生成n个一级内存池,每个一级内存池的内存大小通过所需要的内存长度以及在内存中对应的起始地址表征。图4示出了该逐个生成一级内存池的处理流程图,如图4所示,主要包括如下步骤:
步骤401、启动一级内存池初始化程序;
步骤402、取i=0;
其中,i为变量,表示当前已生成的一级内存池的数量;
步骤403、判断i是否小于n,若是,继续执行步骤404,否则结束流程;
其中,n为待生成的一级内存池的总数量;
步骤404、根据当前要生成的一级内存池的内存大小,从二级内存池中取出相应数量的buffer,将取出的buffer分配给当前待生成的一级内存池;
其中,将取出的buffer分配给当前待生成的一级内存池,主要是根据为当前待生成的一级内存池分配的标识,将该标识分配给取出的buffer;
步骤405、将取出的buffer按照分配的标识生成一级内存池;
步骤406、令i=i+1,并返回步骤403。
至此,逐个生成一级内存池的流程结束。通过上述过程,能够预先针对多核CPU***中可能并发的流水线线程,生成多个一级内存池。
在生成多个一级内存池的基础上,本实施例一还提供了一种对生成的一级内存池进行监控的方案,该方案主要是针对一级内存池中包括的buffer数进行监控,通过对每个一级内存池中包括的buffer数量的监控,能够避免一级内存池为空或由于***运行错误等原因导致的一级内存池中buffer数不足以对应的流水线线程调度的情况。
图5示出了内存池调度程序生成一级内存池后对一级内存池进行监控的流程示意图,具体地,该监控过程主要包括如下步骤:
步骤501、内存池调度程序监控生成的每个一级内存池中包括的buffer的数量。
为了节省资源,内存池调度程序可以定时对每个一级内存池中包括的buffer的数量进行监控。
步骤502、判断是否存在包括的缓冲单元的数量低于第一阈值的一级内存池,若是,继续执行步骤503,否否,则结束本次监控。
该步骤502中,第一阈值用于表征该一级内存池中应该包括的buffer数的最小值,该值可以设置为大于等于1的值。优选地,为了提高流水线线程调度一级内存池的成功率,该第一阈值可以根据该一级内存池对应的流水线线程处理的业务量进行设置,例如,根据该一级内存池对应的流水线线程处理的业务量确定需要的buffer数,并设置该第一阈值为确定出的该buffer数。
步骤503、利用二级内存池中的buffer对该确定出的包括的缓冲单元的数量低于第一阈值的一级内存池进行buffer补充。
该步骤503中,在利用二级内存池中的buffer对一级内存池中的buffer进行补充时,可以首先确定出该第一阈值与该一级内存池目前包括的buffer的数量的差值,并根据该差值从二级内存池包括的buffer中调度相应数量的buffer分配给该一级内存池,其中,该相应数量大于等于确定出的差值。
至此,内存池调度程序对一级内存池进行监控的流程结束。
上述图5对应的监控过程可以串行进行,即内存池调度程序逐个对生成的一级内存池进行监控,便于理解,以下结合具体实例对该逐个监控一级内存池的处理过程进行说明。
该具体实例中,对生成的n个一级内存池逐个监控,图6示出了该逐个监控一级内存池的处理流程图,如图6所示,主要包括如下步骤:
步骤601、启动一级内存池监控程序;
步骤602、取i=0;
其中,i为变量,表示当前已监控的一级内存池的数量;
步骤603、判断i是否小于n,若是,继续执行步骤604,否则结束流程;
步骤604、确定一个未被监控的一级内存池,并判断当前一级内存池中包括的buffer数是否低于对应的阈值,若是,执行步骤605,若否,执行步骤606;
其中,在具体应用时,可以对各一级内存池进行排序,并根据排序结果依次选取一级内存池进行监控;
步骤605、利用二级内存池中的buffer对该一级内存池中的buffer进行补充,并执行步骤606。
步骤606、令i=i+1,并返回步骤603。
至此,逐个监控一级内存池的流程结束。
通过上述实施例一提供的处理流程能够得到多个一级内存池,以供并发的多个流水线线程调度,优选情况下,生成的一级内存池数量和并发的流水线线程数量相等,即每个流水线线程对应一个一级内存池。应当理解,每个流水线线程对应一个一级内存池仅为本发明实现的优选情况,实际应用中,生成的一级内存池数量也可以根据多核CPU***的实际内存情况,大于或小于并发的流水线线程数量。例如,若多核CPU***的实际内存资源较为充足,则可以控制一级内存池数量大于并发的流水线线程数量,以应对突发线程的出现;若多核CPU***的实际内存资源较为紧缺,则可以控制一级内存池数量小于并发的流水线线程数量,即至少两个流水线线程共享一个一级内存池资源,在此情况下,内存池调度程序需要逐个对共享一个一级内存池资源的流水线线程进行资源调度。
实施例二
本发明实施例二提供了一种多核CPU***中内存池的调度方法,该方法主要利用上述实施例一生成的至少两个一级内存池实现对并发的流水线线程的内存池调度。
图7示出了对二级内存池集成了内存池调度程序功能的情况下,一级内存池、二级内存池以及流水线线程的关系示意图,该图7中,以每个流水线线程对应一个一级内存池为例,由图7可见,每个流水线会通过箭头1向二级内存池发送内存分配申请,二级内存池确定出与该流水线线程对应的一级内存池后,通过箭头2和3将该一级内存池分配给相应的流水线线程,后续,该流水线线程可以通过箭头3调用对应的一级内存池中的buffer资源。
图8示出了多核CPU***中调度内存池的流程示意图,如图8所示,主要包括如下步骤:
步骤801、内存池调度程序接收至少两个流水线线程分别发送的内存分配申请。
步骤802、内存池调度程序针对接收的每个内存分配申请,分别向发送内存分配申请的流水线线程分配对应的一级内存池进行调度。
该步骤802中,内存池调度程序分别向发送内存分配申请的流水线线程分配对应的一级内存池进行调度,即:从预先生成的至少两个一级内存池中,确定出预先分配给发送该内存分配申请的流水线线程的一级内存池,并将确定出的一级内存池包括的缓冲单元分配给该流水线线程调用。其中,内存池调度程序从预先生成的至少两个一级内存池中,确定出预先分配给发送该内存分配申请的流水线线程的一级内存池,主要根据预先分配给流水线线程的标识以及一级内存池的标识,即:确定发送该内存分配申请的流水线线程的标识,并从预先生成的至少两个分别对应不同标识的一级内存池中,确定出与该流水线线程的标识对应的一级内存池,并将确定出的该一级内存池确定为预先分配给发送该内存分配申请的流水线线程的一级内存池。其中,流水线线程的标识以及一级内存池的标识,可以在一级内存池生成阶段分配。
至此,多核CPU***中调度内存池的流程结束。
根据图8对应的流程,能够针对该多个流水线线程分别分配对应的内存池资源以供调度,当n条流水线线程同时有内存分配申请时,可以并行的从相应的一级内存池中获取buffer。而根据图2对应的现有技术,n条流水线线程同时有内存分配申请时,是逐一对流水线线程的内存分配申请进行处理的,即在一条流水线完成内存池调用以及释放后,才给另一个流水线线程分配内存池,这样,在内存分配申请队列中就会同时保存n条内存分配申请,假如响应每条内存分配申请的时间为t,则完成n条流水线线程内存分配的时间大概为n乘以t的时间,会明显的导致***性能的下降。而根据本发明图8对应的处理流程,在同样的情况下,完成n条流水线线程内存分配的时间大概为t,即使存在至少两个流水线线程共享一个一级内存池的情况,完成n条流水线线程内存分配的时间也是小于n乘以t的时间的。
在基于图8对应的流程,内存池调度程序分别向发送内存分配申请的流水线线程分配对应的一级内存池后,流水线线程可以从相应的一级内存池中获取buffer,并在流水线结束后(即发送完报文后),流水线释放相应的buffer资源,一般情况下,流水线线程会将buffer释放回相应的一级内存池,本实施例二提供的一个优选实施方式中,可以动态释放buffer资源。具体地,图9示出了该动态释放buffer资源的处理流程,主要包括如下步骤:
步骤901、内存池调度程序接收流水线线程在调用一级内存池包括的buffer后发送的内存释放请求。
其中,内存释放请求中会携带请求释放的buffer对应的一级内存池的标识。
步骤902、确定该内存释放请求所请求释放的buffer对应的一级内存池包括的空闲buffer的数量。
步骤903、确定空闲buffer的数量是否大于第二阈值,若是,执行步骤904,若否,执行步骤905。
其中,第二阈值用于表征该一级内存池中应该包括的空闲buffer数的最大值,该值可以根据一级内存池包括的buffer总数量以及设置的最大空闲率确定,例如,一级内存池中包括m个buffer,设置的最大空闲率为40%,则可以设置第二阈值为m乘以40%。
步骤904、将该内存释放请求所请求释放的buffer释放给二级内存池。
步骤905、将该内存释放请求所请求释放的buffer释放给对应的一级内存池。
至此,动态释放buffer资源的处理流程结束。
通过图9对应的流程,能够根据一级内存池中包括的空闲buffer数量动态释放buffer,从而尽量减少buffer资源的空闲,提高资源利用率。
实施例三
与上述实施例一以及实施例二提供的多核CPU中内存池的调度方法对应,本实施例三提供了一种多核CPU中内存池的调度装置,图10示出了该多核CPU中内存池的调度装置的结构示意图,如图10所示,该装置主要包括:
内存分配申请接收单元1001、内存池生成单元1002以及内存池调度单元1003;
其中:
内存分配申请接收单元1001,用于接收至少两个流水线线程分别发送的内存分配申请;
内存池生成单元1002,用于生成至少两个一级内存池,并将生成的每个一级内存池分别分配给流水线线程,其中,一级内存池包括的缓冲单元从二级内存池包括的缓冲单元中调度;
内存池调度单元1003,用于针对接收的每个内存分配申请,分别执行:从预先生成的至少两个一级内存池中,确定出预先分配给发送该内存分配申请的流水线线程的一级内存池,并将确定出的一级内存池包括的缓冲单元分配给该流水线线程调用。
本实施例三提供的一个优选实施方式中,图10所示的装置包括的内存池调度单元1003,具体用于确定发送该内存分配申请的流水线线程的标识,从预先生成的至少两个分别对应不同标识的一级内存池中,确定出与流水线线程的标识对应的一级内存池,并将确定出的一级内存池确定为预先分配给发送该内存分配申请的流水线线程的一级内存池。
本实施例三提供的一个优选实施方式中,图10所示的装置包括的内存池生成单元1002,具体用于确定待生成的一级内存池的数量以及每个一级内存池的内存大小,根据每个一级内存池的内存大小,从二级内存池包括的缓冲单元中分别调度与每个一级内存池的内存大小匹配的缓冲单元,生成数量的一级内存池。
本实施例三提供的一个优选实施方式中,图10所示的装置包括的内存池生成单元1002,具体用于确定所在多核中央处理器***并发的流水线线程的数量,并根据并发的流水线线程的数量,确定待生成的一级内存池的数量。
本实施例三提供的一个优选实施方式中,图10所示的装置包括的内存池生成单元1002,具体用于确定待生成的一级内存池对应的流水线线程,根据流水线线程处理的业务量,将与业务量匹配的内存大小确定为待生成的一级内存池的内存大小。
本实施例三提供的一个优选实施方式中,图10所示的装置包括的内存池调度单元1003,还用于生成数量的一级内存池后,监控生成的每个一级内存池中包括的缓冲单元的数量,在存在包括的缓冲单元的数量低于第一阈值的一级内存池时,确定第一阈值与该一级内存池包括的缓冲单元的数量的差值,并从二级内存池包括的缓冲单元中调度相应数量的缓冲单元分配给该一级内存池,其中,相应数量大于等于差值。
本实施例三提供的一个优选实施方式中,图10所示的装置包括的内存池调度单元1003,还用于将确定出的一级内存池包括的缓冲单元分配给该流水线线程调用后,接收流水线线程在调用一级内存池包括的缓冲单元后发送的内存释放请求,确定内存释放请求所请求释放的缓冲单元对应的一级内存池包括的空闲缓冲单元的数量,若空闲缓冲单元的数量大于第二阈值,则将内存释放请求所请求释放的缓冲单元释放给二级内存池,否则,将内存释放请求所请求释放的缓冲单元释放给对应的一级内存池。
应当理解,以上多核CPU***中内存池的调度装置包括的单元仅为根据该装置实现的功能进行的逻辑划分,实际应用中,可以进行上述单元的叠加或拆分。并且该实施例三提供的多核CPU***中内存池的调度装置所实现的功能与上述实施例一以及实施例二提供的相应方法流程一一对应,对于该装置所实现的更为详细的处理流程,在上述方法实施例中已做详细描述,此处不再详细描述。
并且,本实施例三中的多核CPU***中内存池的调度装置还具有能够实现实施例一和实施例二方案的功能模块,此处不再赘述。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种多核中央处理器***中内存池的调度方法,其特征在于,包括:
内存池调度程序接收至少两个流水线线程分别发送的内存分配申请;
所述内存池调度程序针对接收的每个内存分配申请,分别执行:
从预先生成的至少两个一级内存池中,确定出预先分配给发送该内存分配申请的流水线线程的一级内存池,并将确定出的所述一级内存池包括的缓冲单元分配给该流水线线程调用,其中,所述一级内存池包括的缓冲单元从二级内存池包括的缓冲单元中调度。
2.如权利要求1所述的方法,其特征在于,预先生成一级内存池的过程,包括:
内存池调度程序确定待生成的一级内存池的数量以及每个一级内存池的内存大小;
根据每个一级内存池的内存大小,从二级内存池包括的缓冲单元中分别调度与每个一级内存池的内存大小匹配的缓冲单元,生成所述数量的一级内存池。
3.如权利要求2所述的方法,其特征在于,内存池调度程序确定待生成的一级内存池的数量,包括:
内存池调度程序确定所在多核中央处理器***并发的流水线线程的数量;
根据所述并发的流水线线程的数量,确定待生成的一级内存池的数量。
4.如权利要求2所述的方法,其特征在于,内存池调度程序确定待生成的一级内存池的内存大小,包括:
内存池调度程序确定待生成的一级内存池对应的流水线线程;
根据所述流水线线程处理的业务量,将与所述业务量匹配的内存大小确定为待生成的一级内存池的内存大小。
5.如权利要求2所述的方法,其特征在于,生成所述数量的一级内存池后,还包括:
监控生成的每个一级内存池中包括的缓冲单元的数量;
在存在包括的缓冲单元的数量低于第一阈值的一级内存池时,确定所述第一阈值与该一级内存池包括的缓冲单元的数量的差值;
从二级内存池包括的缓冲单元中调度相应数量的缓冲单元分配给该一级内存池,其中,所述相应数量大于等于所述差值。
6.如权利要求1所述的方法,其特征在于,内存池调度程序将确定出的所述一级内存池包括的缓冲单元分配给该流水线线程调用后,还包括:
内存池调度程序接收所述流水线线程在调用所述一级内存池包括的缓冲单元后发送的内存释放请求;
确定所述内存释放请求所请求释放的缓冲单元对应的一级内存池包括的空闲缓冲单元的数量;
若所述空闲缓冲单元的数量大于第二阈值,则将所述内存释放请求所请求释放的缓冲单元释放给所述二级内存池,否则,将所述内存释放请求所请求释放的缓冲单元释放给对应的一级内存池。
7.一种多核中央处理器***中内存池的调度装置,其特征在于,包括:
内存分配申请接收单元,用于接收至少两个流水线线程分别发送的内存分配申请;
内存池生成单元,用于生成至少两个一级内存池,并将生成的每个一级内存池分别分配给流水线线程,其中,所述一级内存池包括的缓冲单元从二级内存池包括的缓冲单元中调度;
内存池调度单元,用于针对接收的每个内存分配申请,分别执行:从预先生成的至少两个一级内存池中,确定出预先分配给发送该内存分配申请的流水线线程的一级内存池,并将确定出的所述一级内存池包括的缓冲单元分配给该流水线线程调用。
8.如权利要求7所述的装置,其特征在于,所述内存池生成单元,具体用于确定待生成的一级内存池的数量以及每个一级内存池的内存大小,根据每个一级内存池的内存大小,从二级内存池包括的缓冲单元中分别调度与每个一级内存池的内存大小匹配的缓冲单元,生成所述数量的一级内存池。
9.如权利要求8所述的装置,其特征在于,所述内存池生成单元,具体用于确定所在多核中央处理器***并发的流水线线程的数量,并根据所述并发的流水线线程的数量,确定待生成的一级内存池的数量。
10.如权利要求8所述的装置,其特征在于,所述内存池生成单元,具体用于确定待生成的一级内存池对应的流水线线程,根据所述流水线线程处理的业务量,将与所述业务量匹配的内存大小确定为待生成的一级内存池的内存大小。
11.如权利要求8所述的装置,其特征在于,所述内存池调度单元,还用于生成所述数量的一级内存池后,监控生成的每个一级内存池中包括的缓冲单元的数量,在存在包括的缓冲单元的数量低于第一阈值的一级内存池时,确定所述第一阈值与该一级内存池包括的缓冲单元的数量的差值,并从二级内存池包括的缓冲单元中调度相应数量的缓冲单元分配给该一级内存池,其中,所述相应数量大于等于所述差值。
12.如权利要求7所述的装置,其特征在于,所述内存池调度单元,还用于将确定出的所述一级内存池包括的缓冲单元分配给该流水线线程调用后,接收所述流水线线程在调用所述一级内存池包括的缓冲单元后发送的内存释放请求,确定所述内存释放请求所请求释放的缓冲单元对应的一级内存池包括的空闲缓冲单元的数量,若所述空闲缓冲单元的数量大于第二阈值,则将所述内存释放请求所请求释放的缓冲单元释放给所述二级内存池,否则,将所述内存释放请求所请求释放的缓冲单元释放给对应的一级内存池。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100838823A CN102662761A (zh) | 2012-03-27 | 2012-03-27 | 一种多核中央处理器***中内存池的调度方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100838823A CN102662761A (zh) | 2012-03-27 | 2012-03-27 | 一种多核中央处理器***中内存池的调度方法以及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102662761A true CN102662761A (zh) | 2012-09-12 |
Family
ID=46772260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012100838823A Pending CN102662761A (zh) | 2012-03-27 | 2012-03-27 | 一种多核中央处理器***中内存池的调度方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102662761A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077126A (zh) * | 2012-12-24 | 2013-05-01 | 中兴通讯股份有限公司 | 一种内存管理方法和装置 |
CN103605565A (zh) * | 2013-12-05 | 2014-02-26 | 用友软件股份有限公司 | 基于大量业务数据预警提醒的处理方法 |
CN103744735A (zh) * | 2014-01-09 | 2014-04-23 | 福建星网锐捷网络有限公司 | 一种多核资源的调度方法及装置 |
CN104090795A (zh) * | 2014-07-08 | 2014-10-08 | 三星电子(中国)研发中心 | 实现多核移动终端升级的方法、***及装置 |
CN104394096A (zh) * | 2014-12-11 | 2015-03-04 | 福建星网锐捷网络有限公司 | 一种基于多核处理器的报文处理方法及多核处理器 |
CN104977860A (zh) * | 2014-04-04 | 2015-10-14 | 发那科株式会社 | 使用多核心处理器执行顺序程序的控制装置 |
CN105094751A (zh) * | 2015-07-20 | 2015-11-25 | 中国科学院计算技术研究所 | 一种用于流式数据并行处理的内存管理方法 |
CN107168890A (zh) * | 2017-04-01 | 2017-09-15 | 杭州联吉技术有限公司 | 一种内存池的管理方法和装置 |
CN108984280A (zh) * | 2017-06-05 | 2018-12-11 | 深圳市中兴微电子技术有限公司 | 一种片外存储器的管理方法和装置、计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1466311A (zh) * | 2002-06-10 | 2004-01-07 | 华为技术有限公司 | 基于客户、服务器模式的用户请求报文的发送方法 |
CN101149703A (zh) * | 2007-10-10 | 2008-03-26 | 中兴通讯股份有限公司 | 一种固定内存的管理方法 |
CN101493787A (zh) * | 2009-02-18 | 2009-07-29 | 中兴通讯股份有限公司 | 一种内存操作的管理方法及*** |
CN102253897A (zh) * | 2011-07-26 | 2011-11-23 | 大唐移动通信设备有限公司 | 一种内存池管理方法及装置 |
-
2012
- 2012-03-27 CN CN2012100838823A patent/CN102662761A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1466311A (zh) * | 2002-06-10 | 2004-01-07 | 华为技术有限公司 | 基于客户、服务器模式的用户请求报文的发送方法 |
CN101149703A (zh) * | 2007-10-10 | 2008-03-26 | 中兴通讯股份有限公司 | 一种固定内存的管理方法 |
CN101493787A (zh) * | 2009-02-18 | 2009-07-29 | 中兴通讯股份有限公司 | 一种内存操作的管理方法及*** |
CN102253897A (zh) * | 2011-07-26 | 2011-11-23 | 大唐移动通信设备有限公司 | 一种内存池管理方法及装置 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077126A (zh) * | 2012-12-24 | 2013-05-01 | 中兴通讯股份有限公司 | 一种内存管理方法和装置 |
CN103077126B (zh) * | 2012-12-24 | 2016-08-03 | 中兴通讯股份有限公司 | 一种内存管理方法和装置 |
CN103605565A (zh) * | 2013-12-05 | 2014-02-26 | 用友软件股份有限公司 | 基于大量业务数据预警提醒的处理方法 |
CN103605565B (zh) * | 2013-12-05 | 2016-09-28 | 用友网络科技股份有限公司 | 基于大量业务数据预警提醒的处理方法 |
CN103744735A (zh) * | 2014-01-09 | 2014-04-23 | 福建星网锐捷网络有限公司 | 一种多核资源的调度方法及装置 |
CN103744735B (zh) * | 2014-01-09 | 2017-07-25 | 福建星网锐捷网络有限公司 | 一种多核资源的调度方法及装置 |
CN104977860B (zh) * | 2014-04-04 | 2017-11-17 | 发那科株式会社 | 使用多核心处理器执行顺序程序的控制装置 |
CN104977860A (zh) * | 2014-04-04 | 2015-10-14 | 发那科株式会社 | 使用多核心处理器执行顺序程序的控制装置 |
US10127045B2 (en) | 2014-04-04 | 2018-11-13 | Fanuc Corporation | Machine tool controller including a multi-core processor for dividing a large-sized program into portions stored in different lockable instruction caches |
CN104090795A (zh) * | 2014-07-08 | 2014-10-08 | 三星电子(中国)研发中心 | 实现多核移动终端升级的方法、***及装置 |
CN104090795B (zh) * | 2014-07-08 | 2017-05-24 | 三星电子(中国)研发中心 | 实现多核移动终端升级的方法、***及装置 |
CN104394096A (zh) * | 2014-12-11 | 2015-03-04 | 福建星网锐捷网络有限公司 | 一种基于多核处理器的报文处理方法及多核处理器 |
CN104394096B (zh) * | 2014-12-11 | 2017-11-03 | 福建星网锐捷网络有限公司 | 一种基于多核处理器的报文处理方法及多核处理器 |
CN105094751B (zh) * | 2015-07-20 | 2018-01-09 | 中国科学院计算技术研究所 | 一种用于流式数据并行处理的内存管理方法 |
CN105094751A (zh) * | 2015-07-20 | 2015-11-25 | 中国科学院计算技术研究所 | 一种用于流式数据并行处理的内存管理方法 |
CN107168890A (zh) * | 2017-04-01 | 2017-09-15 | 杭州联吉技术有限公司 | 一种内存池的管理方法和装置 |
CN107168890B (zh) * | 2017-04-01 | 2021-03-19 | 杭州联吉技术有限公司 | 一种内存池的管理方法和装置 |
CN108984280A (zh) * | 2017-06-05 | 2018-12-11 | 深圳市中兴微电子技术有限公司 | 一种片外存储器的管理方法和装置、计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102662761A (zh) | 一种多核中央处理器***中内存池的调度方法以及装置 | |
CN110119311B (zh) | 一种基于fpga的分布式流计算***加速方法 | |
Wang et al. | Workflow as a service in the cloud: architecture and scheduling algorithms | |
CN102243598B (zh) | 分布式数据仓库中的任务调度方法及*** | |
CN103279390B (zh) | 一种面向小作业优化的并行处理*** | |
CN102902587B (zh) | 分布式任务调度方法、***和装置 | |
CN102761469A (zh) | 一种资源池的分配方法和装置 | |
US8806503B2 (en) | Method and system for memory aware runtime to support multitenancy in heterogeneous clusters | |
CN103927225A (zh) | 一种多核心架构的互联网信息处理优化方法 | |
CN104657214A (zh) | 一种基于多队列和多优先级的大数据任务管理***和方法 | |
CN103617088B (zh) | 在不同类型线程中分配内核资源的方法、装置及其处理器 | |
CN113434284B (zh) | 一种隐私计算服务端设备、***及任务调度方法 | |
CN107682391B (zh) | 电子装置、服务器分配控制方法和计算机可读存储介质 | |
CN110308982B (zh) | 一种共享内存复用方法及装置 | |
CN103297499A (zh) | 一种基于云平台的调度方法及*** | |
CN108958944A (zh) | 一种多核处理***及其任务分配方法 | |
CN101414270A (zh) | 硬件辅助的辅核任务动态优先级调度的实现方法 | |
CN100459769C (zh) | 一种全分布式资源管理方法和*** | |
KR20150056373A (ko) | 순차적 수행 방식의 멀티스레드 프로세싱 장치 및 방법 | |
CN105320565A (zh) | 一种针对多种应用软件的计算机资源调度方法 | |
CN107832144B (zh) | 分布式并行计算方法和装置 | |
CN103823712A (zh) | 一种多cpu虚拟机***的数据流处理方法和装置 | |
CN102375780A (zh) | 一种分布式文件***中元数据缓存管理的方法 | |
CN104657204B (zh) | 短任务处理方法、装置及操作*** | |
CN116382844A (zh) | 一种分布式存储多异步任务动态控制方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120912 |