物理内存页分配方法和计算机系统与流程

文档序号:12200737阅读:172来源:国知局
物理内存页分配方法和计算机系统与流程
本发明涉及计算机领域,并且更具体地,涉及一种物理内存页分配方法和计算机系统。

背景技术:
随着技术的进步,新的多核、众核计算机系统不断出现,它们都包含了多个物理中央处理单元(CenterProcessingUnit,CPU),并且每个物理CPU上含有硬件缓存(硬件二级/三级缓存),被该物理CPU的各个逻辑CPU共享。CPU中硬件缓存管理的最小单位为缓存线(Cacheline),一般有32比特(Bytes)、64Bytes等;多个cacheline组成一个集合(set),比如4WaySET表示一个set包含4个cacheline;由一个物理页映射到CPU硬件缓存上所需要的连续set组成缓存块(cachebin),一个cachebin表示一种颜色,硬件缓存包含多少个cachebin就有多少种颜色。操作系统中内存管理以物理内存页为单位,一般为4KB;如果不同的物理内存页映射到不同cachebin上,这些物理内存页就具有不同的颜色,若映射到同一cachebin上,则它们具有相同的颜色。然而,由于同一个物理内存页只能映射到同一个cachebin里,且由于物理内存远远大于硬件缓存容量,故存在多个物理页与同一个cachebin对应的情况。由于物理内存页与硬件缓存管理单位的不一致和多逻辑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的着色策略;在该用户未针对该目标逻辑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满足但能被该目标逻辑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绑定的任务的数量以及该目标逻辑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访问不同颜色的物理内存页,从而可以避免cache冲突,提升系统性能;并且由于颜色链表是针对逻辑CPU进行分配的,从而,本发明实施例中的方法不仅适用于用户态进程,也适用于内核进程。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本发明实施例的物理内存页分配方法的示意性流程图。图2是根据本发明另一实施例的空闲内存划分方式的示意图。图3是根据本发明另一实施例的物理内存页分配方法的示意性流程图。图4是根据本发明另一实施例的物理内存页分配方法的示意性流程图。图5是根据本发明另一实施例的计算机系统的示意性框图。图6是根据本发明另一实施例的计算机系统的示意性框图。图7是根据本发明另一实施例的计算机系统的示意性框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。图1是根据本发明实施例的物理内存页分配方法100的示意性流程图。如图1所示,该方法100包括:S110,为目标逻辑CPU分配至少一个颜色链表,其中,一个颜色链表由一种颜色的物理内存页组成,该目标逻辑CPU被分配的颜色链表的颜色不同于所属物理CPU中其他逻辑CPU被分配的颜色链表的颜色;S120,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页。计算机系统在需要为物理CPU中的多个逻辑CPU分配颜色链表时,可以确定该多个逻辑CPU中各个逻辑CPU所需分配的至少一种颜色,任一个逻辑CPU所需分配的颜色不同于其他逻辑CPU所需分配的颜色,并根据各个逻辑CPU所需分配的至少一种颜色,为各个逻辑CPU分配至少一种颜色链表,其中,一个颜色链表由一种颜色的物理内存页组成,然后计算机系统可以从各个逻辑CPU被分配的颜色链表中,为各个逻辑CPU绑定的任务分配物理内存页。因此,在本发明实施例中,通过为目标逻辑CPU分配至少一个颜色链表,其中,一个颜色链表由一种颜色的物理内存页组成,该目标逻辑CPU被分配的颜色链表的颜色不同于所属物理CPU中其他逻辑CPU被分配的颜色链表的颜色,可以使得一个物理CPU中的逻辑CPU访问不同颜色的物理内存页,从而可以避免缓存冲突,提升系统性能;并且由于颜色链表是针对逻辑CPU进行分配的,从而,本发明实施例中的方法不仅适用于用户态进程,也适用于内核进程。本发明实施例中所述的物理内存页可以称作为page,为单页面,大小一般为4kb,其中,在本文中,为了描述的方便,有些实施例中,也将物理内存页称作为单页面或页面。在本发明实施例中所述的任务可以是用户态进程,也可以是内核线程。在本发明实施例中,计算机系统在为物理CPU中的多个逻辑CPU分配颜色链表之前,可以判断该物理CPU的硬件缓存的大小是否大于待分配物理内存页的大小;如果该物理CPU的硬件缓存的大小大于待分配物理内存页的大小,则可以为该物理CPU的逻辑CPU分配颜色链表;如果该物理CPU的硬件缓存的大小不大于待分配物理内存页的大小,则不需要为该物理CPU的逻辑CPU分配颜色链表。具体可以通过该物理CPU的硬件缓存的color位数进行判断。例如,判断color位数是否大于0,如果color位数不大于0,说明该物理CPU启用了大页面,则不需要为物理CPU中的多个逻辑CPU分配颜色链表。在本发明实施例中,S110中为目标逻辑CPU分配至少一个颜色链表,可以包括:根据该目标逻辑CPU已绑定的任务,以及该所属物理CPU的物理内存页颜色的总数,为该目标逻辑CPU分配的物理内存页颜色;根据为该目标逻辑CPU分配的物理内存页颜色,为该目标逻辑CPU分配至少一个颜色链表。具体地说,计算机系统可以根据目标逻辑CPU已绑定的任务的数量、实时性参数(访问内存的所需时间,时间越长,实时性要求越低)、缓存线失效带来的开销、内存开销和内存访问频率中的至少一种,以及所属物理CPU的物理内存页颜色的总数,确定为该目标逻辑CPU分配的颜色链表的数量。例如,如果物理CPU包括四个逻辑CPU(逻辑CPU0,逻辑CPU1,逻辑CPU2和逻辑CPU3),则可以把逻辑CPU0和逻辑CPU1分为一组,与任务组1绑定,即由逻辑CPU0和逻辑CPU1处理任务组1中的任务;可以把逻辑CPU2和逻辑CPU3分为另一组,与任务组2绑定,即由逻辑CPU2和逻辑CPU3处理任务组2中的任务。此时,如果任务组1的任务多于任务组2中的任务,则在对所属物理CPU的物理内存页颜色进行划分时,可以对任务组1绑定的逻辑CPU0和逻辑CPU1划分较多的物理内存页颜色;如果任务组2的任务访问内存的频率大于任务组2中的任务访问内存的频率,则可以对任务组2绑定的逻辑CPU2和逻辑CPU3划分较多的物理内存页颜色。如果任务组1的任务的实时性参数所指示的实时性要求高于任务组2的任务的实时性参数所指示的实时性要求,则可以对任务组1绑定的逻辑CPU0和逻辑CPU1划分较多的物理内存页颜色;如果任务组1的任务的所需的内存开销高于任务组2的任务所需的内存开销,则可以对任务组1绑定的逻辑CPU0和逻辑CPU1划分较多的物理内存页颜色。如果任务组1的任务的缓存线失效带来的开销高于任务组2的任务的缓存线失效带来的开销,则可以对任务组1绑定的逻辑CPU0和逻辑CPU1划分较多的物理内存页颜色。当然,也可以综合考虑被绑定任务的数量、实时性参数、缓存线失效带来的开销、内存开销和内存访问频率中的至少两种,来确定逻辑CPU可分配的颜色链表的数量,具体可以根据情况而定,本发明实施例并不对此进行限定。因此,在本发明实施例中,通过将不同的逻辑CPU与不同的任务绑定,由于不同的逻辑CPU会被分配不同颜色的颜色链表,就可以减少各任务间的缓存冲突,达到性能提升的效果。并且通过逻辑CPU绑定的任务的数量、实时性参数、缓存失效带来的开销、内存开销和内存访问频率中的至少一种,为逻辑CPU分配颜色链表,可以提高物理内存页的使用效率。在本发明实施例中,可以按照伙伴算法中划分空闲内存页的方式,将空闲内存划分成N个内存块组,每个内存块组组成一个链表,例如,2^0、2^1、2^2…2^10共11个链表,在需要为目标逻辑CPU分配颜色链表时(系统初始化时分配或者颜色链表中的物理内存页的数量小于预定阈值时补充链表),可以先从2^0链表(单页面链表)中确定是否有目标逻辑CPU所需的颜色的物理内存页,如果有,则可以从该2^0链表中获取该目标逻辑CPU所需的颜色的物理内存页,补充到目标逻辑CPU相应颜色的颜色链表中,如果没有或者2^0链表中所需颜色的物理内存页的数量不够,则查找2^1链表,将2^1链表的一个对象分裂成两个物理内存页,确定是否有所需颜色的物理内存页,直到组建相应的完整的颜色链表。当然,也并非需要按照链表(内存块组组成的链表)所具对象的大小从小到大的顺序来进行查找,例如,可以直接对2^7链表中的对象进行分裂获取所需的物理内存页,分裂得到的除所需颜色的物理内存页之外的其他对象或单页面可以插入到相应的具有其他次幂的链表中。在本发明实施例中,如图2所示,可以按照伙伴算法中划分空闲内存页的方式,将空闲内存划分成N个内存块,每个内存块组组成一个链表,例如,2^0、2^1、2^2…2^10共11个链表,可以按照页面颜色,将单页面链表(即链表2^0)划分成多个子单页面链表,即图中所示颜色0、颜色1…颜色n的子单页面链表,其中,每一个子单页面链表由一种颜色的物理内存页组成且物理内存页的颜色不同于其他子单页面链表的物理内存页的颜色。在需要为目标逻辑CPU分配颜色链表时(系统初始化时分配或者颜色链表中的物理内存页的数量小于预定阈值时分配),可以从该单页面链表的具有相应颜色的子单页面链表中,获取该目标逻辑CPU所需的颜色的物理内存页,补充到目标逻辑CPU相应的颜色链表中,如果没有或者该相应颜色的子单页面链表的物理内存页的数量不够,则可以查找2^1链表,将2^1链表中的对象分裂成两个单页面,如果分裂后有相应颜色的单页面,则可以将该相应颜色的单页面组成目标逻辑CPU的相应颜色的颜色链表,其他颜色的页面插入到对应颜色的子单页面链表中,如果2^1链表的对象分裂后的物理内存页的数量不够。则可以分裂2^2链表中的对象,获取所需颜色的物理内存页,将其他颜色的物理内存页插入到对应颜色的子单页面链表中,直到为目标逻辑CPU组建相应颜色的具有一定数量物理内存页的颜色链表。当然,也并非需要按照链表(内存块组组成的链表)所具对象的大小从小到大的顺序进行查找,例如,在查找完2^0链表之后,可以直接对2^7链表中的对象进行分裂获取所需的物理内存页,分裂得到的除所需颜色的物理内存页之外的其他单页面可以插入到2^0链表中具有对应颜色的子单页面链表中。在本发明实施例中,由于将单页面链表划分成多个子单页面链表,可以直接从具有特定颜色的子单页面链表中获取物理内存页,可以提高组建或补充目标逻辑CPU的颜色链表的效率。在本发明实施例中,在S120为该目标逻辑CPU绑定的任务分配物理内存页之前,该方法100还可以包括:根据第一任务的绑定参数,在确定该目标逻辑CPU能满足该第一任务的绑定参数所指示的要求时,将该第一任务与该目标逻辑CPU进行绑定,其中,该第一任务的绑定参数包括该第一任务的实时性参数、内存访问频率、缓存线失效带来的开销、内存开销和着色策略中的至少一种。具体地说,前文已描述了根据目标逻辑CPU被绑定的任务,对目标逻辑CPU分配颜色链表,本发明实施例也可以根据任务的绑定参数,将任务与目标逻辑CPU进行绑定。其中,上述第一任务可以是系统启动后首次与该目标逻辑CPU绑定,即计算机系统可以根据用户指定或系统默认的该任务的绑定参数,确定能满足该任务的绑定参数所指示的要求的逻辑CPU,然后将该任务与该能满足要求的逻辑CPU进行绑定。该第一任务也可以是在与其他逻辑CPU解除绑定之后再与目标逻辑CPU绑定,即计算机系统可以根据用户指定或系统默认的该任务的绑定参数,确定该任务的绑定参数所指示的要求不能被当前逻辑CPU满足时,可以新确定一个或多个能满足该任务的绑定参数所指示的要求的逻辑CPU,然后,将该任务与该能够满足要求的一个或多个逻辑CPU进行绑定。在本发明实施例中,在第一任务的绑定参数包括实时性参数、内存访问频率、缓存线失效带来的开销和内存开销中的至少一种时,可以根据任务的绑定参数,并根据各个逻辑CPU的当前CPU调度时间和/或被分配的颜色链表,确定用于绑定该第一任务的目标逻辑CPU,例如,在第一任务实时性要求较高、内存访问频率较高、缓存线失效带来的开销较大或内存开销较大的情况下,可以将当前负载较轻的逻辑CPU(例如,已绑定的任务较少且具有较多颜色链表的逻辑CPU)确定为目标逻辑CPU。在第一任务的绑定参数包括着色策略时,可以将能够满足该着色策略的逻辑CPU确定为用于绑定该第一任务的目标逻辑CPU,其中,着色策略将在下文进行描述。在本发明实施例中,用户可以根据对任务的需求,随时更改上述绑定参数,从而计算机可以根据用户更改的绑定参数,为任务重新绑定新的目标逻辑CPU,因此可以动态修改任务所绑定的逻辑CPU。因此,在本发明实施例中,基于任务的实时性参数、内存访问频率、cache失效带来的开销、内存开销、着色策略中的至少一种,通过将任务与逻辑CPU绑定/解除的方式,使得任务得到更好地被运行,而提高系统性能。在本发明实施例中,在S120中为目标逻辑CPU绑定的任务分配物理内存页之前,该方法100还可以包括:获取该目标逻辑CPU的着色策略;则相应地,S120为该目标逻辑CPU绑定的任务分配物理内存页,可以包括:根据该目标逻辑CPU的着色策略,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页。具体地说,在为目标逻辑CPU绑定的任务分配物理内存页时,可以获取该目标逻辑CPU的着色策略,然后根据目标逻辑CPU的着色策略,对目标逻辑CPU分配物理内存页。具体如何获取目标逻辑CPU的着色策略,可以有以下的实现方式:计算系统可以确定用户是否针对该目标逻辑CPU指定着色策略;在用户设备针对该目标逻辑CPU指定着色策略时,可以将用户指定的着色策略确定为该目标逻辑CPU的着色策略;在该用户未针对该目标逻辑CPU指定着色策略时,将系统默认的着色策略确定为该目标逻辑CPU的着色策略;其中,用户可以根据个人需求,随时更改各个逻辑CPU的着色策略。本发明实施例中所述的着色策略是针对各个逻辑CPU而言的,是一种如何对相应的逻辑CPU绑定的任务分配该相应的逻辑CPU的颜色链表的方式。不论是针对用户指定的着色策略还是系统默认的着色策略,均可以有以下几种方式。在第一种方式中,可以根据目标逻辑CPU绑定的任务的数量以及该目标逻辑CPU被分配的颜色链表的数量,为该目标逻辑CPU绑定的任务平均分配该目标逻辑CPU被分配的颜色链表。也就是说,根据该目标逻辑CPU上可分配的颜色链表的数目n_color与该目标逻辑CPU绑定的任务的数量n_process来平均分配颜色链表,即每个任务独自享有x=n_color/n_process个颜色链表。这样可以使得任务切换时cacheline不失效。在第二种方式中,按照颜色循环的方式,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页,即,可以按照颜色顺序,依次从被分配的每一个颜色链表中,选取一个或多个物理内存页分配给目标逻辑CPU绑定的任务;在这种方式中,如果按照颜色顺序,已从每一个颜色链表中选取了物理内存页,且选取的物理内存页不够被绑定的任务使用时,则可以再次按照颜色顺序,从被分配的每一个颜色链表中,再次选取一个或多个物理内存页分配给目标逻辑CPU绑定的任务。例如,目标逻辑CPU可使用颜色0-9的10种颜色链表,若要为任务1分配2个物理内存页,则可以从颜色0的颜色链表中取一个物理内存页,接着从颜色1的颜色链表中取一个物理内存页;然后要为任务2分配5个物理内存页,则可以从颜色2至6的颜色链表中分别取一个物理内存页;再然后要为任务1分配5个物理内存页,则可以从颜色7、8和9的颜色链表中分别取一个物理内存页,并从颜色0和1的颜色链表中分别取一个物理内存页。这样可以防止分配出去的物理内存页都对应同一个cachebin,从而导致物理内存页数超过硬件缓存的路(way)数后cache替换,并且可以增加颜色链表的使用效率。在第三种实现方式中,根据该目标逻辑CPU中绑定的任务的页面分配参数,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页,其中,该绑定的任务的页面分配参数包括任务的实时性参数、内存访问频率、缓存线失效带来的开销和内存开销中的至少一种。具体地,可以先确定用户是否针对该目标逻辑CPU中绑定的任务指定页面分配参数,在该用户针对该目标逻辑CPU中绑定的任务指定页面分配参数时,根据该用户指定的页面分配参数,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页;在该用户未针对该目标逻辑CPU中绑定的任务指定页面分配参数时,根据该系统默认的页面分配参数,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页。在本发明实施例中,在某一任务的实时性要求较高、内存访问频率较大、缓存线失效带来的开销较大或内存开销较大时,可以为该任务分配较多的颜色,或者为该任务分配较多的物理内存页。在该种方式下,在同一逻辑CPU下,可以为不同的任务分别分配不同颜色链表中的页面,当然,也可以为不同的任务分配同一颜色链表中的页面,具体可以根据情况而定,本发明实施例并不对此作任何限定。应理解,以上所述的方式只是本发明实施例中一些具体的实现方式,本发明还可以有其他的实现方式,也可以结合各个实现方式的特点,对各个实现方式进行结合使用。例如,根据该目标逻辑CPU上可分配的颜色链表的数目n_color与该目标逻辑CPU绑定的任务的数量n_process来平均分配颜色链表,即每个任务独自享有x=n_color/n_process个颜色链表,假设任务1享有的颜色链表为颜色链表1至颜色链表9,则可以根据颜色循环分配的方式,为任务1分配物理内存页,假设任务1需要5个物理内存页,则可以依次从颜色链表1至颜色链表5中选取5个物理内存页。在本发明实施例中,一个逻辑CPU可以对应于一种或多种着色策略,可以根据系统性能,实时自动修改逻辑CPU的着色策略。用户也可以对着色策略进行修改,如果原逻辑CPU不能提供修改后的着色策略,则可以解除原逻辑CPU与任务的绑定,并将该任务与能提供修改后的着色策略的逻辑CPU进行绑定。因此,在本发明实施例中,通过为目标逻辑CPU分配至少一个颜色链表,其中,一个颜色链表由一种颜色的物理内存页组成,该目标逻辑CPU被分配的颜色链表的颜色不同于所属物理CPU中其他逻辑CPU被分配的颜色链表的颜色,可以使得一个物理CPU中的逻辑CPU访问不同颜色的物理内存页,从而可以避免cache冲突,提升系统性能;并且由于颜色链表是针对逻辑CPU进行分配的,从而,本发明实施例中的方法不仅适用于用户态进程,也适用于内核进程。为了更加清楚地理解本发明,以下将结合图2描述根据本发明实施例物理内存页分配方法。图3示出了根据本发明实施例的物理内存页分配方法200的示意性流程图。S201,将待运行任务与逻辑CPU进行绑定,例如,可以将任务组1与逻辑CPU1绑定,将任务组2与逻辑CPU2绑定。S202,确定物理CPU中待分配物理内存页对应的硬件缓存的大小是否大于物理内存页的大小;如果不大于,则结束流程,如果大于,则执行S203。S203,为物理CPU中的多个逻辑CPU分别分配颜色链表,每一个逻辑CPU的颜色链表的颜色不同于其他逻辑CPU的颜色链表的颜色。为每一个逻辑CPU分配颜色链表之后,后续就可以针对每一个逻辑CPU的颜色链表,对其所绑定的任务进行物理内存页的分配,即执行S204至S209。S204,确定用户是否针对目标逻辑CPU指定着色策略,其中,该着色策略用于指示该目标逻辑CPU被分配的颜色链表中的物理内存页的分配方式。如果用户指定着色策略,则执行S205a,即确定采用用户指定的着色策略。如果用户未指定着色策略,则执行S205b,即确定采用系统默认的着色策略。不论确定采用用户指定的着色策略还是系统默认的着色策略,都可以确定采用如图中所示的三种具体策略。具体为:S206a,确定采用颜色平均分配的着色策略;S206b,确定采用按照颜色循环的方式,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页的着色策略。S206c,确定依据任务的页面分配参数,分配颜色链表的着色策略。该三种策略的具体实现方式,可以参考上文所述,为了简洁,在此不再赘述。如果如S206c所言,确定采用依据页面分配参数,分配颜色链表的着色策略时,则还需要执行S207,即确定用户是否指定页面分配参数。如果用户指定页面分配参数,则执行S208a,即确定采用用户指定的页面分配参数。如果用户未指定页面分配参数,则执行S208b,即确定采用系统默认的页面分配参数。S209,确定了着色策略之后,根据相应的策略,从颜色链表中,为需要物理内存页的任务分配物理内存页。该如何依据上述三种策略的进行物理内存页的分配,可以参考上文所述,为了简洁,在此不再赘述。应理解,图3所示的方法只是本发明一种实施例,本发明还可以有其他的实现方式。例如,对于方法200而言,对于任务与逻辑CPU的绑定,可以在S203后执行,即依据每一个逻辑CPU的颜色链表,执行逻辑CPU与任务的绑定。再例如,还可以有图4所示的步骤S210,S211和S212,具体如下:S210,获取用户输入的针对某一逻辑CPU的已绑定的第一任务的绑定参数。S211,判断该某一逻辑CPU是否能满足新输入的第一任务的绑定参数所指示的要求。如果能满足,则维持该某一逻辑CPU与第一任务的绑定。如果不能满足,则执行S212。S212,通过numactl工具解除第一任务与原逻辑CPU(即上述某一逻辑CPU)的绑定,确定能满足新输入的第一任务的绑定参数所指示的要求,并将该第一任务与该另一逻辑CPU绑定。应理解,步骤S210,S211和S212并非一定在S209后执行,可以S203后的任一时刻执行。因此,在本发明实施例中,通过为目标逻辑CPU分配至少一个颜色链表,其中,一个颜色链表由一种颜色的物理内存页组成,该目标逻辑CPU被分配的颜色链表的颜色不同于所属物理CPU中其他逻辑CPU被分配的颜色链表的颜色,可以使得一个物理CPU中的逻辑CPU访问不同颜色的物理内存页,从而可以避免cache冲突,提升系统性能;并且由于颜色链表是针对逻辑CPU进行分配的,从而,本发明实施例中的方法不仅适用于用户态进程,也适用于内核进程。以上已结合图1至图4描述了根据本发明实施例的物理内存页分配方法。以下将结合图5至图7描述根据本发明实施例的计算机系统。图5是根据本发明实施例的计算机系统300的示意性框图。如图5所示,该计算机系统300包括第一分配单元310和第二分配单元320。其中,第一分配单元310,用于为目标逻辑中央处理单元CPU分配至少一个颜色链表,其中,一个颜色链表由一种颜色的物理内存页组成,该目标逻辑CPU被分配的颜色链表的颜色不同于所属物理CPU中其他逻辑CPU被分配的颜色链表的颜色;第二分配单元320,用于从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页。可选地,该第一分配单元310具体用于:根据该目标逻辑CPU已绑定的任务的数量、实时性参数、缓存线失效带来的开销、内存开销和内存访问频率中的至少一种,以及该所属物理CPU的物理内存页颜色的总数,为该逻辑CPU分配物理内存页颜色;根据为该逻辑CPU分配的物理内存页颜色,为该目标逻辑CPU分配至少一个颜色链表。可选地,如图6所示,该计算机系统300还包括建立单元330。该建立单元330用于建立具有一个或多个子单页面链表的单页面链表,其中,每一个子单页面链表由一种颜色的物理内存页组成且每一个子单页面链表的物理内存页的颜色不同于该单页面链表中其他子单页面链表的物理内存页的颜色;相应地,该第一分配单元310具体用于:从该单页面链表中的具有该目标逻辑CPU所需颜色的物理内存页的子单页面链表中,为该目标逻辑CPU分配至少一个颜色链表。可选地,如图6所示,该计算机系统还包括获取单元340。该获取单元340,用于获取该目标逻辑CPU的着色策略,该目标逻辑CPU的着色策略用于指示该目标逻辑CPU被分配的颜色链表中的物理内存页的分配方式;该第二分配单元320具体用于:根据该目标逻辑CPU的着色策略,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页。可选地,该获取单元340具体用于:确定用户是否针对该目标逻辑CPU指定着色策略;在该用户针对该目标逻辑CPU指定着色策略时,将该用户针对该目标逻辑CPU指定的着色策略确定为该目标逻辑CPU的着色策略;在该用户未针对该目标逻辑CPU指定着色策略时,将系统默认的着色策略确定为该目标逻辑CPU的着色策略。可选地,该第二分配单元320具体用于:根据该目标逻辑CPU绑定的任务的数量以及该目标逻辑CPU被分配的颜色链表的数量,为该目标逻辑CPU绑定的任务平均分配该目标逻辑CPU被分配的颜色链表;或者,根据该至少一个颜色链表的颜色顺序,依次从该至少一个颜色链表中的每一个颜色链表中,选取一个或多个物理内存页分配给该目标逻辑CPU绑定的任务;或者,根据该目标逻辑CPU中绑定的任务的页面分配参数,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页,该绑定的任务的页面分配参数包括该绑定的任务的实时性参数、内存访问频率、缓存线失效带来的开销和内存开销中的至少一种。可选地,该第二分配单元320具体用于:确定用户是否针对该目标逻辑CPU中绑定的任务指定页面分配参数;在该用户针对该目标逻辑CPU中绑定的任务指定页面分配参数时,根据该用户指定的页面分配参数,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页;在该用户未针对该目标逻辑CPU中绑定的任务指定页面分配参数时,根据该系统默认的页面分配参数,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页。可选地,如图6所示,该计算机系统还包括绑定单元350。该绑定单元350,用于根据第一任务的绑定参数,在确定该目标逻辑CPU能满足该第一任务的绑定参数所指示的要求时,将该第一任务与该目标逻辑CPU进行绑定,其中,该第一任务的绑定参数包括该第一任务的实时性参数、内存访问频率、缓存线失效带来的开销、内存开销和着色策略中的至少一种。可选地,该绑定单元350具体用于:在该第一任务被绑定到该所属物理CPU中其他逻辑CPU时,获取用户输入的该第一任务的绑定参数,以及根据该第一任务的绑定参数,在确定该第一任务的绑定参数所指示的要求不能被该第一任务绑定的其他逻辑CPU满足但能被该目标逻辑CPU满足时,解除该第一任务与该物理CPU中其他逻辑CPU的绑定,并将该第一任务与该目标逻辑CPU进行绑定。可选地,如图6所示,该计算机系统300还包括确定单元360。确定单元360,用于确定该所属物理CPU的硬件缓存的大小大于待分配物理内存页的大小。应理解,根据本发明实施例的计算机系统300可对应于本发明实施例中的物理内存页分配方法中的计算机系统,并且计算机系统300的各个部件的上述和其它操作和/或功能分别为了实现图1至图4中的方法100和200的相应流程,为了简洁,在此不再赘述。因此,在本发明实施例中,通过为目标逻辑CPU分配至少一个颜色链表,其中,一个颜色链表由一种颜色的物理内存页组成,该目标逻辑CPU被分配的颜色链表的颜色不同于所属物理CPU中其他逻辑CPU被分配的颜色链表的颜色,可以使得一个物理CPU中的逻辑CPU访问不同颜色的物理内存页,从而可以避免cache冲突,提升系统性能;并且由于颜色链表是针对逻辑CPU进行分配的,从而,本发明实施例中的方法不仅适用于用户态进程,也适用于内核进程。图7是根据本发明实施例的计算机系统400的示意性框图。如图7所示,该计算机系统400包括存储器410和处理器420。当然,该计算机系统400还可以包括其他通用部件,本发明实施例在此不作任何限制。其中,存储器410中存储一组程序代码,且处理器420用于调用存储器410中存储的程序代码,用于执行以下操作:为目标逻辑中央处理单元CPU分配至少一个颜色链表,其中,一个颜色链表由一种颜色的物理内存页组成,该目标逻辑CPU被分配的颜色链表的颜色不同于所属物理CPU中其他逻辑CPU被分配的颜色链表的颜色;从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页。可选地,处理器420调用存储器410中存储的程序代码,具体用于执行以下操作:根据该目标逻辑CPU已绑定的任务的数量、实时性参数、缓存线失效带来的开销、内存开销和内存访问频率中的至少一种,以及该所属物理CPU的物理内存页颜色的总数,为该逻辑CPU分配物理内存页颜色;根据为该逻辑CPU分配的物理内存页颜色,为该目标逻辑CPU分配至少一个颜色链表。处理器420调用存储器410中存储的程序代码,还用于执行以下操作:建立具有一个或多个子单页面链表的单页面链表,其中,每一个子单页面链表由一种颜色的物理内存页组成且每一个子单页面链表的物理内存页的颜色不同于该单页面链表中其他子单页面链表的物理内存页的颜色;并具体执行以下操作:从该单页面链表中的具有该目标逻辑CPU所需颜色的物理内存页的子单页面链表中,为该目标逻辑CPU分配至少一个颜色链表。处理器420调用存储器410中存储的程序代码,还用于执行以下操作:获取该目标逻辑CPU的着色策略,该目标逻辑CPU的着色策略用于指示该目标逻辑CPU被分配的颜色链表中的物理内存页的分配方式;并具体执行以下操作:根据该目标逻辑CPU的着色策略,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页。可选地,处理器420调用存储器410中存储的程序代码,具体执行以下操作:确定用户是否针对该目标逻辑CPU指定着色策略;在该用户针对该目标逻辑CPU指定着色策略时,将该用户针对该目标逻辑CPU指定的着色策略确定为该目标逻辑CPU的着色策略;在该用户未针对该目标逻辑CPU指定着色策略时,将系统默认的着色策略确定为该目标逻辑CPU的着色策略。可选地,处理器420调用存储器410中存储的程序代码,具体用于执行以下操作:根据该目标逻辑CPU绑定的任务的数量以及该目标逻辑CPU被分配的颜色链表的数量,为该目标逻辑CPU绑定的任务平均分配该目标逻辑CPU被分配的颜色链表;或者,根据该至少一个颜色链表的颜色顺序,依次从该至少一个颜色链表中的每一个颜色链表中,选取一个或多个物理内存页分配给该目标逻辑CPU绑定的任务;或者,根据该目标逻辑CPU中绑定的任务的页面分配参数,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页,该绑定的任务的页面分配参数包括该绑定的任务的实时性参数、内存访问频率、缓存线失效带来的开销和内存开销中的至少一种。可选地,处理器420调用存储器410中存储的程序代码,具体用于执行以下操作:确定用户是否针对该目标逻辑CPU中绑定的任务指定页面分配参数;在该用户针对该目标逻辑CPU中绑定的任务指定页面分配参数时,根据该用户指定的页面分配参数,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页;在该用户未针对该目标逻辑CPU中绑定的任务指定页面分配参数时,根据该系统默认的页面分配参数,从该目标逻辑CPU被分配的颜色链表中,为该目标逻辑CPU绑定的任务分配物理内存页。可选地,处理器420调用存储器410中存储的程序代码,还用于执行以下操作:根据第一任务的绑定参数,在确定该目标逻辑CPU能满足该第一任务的绑定参数所指示的要求时,将该第一任务与该目标逻辑CPU进行绑定,其中,该第一任务的绑定参数包括该第一任务的实时性参数、内存访问频率、缓存线失效带来的开销、内存开销和着色策略中的至少一种。可选地,处理器420调用存储器410中存储的程序代码,具体用于执行以下操作:在该第一任务被绑定到该所属物理CPU中其他逻辑CPU时,获取用户输入的该第一任务的绑定参数,以及根据该第一任务的绑定参数,在确定该第一任务的绑定参数所指示的要求不能被该第一任务绑定的其他逻辑CPU满足但能被该目标逻辑CPU满足时,解除该第一任务与该物理CPU中其他逻辑CPU的绑定,并将该第一任务与该目标逻辑CPU进行绑定。可选地,处理器420调用存储器410中存储的程序代码,还用于执行以下操作:确定该所属物理CPU的硬件缓存的大小大于待分配物理内存页的大小。应理解,根据本发明实施例的计算机系统400可对应于本发明实施例中的物理内存页分配方法中的计算机系统,并且计算机系统400的各个部件的上述和其它操作和/或功能分别为了实现图1至图4中的方法100和200的相应流程,为了简洁,在此不再赘述。因此,在本发明实施例中,通过为目标逻辑CPU分配至少一个颜色链表,其中,一个颜色链表由一种颜色的物理内存页组成,该目标逻辑CPU被分配的颜色链表的颜色不同于所属物理CPU中其他逻辑CPU被分配的颜色链表的颜色,可以使得一个物理CPU中的逻辑CPU访问不同颜色的物理内存页,从而可以避免cache冲突,提升系统性能;并且由于颜色链表是针对逻辑CPU进行分配的,从而,本发明实施例中的方法不仅适用于用户态进程,也适用于内核进程。本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。结合本文中所公开的实施例描述的方法或步骤可以用硬件、处理器执行的软件程序,或者二者的结合来实施。软件程序可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1