一种线程空转频率基准值的获取方法及装置与流程

文档序号:12905973阅读:255来源:国知局
一种线程空转频率基准值的获取方法及装置与流程
本申请涉及网络通信
技术领域
,尤其涉及一种线程空转频率基准值的获取方法及装置。
背景技术
:在网络通信技术快速发展的今天,网络设备中数据流量的高效处理在很大程度上取决于其内置的网络处理器。通常情况下,为提高网络处理器的数据处理能力,网络设备制造商一般会将网络处理器设计为多核架构,并在功能层面上将这些核心划分为数据核和控制核。其中,为进一步提高数据核的数据转发能力,系统开发人员可通过仅为处理器中的每一个数据核绑定一个线程的方式,来减少处理器的调度开销,从而最大化数据核的转发能力。此时,运行在每一数据核上的线程会独占分配至该数据核的处理器资源,并循环读取数据核队列中的数据,当队列中没有数据时,则处于空转状态。其中,我们将一个线程从数据核队列的队头开始,遍历读取该队列中的数据,并至队尾结束的过程,称之为一次循环,并将该线程在这一循环中未读取到数据时的状态称之为空转状态。这种情况下,如果要计算数据核的使用率,则需要引入一个基准值,该基准值表征了线程在空转状态下一秒内循环的次数,是评价数据核数据处理能力的一个重要参数,可记为线程空转频率基准值。现有技术中,线程空转频率基准值通常由人工测试获得,但由于这一基准值在不同设备上存在较大差异,且容易受到线程代码变更的影响,所以通过人工测试来获得这一基准值的方式存在准确度低、效率低以及人工成本高等缺点。技术实现要素:有鉴于此,本申请提供一种线程空转频率基准值的获取方法及装置,以在每台网络设备上动态地获取该设备的线程空转频率基准值,从而克服了人工测试准确度低、效率低以及人工成本高的缺点。根据本申请实施例的第一方面,提供一种线程空转频率基准值的获取方法,所述方法应用于网络处理器,所述网络处理器具有n个数据核,n大于等于1,每个数据核分别唯一关联一个线程,每个线程循环处理其所关联的数据核中的数据队列中的数据,其特征在于,所述方法包括:针对每一数据核i(i=1,2,…n),分别在该数据核中的数据队列为空时,进行m次统计,在每次统计中,获取该数据核所关联的线程在统计时长内循环的次数,其中m大于1;根据m次统计的结果,计算该数据核i所关联线程在单位时长内循环的次数ci;根据预先设定的加权平均算法,对ci(i=1,2,…n)进行平均值运算,并将运算得到的结果确定为线程空转频率基准值。根据本申请实施例的第二方面,提供一种线程空转频率基准值的获取装置,所述装置应用于网络处理器,所述网络处理器具有n个数据核,n大于等于1,每个数据核分别唯一关联一个线程,每个线程循环处理其所关联的数据核中的数据队列中的数据,其特征在于,所述装置包括:统计时长内循环次数获取单元,用于针对每一数据核i(i=1,2,…n),分别在该数据核中的数据队列为空时,进行m次统计,在每次统计中,获取该数据核所关联的线程在统计时长内循环的次数,其中m大于1;单位时长内循环次数计算单元,用于根据m次统计的结果,计算该数据核i所关联线程在单位时长内循环的次数ci;基准值确定单元,用于根据预先设定的加权平均算法,对ci(i=1,2,…n)进行平均值运算,并将运算得到的结果确定为线程空转频率基准值。本申请提供了一种线程空转频率基准值的获取方法及装置,本方法可以在每一数据核中的数据队列为空时,动态地获取每一数据核i(i=1,2,…n)所关联的线程在单位时长内循环的次数ci(i=1,2,…n),并通过进一步对ci(i=1,2,…n)进行平均值运算,获取所需的线程空转频率基准值。相比于现有技术中通过人工测试的方式获取这一基准值而言,本申请一方面消除了人为误差,提高了测试结果的准确度,另一方面则的降低了人工成本,提高了测试效率。附图说明图1是本申请一示例性实施例示出的网络处理器架构图;图2是本申请一种线程空转频率基准值的获取方法流程图;图3是将本申请一种线程空转频率基准值获取方法应用于单线程数据核使用率计算的一个实施例流程图;图4是本申请一种线程空转频率基准值的获取装置的结构图;图5是本申请中统计时长内循环次数获取单元的结构图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。图1是本申请一示例性实施例示出的网络处理器架构图。网络处理器是专门为处理数据包而设计的、能够直接完成网络数据处理等通信领域任务的一种可编程处理器。本领域技术人员可以理解的是,为提高网络处理器数据处理的能力,网络设备制造商一般会将网络处理器设计为多核架构,并在功能层面上将这些核心划分为数据核和控制核。其中,控制核通常具备协议协商、路径计算以及策略下发等功能,而数据核则主要负责数据报文的转发任务。需要指出的是,为满足实际应用的需求,可进一步在功能层面上为网络处理器划分出一个管理核,该管理核可以作为网络管理人员的一个管理平台,使得网络管理人员可以通过远程终端协议telnet、简单网络管理协议(snmp:simplenetworkmanagementprotocol)、安全外壳协议(ssh:secureshell)等来协议来管理设备、或者在控制核运行异常时对控制核进行干预操作。本领域技术人员可以理解的是,当数据核中关联了多个进程时,该数据核在一段时间内的使用率可以表示为:各进程占用时间的总和与本段时间的比值。假设一数据核关联了进程a和进程b,其中进程a占用时间30ms、进程b占用时间60ms、数据核空闲时间10ms,则该数据核在100ms内的使用率为90%。从图1中可以看出,与上述示例不同的是,本申请实施例仅为每一数据核关联了一个线程,这一数据核单线程设计可以消除处理器的调度开销,从而最大化数据核的数据转发能力,在防火墙、流量清洗等需要配备高性能网络处理器的设备中尤为适用。但是,由于该线程会独占分配至这一数据核的处理器资源,并循环读取数据核队列中的数据,所以在计算数据核的使用率时需要引入一个基准值,这一基准值将作为评价数据核数据处理能力的一个重要参数,参与数据核使用率的计算。其中,我们将一个线程从数据核队列的队头开始,遍历读取该队列中的数据,并至队尾结束的过程,称之为一次循环,并将该线程在这一循环中未读取到数据时的状态称之为空转状态;将上述基准值记为线程空转频率基准值,用于表征线程在空转状态下一秒内循环的次数。现有技术中,线程空转频率基准值由人工测试获得。通常情况下,该基准值对于每一设备来说是相对固定的,而针对于不同的设备,则需要耗费人工成本来进行逐一测试。但是,即使是针对同一台设备,当设备中的线程代码变更时,这一基准值也会随之变化,需要再次对这一基准值进行人工测试。由此可见,通过人工测试来获得这一基准值的方式不仅准确度较低,而且存在人工成本高以及效率低等缺点。针对这一问题,本申请提供了一种线程空转频率基准值的获取方法,本方法可以在每一数据核中的数据队列为空时,动态地获取每一数据核i(i=1,2,…n)所关联的线程在单位时长内循环的次数ci(i=1,2,…n),并通过进一步对ci(i=1,2,…n)进行平均值运算,获取所需的线程空转频率基准值。相比于现有技术中通过人工测试的方式获取这一基准值而言,本申请一方面消除了人为误差,提高了测试结果的准确度,另一方面降低了人工成本,提高了测试效率。为了使本
技术领域
的人员更好地理解本申请实施例中的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。参见图2,图2是本申请一种线程空转频率基准值的获取方法一个实施例流程图,该流程图可以包括以下步骤:步骤201:网络处理器针对每一数据核i(i=1,2,…n),分别在该数据核中的数据队列为空时,进行m次统计,在每次统计中,获取该数据核所关联的线程在统计时长内循环的次数,其中m大于1;根据m次统计的结果,计算该数据核i所关联线程在单位时长内循环的次数ci。本实施例中,网络处理器可包含n个数据核,n大于等于1,每个数据核分别唯一关联一个线程,每个线程循环处理其所关联的数据核中的数据队列中的数据,当数据核中的数据队列为空时,线程处于空转状态。此时,网络处理器会对每一数据核i进行m次统计,在每次统计中,针对步骤:获取该数据核所关联的线程在统计时长内循环的次数,网络处理器具体可以通过以下方式实现:在预先配置脉冲变量的情况下,网络处理器会分别读取脉冲变量在统计时长起始时刻的数值vs_j和脉冲变量在统计时长结束时刻的数值ve_j,其中j=1,2,…m;然后对ve_j和vs_j进行减法运算,并将运算得到的结果确定为该数据核所关联的线程在统计时长内循环的次数。其中,网络处理器预先配置的脉冲变量,可以实时记录该数据核i所关联的线程到当前时刻为止已经循环的次数。本实施例中,当每一次统计的统计时长与单位时长相等时,针对步骤:根据m次统计的结果,计算该数据核i所关联线程在单位时长内循环的次数ci,网络处理器具体可以通过以下公式进行计算:ci=m次统计结果的和值/m;当每一次统计的统计时长相等,且为单位时长的l倍时,上述步骤可具体通过以下公式进行计算:ci=m次统计结果的和值/(m×l)。步骤202:网络处理器根据预先设定的加权平均算法,对ci(i=1,2,…n)进行平均值运算,并将运算得到的结果确定为线程空转频率基准值。本实施例中,当ci(i=1,2,…n)的权值为1时,步骤:根据预先设定的加权平均算法,对ci(i=1,2,…n)进行平均值运算,并将运算得到的结果确定为线程空转频率基准值,具体可以表示为:通过以上方法可以看出,本方法可以在每一数据核中的数据队列为空时,动态地获取每一数据核i(i=1,2,…n)所关联的线程在单位时长内循环的次数ci(i=1,2,…n),并通过进一步对ci(i=1,2,…n)进行平均值运算,获取所需的线程空转频率基准值。相比于现有技术中通过人工测试的方式获取这一基准值而言,本申请一方面消除了人为误差,提高了测试结果的准确度,另一方面则的降低了人工成本,提高了测试效率。参见图3,图3是将本申请一种线程空转频率基准值获取方法应用于单线程数据核使用率计算的一个实施例流程图。本领域技术人员可以理解的是,网络设备在启动之后,会首先加载操作系统,此时,由于数据核中的队列为空,数据核所关联的线程会一直处于空转状态,且在设备开始处理业务之前,一直维持空转状态不变。本实施例中,网络处理器正是利用这段时间,动态地获取到了计算单线程数据核使用率所需的线程空转频率基准值。以下将对本实施例进行详细说明:步骤301:针对每一数据核i(i=1,2,…n),网络处理器分别在该数据核中的数据队列为空时,进行m次统计,在每次统计中,获取该数据核i所关联的线程在统计时长内循环的次数。本实施例中,假设该网络设备的网络处理器共包含3个数据核,分别为数据核1、数据核2以及数据核3,每一个数据核分别关联一个线程;针对每一数据核分别进行3次统计,每次的统计时长均为500ms。则作为一个可选的实现方式,网络处理器在对每一数据核进行统计时,可通过设定定时器的方式,对每一数据核所对应脉冲变量的数值进行读取,并形成最后的统计结果。具体的,网络处理器可为每一个数据核预先配置一个脉冲变量,用于实时记录该数据核所关联的线程到当前时刻为止已经循环的次数,并在定时器每次溢出时,对某一数据核所对应脉冲变量的数值进行一次读取;更进一步地,网络处理器会在网络设备启动之后,启动上述定时器,若设定该定时器的定时周期为500ms,则该定时器会每500ms溢出一次,并在溢出后自动归零,重新进入下一周期的定时状态。以下将以网络处理器对数据核1进行3次统计为例,对上述可选的实现方式进行详细说明:假设网络处理器会在定时器第1至4次溢出时,分别对数据核1所对应脉冲变量的数值进行第1至第4次读取,且读取到的数值依次为100、200、305、395,则下面以表1的形式示出了定时器每次溢出的溢出时刻以及处理器在该时刻下读取到的脉冲变量数值的对应关系:溢出次数第1次第2次第3次第4次溢出时刻500ms1000ms1500ms2000ms变量数值100200305395表1若将定时器从第500ms溢出开始至第1000ms溢出结束的过程记为网络处理器对数据核1的第1次统计,则本次统计的统计时长即为定时器的定时周期500ms。本次统计中,网络处理器分别读取了脉冲变量在统计时长的起始时刻即第500ms的数值vs_1、以及脉冲变量在统计时长的结束时刻即第1000ms的数值ve_1,其中,vs_1=100、ve_1=200;同理,可将定时器从第1000ms溢出开始至第1500ms溢出结束的过程记为网络处理器对数据核1的第2次统计,其中,vs_2=200、ve_2=305;将定时器从第1500ms溢出开始至第2000ms溢出结束的过程记为网络处理器对数据核1的第3次统计,其中,vs_3=305、ve_3=395。则我们可以将数据核1所关联的线程在以上每一次统计的统计时长内循环的次数分别表示为ve_1-vs_1=100次、ve_2-vs_2=90次、ve_3-vs_3=100次,即在以上3次统计中,数据核1所关联的线程分别在500ms的统计时长内循环了100次、90次、100次。步骤302:网络处理器根据m次统计的结果,计算每一数据核所关联线程在单位时长内循环的次数ci。本实施例可假设单位时长为1秒,则仍以数据核1为例,数据核1在1秒内循环的次数可表示为其中,1/2是指统计时长是单位时长的1/2倍。步骤303:网络处理器根据预先设定的加权平均算法,对ci(i=1,2,…n)进行平均值运算,并将运算得到的结果确定为线程空转频率基准值。由步骤302可知c1=193次,且依照相同的算法,可得到数据核2在1秒内循环的次数c2以及数据核3在1秒内循环的次数c3。在此假设统计结果为c2=200次、c3=207次,则由于数据c1、c2、c3的权值为1,所以针对c1、c2、c3进行平均值运算,可以得到线程空转频率基准值=(c1+c2+c3)/3=200次。步骤304:网络处理器根据计算得到的线程空转频率基准值计算单线程数据核的使用率。本实施例中,单线程数据核的使用率可以通过以下公式计算得到:其中,δtick为数据核中的数据队列不为空时,该数据核所关联线程在单位时长内循环的次数;base_value为上述计算得到的线程空转频率基准值。由于上述单线程数据核的使用率计算公式不在本申请的保护范围之内,故在此不再赘述。通过以上实施例可以看出,本申请提供的方法可以在每一数据核中的数据队列为空时,动态地获取每一数据核i(i=1,2,…n)所关联的线程在单位时长内循环的次数ci(i=1,2,…n),并通过进一步对ci(i=1,2,…n)进行平均值运算,获取所需的线程空转频率基准值,最终计算得到单线程数据核的使用率。相比于现有技术而言,本申请提供的方法可以在每台设备启动时,自动获取该设备的线程空转频率基准值,不仅降低了人工成本,而且消除了人为误差,使得计算得到的数据核使用率更加精确。与前述一种控制服务器关机的方法的实施例相对应,本申请还提供了一种控制服务器关机的装置的实施例。本申请一种控制服务器关机的装置的实施例可以应用在负载均衡设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在负载均衡设备上的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。参见图4,图4是本申请一种线程空转频率基准值的获取装置的结构图。该装置应用于网络处理器,该网络处理器具有n个数据核,n大于等于1,每个数据核分别唯一关联一个线程,每个线程循环处理其所关联的数据核中的数据队列中的数据,该装置包括:统计时长内循环次数获取单元410、单位时长内循环次数计算单元420、基准值确定单元430。其中,统计时长内循环次数获取单元410,用于针对每一数据核i(i=1,2,…n),分别在该数据核中的数据队列为空时,进行m次统计,在每次统计中,获取该数据核所关联的线程在统计时长内循环的次数,其中m大于1;单位时长内循环次数计算单元420,用于根据m次统计的结果,计算该数据核i所关联线程在单位时长内循环的次数ci;基准值确定单元430,用于根据预先设定的加权平均算法,对ci(i=1,2,…n)进行平均值运算,并将运算得到的结果确定为线程空转频率基准值。在本申请的一种具体实施方式中,上述统计时长内循环次数获取单元410可以包括:脉冲变量数值读取子单元411、统计时长内循环次数确定子单元412,具体如图5所示。其中,脉冲变量数值读取子单元411,用于分别读取脉冲变量在统计时长起始时刻的数值vs_j和脉冲变量在统计时长结束时刻的数值ve_j,其中j=1,2,…m,上述脉冲变量已预先配置,用于实时记录该数据核i所关联的线程到当前时刻为止已经循环的次数;统计时长内循环次数确定子单元412,用于对ve_j和vs_j进行减法运算,其中j=1,2,…m,将运算得到的结果确定为该数据核所关联的线程在第j次统计中在统计时长内循环的次数。在本申请的一种具体实施方式中,当每一次统计的统计时长与单位时长相等时,上述单位时长内循环次数计算单元420,可以包括:单位时长内循环次数第一确定子单元421,用于对m次统计的结果进行求和运算,利用运算得到的和值除以m,将运算得到的商值确定为该数据核i所关联线程在单位时长内循环的次数ci。在本申请的一种具体实施方式中,当每一次统计的统计时长相等,且为单位时长的l倍时,上述单位时长内循环次数计算单元420,可以包括:单位时长内循环次数第二确定子单元422,用于对m次统计的结果进行求和运算,利用运算得到的和值除以m与l的乘积,将运算得到的商值确定为该数据核i所关联线程在单位时长内循环的次数ci。在本申请的一种具体实施方式中,当ci(i=1,2,…n)的权值为1时,上述基准值确定单元430,可以包括:基准值运算子单元431,用于依据公式对ci(i=1,2,…n)进行平均值运算。通过以上装置实施例可以看出,本申请可以在每一数据核中的数据队列为空时,动态地获取每一数据核i(i=1,2,…n)所关联的线程在单位时长内循环的次数ci(i=1,2,…n),并通过进一步对ci(i=1,2,…n)进行平均值运算,获取所需的线程空转频率基准值。相比于现有技术中通过人工测试的方式获取这一基准值而言,本申请一方面消除了人为误差,提高了测试结果的准确度,另一方面则的降低了人工成本,提高了测试效率。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1