提升服务器性能的方法及装置和电子设备与流程

文档序号:18213501发布日期:2019-07-19 22:28阅读:180来源:国知局
提升服务器性能的方法及装置和电子设备与流程

本说明书实施例涉及互联网技术领域,尤其涉及一种提升服务器性能的方法及装置和电子设备。



背景技术:

在相关技术中,为了提升服务器的性能,提出一种多cpu(centralprocessingunit,中央处理器)的服务器架构。具体地,服务器可以包含有多个cpu。进一步的,为了提升cpu的性能,单颗cpu又可以包含多个cpudie(cpu内核,以下简称为内核),以及每个内核又可以包含多个cpucore(cpu核心,以下简称为核心)。这样设计的服务器整体处理性能较高,但也存在多核延迟高的问题,从而影响服务器性能。



技术实现要素:

本说明书实施例提供的一种提升服务器性能的方法及装置和电子设备:

根据本说明书实施例的第一方面,提供一种提升服务器性能的方法,所述服务器包含a个cpu,所述cpu包含b个内核,所述内核包含c个核心;每个内核设置有对应的内核锁,每个cpu设置有对应的cpu锁,所述服务器设置有对应的服务器锁,所述方法包括:

令每个cpu的每个内核中的c个核心之间争抢内核锁,获取争抢到内核锁的a*b个核心;

令每个cpu中争抢到所述内核锁的b个核心之间争抢cpu锁,获取争抢到cpu锁的a个核心;

令服务器中争抢到cpu锁的a个核心之间争抢服务器锁,获取争抢到服务器锁的1个核心;

由争抢到服务器锁的核心执行所在cpu内所有线程的关键区域。

可选的,所述方法还包括:

待所述争抢到服务器锁的核心执行完所在cpu内所有线程的关键区域后,释放所有的内核锁、cpu锁和服务器锁,将a减1后,由其它cpu重复执行“令每个cpu的每个内核中的c个核心之间争抢内核锁,获取争抢到内核锁的a*b个核心”的步骤,直到执行完所有cpu内线程的关键区域。

可选的,所述方法还包括:

接收若干执行关键区域的线程,将所述线程分配给所述cpu。

可选的,所述将所述线程分配给所述cpu,具体包括:

将执行相同关键区域的线程分配给同一个cpu。

可选的,所述方法还包括:

对所述线程进行如下至少一种配置:

配置当前线程所处的cpu。

将来自相同cpu的线程请求配置在同一链路上;

配置当前线程请求的状态;

配置执行关键区域所需参数;

配置供其他线程调用当前线程关键区域函数。

可选的,所述方法还包括:

将没有争抢到服务器锁的线程构建为串行队列,并在本地进行轮询。

根据本说明书实施例的第二方面,提供一种提升服务器性能的装置,所述服务器包含a个cpu,所述cpu包含b个内核,所述内核包含c个核心;每个内核设置有对应的内核锁,每个cpu设置有对应的cpu锁,所述服务器设置有对应的服务器锁,所述装置包括:

第一争抢单元,令每个cpu的每个内核中的c个核心之间争抢内核锁,获取争抢到内核锁的a*b个核心;

第二争抢单元,令每个cpu中争抢到所述内核锁的b个核心之间争抢cpu锁,获取争抢到cpu锁的a个核心;

第三争抢单元,令服务器中争抢到cpu锁的a个核心之间争抢服务器锁,获取争抢到服务器锁的1个核心;

执行单元,由争抢到服务器锁的核心执行所在cpu内所有线程的关键区域。

可选的,所述装置还包括:

循环单元,待所述争抢到服务器锁的核心执行完所在cpu内所有线程的关键区域后,释放所有的内核锁、cpu锁和服务器锁,将a减1后,由其它cpu重复执行第一争抢单元,直到执行完所有cpu内线程的关键区域。

可选的,所述装置还包括:

接收单元,接收若干执行关键区域的线程,将所述线程分配给所述cpu。

可选的,所述接收单元,具体包括:

接收若干执行关键区域的线程,将执行相同关键区域的线程分配给同一个cpu。

可选的,所述装置还包括:

配置子单元,对所述线程进行如下至少一种配置:

配置当前线程所处的cpu。

将来自相同cpu的线程请求配置在同一链路上;

配置当前线程请求的状态;

配置执行关键区域所需参数;

配置供其他线程调用当前线程关键区域函数。

可选的,所述装置还包括:

轮询子单元,将没有争抢到服务器锁的线程构建为串行队列,并在本地进行轮询。

根据本说明书实施例的第三方面,提供一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为上述任一项提升服务器性能的方法。

本说明书实施例,提供了一种提升服务器性能的方案,通过充分利用同一个内核中不同核心之间的延迟小于同一个cpu中不同内核中的不同核心之间的延迟小于不同cpu不同内核中不同核心之间的延迟的特性,让争抢剧烈部分尽可能在相同内核和相同cpu内部完成,在将锁分散的同时,尽可能减少不同内核、不同cpu之间锁的迁移时间。另一方面,利用类似树状结构分配锁,减少同时争抢锁的核心数目,以及利用在相同cpu相同内核的内部锁迁移速度快的特点,加速关键区域运行,最终实现提升多核服务器的整体吞吐量。

附图说明

图1是本说明书一实施例提供的cpu的示意图;

图2a是本说明书一实施例提供的内核与核心的示意图;

图2b是本说明书一实施例提供的cpu与核心的示意图;

图2c是本说明书一实施例提供的服务器与核心的示意图;

图3是本说明书一实施例提供的提升服务器性能的方法的流程图;

图4是图2c所示服务器以树状结构展示的架构示意图;

图5是图4所示树状结构的服务器中锁的架构示意图;

图6是本说明书一实施例提供的提升服务器性能的装置的硬件结构图;

图7是本说明书一实施例提供的提升服务器性能的装置的模块示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。

在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

cpu是一块超大规模的集成电路,是一台计算机设备的大脑。cpu的功能主要是解释计算机指令以及处理计算机软件中的数据。

请参考图1所示的本说明书提供的cpu的示意图,图1整体是一个cpu100,而cpu100正面中心的小方块就是cpudie即前述的内核111。内核111是cpu100中最重要的组成部分,通常内核111可以是由单晶硅以一定的生产工艺制造出来的。cpu100所有的计算、接受/存储命令、处理数据都由该内核111执行。一般的,内核111可以具有固定的逻辑结构,并至少布局有一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元。

如前所述,一个内核可以包含多个核心(即cpucore),一颗cpu又可以包含多个cpudie(cpu内核,以下简称为内核),一个服务器可以包含有多个cpu。

请求参考图2a所示的内核的示意图,可见,该内核(cpudie)包含了4个核心。

继续参考图2b所示的cpu的示意图,该cpu包含了4个内核;每个内核如图2a所示,因此该cpu实际具有4*4=16个核心。

最后参考图2c所示为的服务器的示意图,该服务器server包含了4个cpu;每个cpu如图2b所示,因此该服务器实际具有4*16=64个核心。

由于同一cpu下的不同内核之间是通过内部总线连接的;而不同cpu之间却是通过外部总线连接的;因此,就造成了不同cpu下内核之间的延迟要远大于同一cpu下的不同内核之间的延迟。

cpu中客观存在的特性为:

同一cpu的同一内核内的不同核心之间的延迟,小于,同一cpu的不同内核的不同核心之间的延迟;同一cpu的不同内核的不同核心之间的延迟,小于,不同cpu之间的延迟。也就是说,随着核心之间逐渐疏远,相应地延迟也会相应递增。

再看向图2a-2c的示例,图2a中各核心之间的延迟,图2b中各内核之间的延迟,以及图2c中各cpu之间的延迟依次递增,从10几个纳秒递增至上百纳秒。

另一方面,由于关键区域(criticalsection,也称为临界区)一次只能允许一个核心执行,因此在cpu中提出了锁(lock)的概念。当多个核心并发执行同一个关键区域时,需要这些核心争抢锁,只有拿到锁的核心才可以执行关键区域;待执行完关键区域后,该核心就会释放拿到的锁,再由其它核心继续争抢;这里又涉及到锁迁移,锁迁移就是锁从执行完关键区域的核心转移到下一个争抢到锁的核心的过程。也就是说,相关技术中,关键区域的锁仅设置1个,由需要执行关键区域的所有核心共同去争抢这1个锁。以前述图2c所示服务器为例,可以出现64个核心同时争抢锁的情况,显然这样争夺锁效率是很低的。

在了解了锁之后,可见核心数量越多,争抢锁的核心数目也会越多,并且不同cpu的核心之间锁迁移的几率越大,再结合前述延迟可见迁移速度会非常缓慢,大大影响了cpu性能以及服务器性能。

本说明书充分利用同一个内核中不同核心之间的延迟小于同一个cpu中不同内核中的不同核心之间的延迟小于不同cpu不同内核中不同核心之间的延迟的特性,让锁争抢剧烈的部分尽可能在相同内核和相同cpu内部完成;并且设置多个层次的锁,如此在将锁分散的同时,尽可能减少不同内核、不同cpu之间锁的迁移时间。另一方面,利用类似树状结构分配锁,减少同时争抢锁的核心数目,以及利用在相同cpu相同内核的内部锁迁移速度快的特点,加速关键区域运行,最终实现提升多核服务器的整体吞吐量。

以下请参考图3所示的本说明书提供了一种提升服务器性能的方法,该方法可以应用于服务器,所述服务器包含a个cpu,所述cpu包含b个内核,所述内核包含c个核心(该服务器共计有a个cpu,a*b个内核,a*b*c个核心);并且,每个内核设置有对应的内核锁,每个cpu设置有对应的cpu锁,所述服务器设置有对应的服务器锁,所述方法包括:

步骤120:令每个cpu的每个内核中的c个核心之间争抢内核锁,获取争抢到内核锁的a*b个核心;

步骤130:令每个cpu中争抢到所述内核锁的b个核心之间争抢cpu锁,获取争抢到cpu锁的a个核心;

步骤140:令服务器中争抢到cpu锁的a个核心之间争抢服务器锁,获取争抢到服务器锁的1个核心;

步骤150:由争抢到服务器锁的核心执行所在cpu内所有线程的关键区域。

本说明书中,设置多个层次的锁,如此在将锁分散的同时,尽可能减少不同内核、不同cpu之间锁的迁移时间。

前述图2c所示服务器的示例,可以转换为图4所示的以树状结构展示的架构示意图。可见,从核心-cpu-服务器可以分为三层架构,并且每一层都对应有自己的锁。其中,第一层(即内核所在的层,以下称为内核层)设置有内核锁,第二层(即cpu所在的层,以下称为cpu层)设置有cpu锁,第三层(即服务器所在的层,以下称为服务器层)设置有服务器锁;并且,锁的数量随着层级增加而增加。

如图4所示的服务器包含4个cpu,每个cpu包含4个内核,每个内核又包含4个核心。因此,内核层中可以设置有4*4=16个内核锁(每个内核一个);cpu层中可以设置有4个cpu锁(每个cpu一个),服务器层设置有1个服务器锁;共计21个锁。

如图5所示的为图4所示树状结构的服务器中锁的架构示意图。同样按照三层架构展示,21把锁呈现树状结构,由内核层往上逐渐减少。

上述示例的服务器共计有4*4*4=64个核心。这64个核心争抢锁的过程如下:

第一轮争抢锁:由每个内核中的4个核心之间争抢内核锁;最终可以得到争抢到内核锁的16个核心。如此就从64个核心减少到16个核心;

第二轮争抢锁:由每个cpu中争抢到内核锁的4个核心之间争抢cpu锁;最终可以得到争抢到cpu锁的4个核心。如此,就从16个核心进一步减少到4个核心;

第三轮争抢锁:由服务器中争抢到cpu锁的4个核心之间争抢服务器锁;最终可以得到争抢到服务器锁的1个核心。

最后,由这个最终争抢到服务器锁的核心来执行其所在cpu内所有线程的关键区域。

值得注意的是,上述三轮锁争抢中,每个锁都是在4个核心之间进行争抢,也就是说同时争抢锁的核心数量总是控制在4个或者4个以下,如此就克服了核心数量越多,同时争抢锁的核心数量就越多的问题;实现了在不限制核心总数量的情况下,减少同时争抢锁的核心数目。

并且,内核锁与cpu锁的争抢中,核心均是位于同一cpu下的,基于前述cpu的特性(同一个内核中不同核心之间的延迟小于同一个cpu中不同内核中的不同核心之间的延迟小于不同cpu不同内核中不同核心之间的延迟的特性),让争抢剧烈部分尽可能在相同内核和相同cpu内部完成,而争抢服务器锁仅需要完成1次即可。

值得一提的是,在执行完关键区域的核心后,还需要释放内核锁、cpu锁和服务器锁。这里释放的顺序是由内到外的,先释放内核锁,再释放cpu锁最后才释放服务器锁。由于前述同一内核中核心之间的延迟最小的特性,该释放的内核锁可以被同一内核的其它核心争抢到。同样地对于cpu锁也类似,由于前述同一cpu内的延迟小于不同cpu之间的延迟的特性,cpu锁释放后可以被同cpu内核心争抢到。如此可以使锁迁移尽肯能快降低锁迁移造成的延迟;并且由于共享数据在锁的拥有者的私有缓存,先释放内核锁,导致在相同内核内,共享数据的迁移也是最快,因此加速了关键区域的执行。

上述实施例完成了一个cpu内线程的关键区域,还存在其它cpu内待执行关键区域的线程;因此,在上述图3所示实施例的基础上,所述方法还可以包括:

待所述争抢到服务器锁的核心执行完所在cpu内所有线程的关键区域后,释放所有的内核锁、cpu锁和服务器锁,将a减1后,由其它cpu重复执行“令每个cpu的每个内核中的c个核心之间争抢内核锁,获取争抢到内核锁的a*b个核心”的步骤,直到执行完所有cpu内线程的关键区域。

依次执行每个cpu内线程的关键区域,利用在相同cpu相同内核的内部锁迁移速度快的特点,加速关键区域运行,最终实现提升多核服务器的整体吞吐量。

在一实施例中,在上述图3所示实施例的基础上,所述方法还可以包括:

接收若干执行关键区域的线程,将所述线程分配给所述cpu。

服务器将若干线程分配给cpu后,由cpu执行这些线程。

在一实施例红,所述将所述线程分配给所述cpu,具体包括:

将执行相同关键区域的线程分配给同一个cpu。

通过将执行相同关键区域的线程分配给同一cpu,可以充分利用相同cpu相同内核的内部锁迁移速度快的特点,加速关键区域运行,最终实现提升多核服务器的整体吞吐量。

在一实施例中,对所述线程进行如下至少一种配置,以便运行时执行:

1.配置当前线程所处的cpu。

2.将来自相同cpu的线程请求配置在同一链路上;

3.配置当前线程请求的状态;

4.配置执行关键区域所需参数;

5.配置供其他线程调用当前线程关键区域函数。

在一实施例中,在上述图3所示实施例的基础上,所述方法还可以包括:

将没有争抢到服务器锁的线程构建为串行队列,并在本地进行轮询。

本实施例,通过充分利用同一个内核中不同核心之间的延迟小于同一个cpu中不同内核中的不同核心之间的延迟小于不同cpu不同内核中不同核心之间的延迟的特性,让争抢剧烈部分尽可能在相同内核和相同cpu内部完成,在将锁分散的同时,尽可能减少不同内核、不同cpu之间锁的迁移时间。另一方面,利用类似树状结构分配锁,减少同时争抢锁的核心数目,以及利用在相同cpu相同内核的内部锁迁移速度快的特点,加速关键区域运行,最终实现提升多核服务器的整体吞吐量。

与前述提升服务器性能的方法实施例相对应,本说明书还提供了提升服务器性能的装置的实施例。所述装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机业务程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本说明书提升服务器性能的装置所在设备的一种硬件结构图,除了图6所示的处理器、网络接口、内存以及非易失性存储器之外,实施例中装置所在的设备通常根据提升服务器性能的实际功能,还可以包括其他硬件,对此不再赘述。

请参见图7,为本说明书一实施例提供的提升服务器性能的装置的模块图,所述装置对应了图3所示实施例,所述服务器包含a个cpu,所述cpu包含b个内核,所述内核包含c个核心;每个内核设置有对应的内核锁,每个cpu设置有对应的cpu锁,所述服务器设置有对应的服务器锁,所述装置包括:

第一争抢单元210,令每个cpu的每个内核中的c个核心之间争抢内核锁,获取争抢到内核锁的a*b个核心;

第二争抢单元220,令每个cpu中争抢到所述内核锁的b个核心之间争抢cpu锁,获取争抢到cpu锁的a个核心;

第三争抢单元230,令服务器中争抢到cpu锁的a个核心之间争抢服务器锁,获取争抢到服务器锁的1个核心;

执行单元240,由争抢到服务器锁的核心执行所在cpu内所有线程的关键区域。

可选的,所述装置还包括:

循环单元,待所述争抢到服务器锁的核心执行完所在cpu内所有线程的关键区域后,释放所有的内核锁、cpu锁和服务器锁,将a减1后,由其它cpu重复执行第一争抢单元,直到执行完所有cpu内线程的关键区域。

可选的,所述装置还包括:

接收单元,接收若干执行关键区域的线程,将所述线程分配给所述cpu。

可选的,所述接收单元,具体包括:

接收若干执行关键区域的线程,将执行相同关键区域的线程分配给同一个cpu。

可选的,所述装置还包括:

配置子单元,对所述线程进行如下至少一种配置:

配置当前线程所处的cpu。

将来自相同cpu的线程请求配置在同一链路上;

配置当前线程请求的状态;

配置执行关键区域所需参数;

配置供其他线程调用当前线程关键区域函数。

可选的,所述装置还包括:

轮询子单元,将没有争抢到服务器锁的线程构建为串行队列,并在本地进行轮询。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上图7描述了提升服务器性能的装置的内部功能模块和结构示意,其实质上的执行主体可以为一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

令每个cpu的每个内核中的c个核心之间争抢内核锁,获取争抢到内核锁的a*b个核心;

令每个cpu中争抢到所述内核锁的b个核心之间争抢cpu锁,获取争抢到cpu锁的a个核心;

令服务器中争抢到cpu锁的a个核心之间争抢服务器锁,获取争抢到服务器锁的1个核心;

由争抢到服务器锁的核心执行所在cpu内所有线程的关键区域;

其中,服务器包含a个cpu,所述cpu包含b个内核,所述内核包含c个核心;每个内核设置有对应的内核锁,每个cpu设置有对应的cpu锁,所述服务器设置有对应的服务器锁。

可选的,还包括:

待所述争抢到服务器锁的核心执行完所在cpu内所有线程的关键区域后,释放所有的内核锁、cpu锁和服务器锁,将a减1后,由其它cpu重复执行“令每个cpu的每个内核中的c个核心之间争抢内核锁,获取争抢到内核锁的a*b个核心”的步骤,直到执行完所有cpu内线程的关键区域。

可选的,还包括:

接收若干执行关键区域的线程,将所述线程分配给所述cpu。

可选的,所述将所述线程分配给所述cpu,具体包括:

将执行相同关键区域的线程分配给同一个cpu。

可选的,还包括:

对所述线程进行如下至少一种配置:

配置当前线程所处的cpu。

将来自相同cpu的线程请求配置在同一链路上;

配置当前线程请求的状态;

配置执行关键区域所需参数;

配置供其他线程调用当前线程关键区域函数。

可选的,还包括:

将没有争抢到服务器锁的线程构建为串行队列,并在本地进行轮询。

在上述电子设备的实施例中,应理解,该处理器可以是中央处理单元(英文:centralprocessingunit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digitalsignalprocessor,简称:dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,而前述的存储器可以是只读存储器(英文:read-onlymemory,缩写:rom)、随机存取存储器(英文:randomaccessmemory,简称:ram)、快闪存储器、硬盘或者固态硬盘。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。

应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1