线程分配数量计算方法以及装置的制造方法
【技术领域】
[0001] 本发明涉及通信技术领域,尤其涉及一种线程分配数量计算方法以及装置。
【背景技术】
[0002] 为了保证网络设备的高性能,具有多核CPU的网络设备通常会为每一个核提供一 个对应的线程,并进行统一调度,以实现负载均衡。
[0003] 但是对于虚拟设备而言,由于无法为特定的虚拟设备划定具体的CPU资源,因此 难以为虚拟设备分配合理数量的线程,并进行统一调度。
【发明内容】
[0004] 针对现有技术的缺陷,本发明提供了一种线程分配数量计算方法以及装置。
[0005] 本发明提供了一种线程分配数量计算方法,应用于具有多核CPU的网络设备,其 中该方法包括:
[0006] 本发明提供了一种线程分配数量计算方法,应用于具有多核中央处理器CPU的网 络设备,所述网络设备上运行有虚拟设备,其中该方法包括:
[0007] 获取所述网络设备为虚拟设备分配的CPU资源配比;
[0008] 根据所述网络设备为虚拟设备分配的CPU资源配比以及所述多核CPU的核数,计 算出为所述虚拟设备分配的线程数量;
[0009] 为所述虚拟设备分配与所述线程数量对应数量的线程。
[0010] 本发明还提供一种线程分配数量计算装置,应用于具有多核中央处理器CPU的网 络设备,所述网络设备上运行有虚拟设备,所述装置包括:
[0011] 获取单元,用于获取所述网络设备为虚拟设备分配的CPU资源配比;
[0012] 计算单元,用于根据所述网络设备为虚拟设备分配的CPU资源配比以及所述网络 设备多核CPU的核数,计算出为所述虚拟设备分配的线程数量;
[0013] 分配单元,用于为所述虚拟设备分配与所述线程数量对应数量的线程。
[0014] 本发明提供了一种线程分配数量计算方法以及装置,通过根据获取的为虚拟设备 分配的CPU资源配比以及网络设备的CPU的核数,计算出为所述虚拟设备分配的线程数量, 进而为虚拟设备分配合理数量的线程。
【附图说明】
[0015] 图1是本发明实施例中的组网环境示意图;
[0016] 图2是本发明实施例中一种线程分配数量计算方法流程示意图;
[0017] 图3是本发明实施例中一种线程分配数量计算装置的逻辑结构示意图;
[0018] 图4是本发明实施例中线程分配数量计算装置所在网络设备的硬件架构示意图。
【具体实施方式】
[0019] 为使本申请的目的,技术方案及优点更加清楚明白,以下参照附图对本申请方案 做进一步的详细说明。
[0020] 图1为本发明线程分配数量计算方法所应用的组网环境示意图,该组网中包括具 有多核CPU的网络设备,该网络设备上运行有多个虚拟设备,例如虚拟设备1以及虚拟设备 2,网络设备还具有多个端口(例如Portl、Port2)。
[0021] 请参考图2,为本发明提供的线程分配数量计算方法的处理流程示意图,该线程分 配数量计算方法可应用于具有多核CPU的网络设备,该网络设备上还运行有虚拟设备,其 中,该线程分配数量计算方法包括以下步骤:
[0022] 步骤201,获取所述网络设备为虚拟设备分配的CPU资源配比;
[0023] 实际应用中,具有多核CPU的网络设备在运行虚拟设备时,可以由管理员根据需 要,将网络设备的整体CPU资源划分出一定比例的CPU资源分配给虚拟设备,以保证虚拟设 备的正常运行。
[0024] 在计算为虚拟设备分配的线程数量之前,可以获取管理员为虚拟设备所分配的 CPU资源配比,S卩:为虚拟设备分配的CPU资源占网络设备的整体CPU资源的比例,例如
[0025] 步骤202,根据所述网络设备为虚拟设备分配的CPU资源配比以及所述网络设备 (PU的核数,计算出为所述虚拟设备分配的线程数量;
[0026] 具体地,可以根据网络设备多核CPU的核数确定出网络设备CPU的每个核的资源 配比,该每个核的资源配比可以是网络设备多核CPU的每个核的CPU资源所占网络设备的 整体CPU资源的比例。通常情况下,网络设备CPU的每个核的资源配比相同。例如,若多核 CPU具有N个核,那么CPU的每个核的资源配比则为1/N。
[0027] 接着,根据获取的管理员为虚拟设备所分配的CPU资源配比,以及网络设备的各 个CPU的资源配比,计算出为虚拟设备分配的CPU资源在多核CPU的每个核的资源占比。 艮P:将为虚拟设备所分配的CPU资源配比X%除以CPU的每个核的资源配比1/N。
[0028] 本发明实施例中,为了保证为虚拟设备至少分配一个线程,可以将计算出为虚拟 设备分配的CPU资源在多核CPU的每个核的资源占比后加1,以得到的计算结果为线程分配 数量不小于1。那么计算该线程分配数量的公式为:
[0029] 最后,将所述计算结果中的整数作为线程数量。
[0030] 例如,进行线程分配数量计算后得到的计算结果为1. 5,可以将整数1作为分配的 线程数量。当然,也可以以其他的方法取整数,例如四舍五入等方法,本发明在此不做限制。
[0031] 步骤203,为所述虚拟设备分配与所述线程数量对应数量的线程。
[0032] 在计算出为虚拟设备分配的线程数量后,可以根据该线程数量为虚拟设备分配对 应数量的线程,并且在分配给虚拟设备的线程中添加该虚拟设备的标识,以在后续接收到 报文后,可以根据虚拟设备的标识来调度对应的进程处理接收的报文。
[0033] 其中,该虚拟设备的标识可以是虚拟设备的设备ID等唯一标识。
[0034] 在网络设备接收到报文后,首先获取报文的入接口信息,即:网络设备上接收该报 文的接口的接口信息以及报文中携带的Vlan信息。
[0035] 之后,根据该入接口信息在预设的入接口与虚拟设备对应关系表项中查找与该入 接口信息对应的虚拟设备,并将该对应的虚拟设备作为处理该报文的虚拟设备。
[0036] 确定处理该报文的虚拟设备的CPU使用率是否达到网络设备为该虚拟设备分配 的CPU资源配比,若达到,说明该虚拟设备无能力处理该报文,可以将该报文丢弃;若虚拟 设备的CPU使用率未达到网络设备为其分配的CPU资源配比,说明该虚拟设备可处理该报 文,那么可以从为虚拟设备分配的至少一个线程中确定出一个线程,并调用确定出的一个 线程处理该报文。
[0037] 在一个例子中,网络设备可以根据为线程分配的虚拟设备ID,查找到为该虚拟设 备分配的线程,然后从查找到的线程中确定出一个线程,并调用该线程处理该报文。
[0038] 在优选的实施方式中,本发明还可以为各线程分配一个对应的缓冲区,用于在线 程待处理的报文数量较多时,将待处理的报文存放至缓冲区中,并按照队列顺序依次处理 报文。
[0039] 然而,在报文处理数量过多时,线程对应的缓冲区可能因被待处理的报文占满而 存在无可用容量的情况。
[0040] 因此,本发明在确定出处理报文的虚拟设备后,还可以进一步判断为虚拟设备分 配的线程分别对应的缓冲区的已用容量是否达到预设阈值。
[0041] 该预设阈值通常为缓冲区的最大容量值,当然也可以是用户根据需要而设置的任 意值。
[0042] 若判断为虚拟设备分配的所有线程所对应的缓冲区的已用容量均达到预设阈值, 则丢弃该报文;否则,从缓冲区的已用容量未到达预设阈值的线程中确定出一个线程,并将 接收的报文添加至与确定出的一个线程对应的缓冲区中等待处理。
[0043]以下结合图1为例对本发明进行举例说明。
[0044] 假设,网络设备的多核CPU具有4个核,为虚拟设备1分配的CPU资源配比占网络 设备的整体CPU资源的30% ;为虚拟设备2分配的CPU资源配比占网络设备的整体CPU资 源的10%。
[0045] 在计算为虚拟设备1分配的线程数量时,首先,根据网络设备CPU的核数(4)确定 出多核CPU的每个核的资源配比为1/4,并确定出为虚拟设备1分配的CPU资源配比30%。
[0046] 接着,根据计算线程分配数量的公式
> 计算为虚拟设备1分配的线程数 量,即:为虚拟设备1
[0047] 在获得计算结果2. 2后,将整数2作为为虚拟设备1分配的线程数量,并为虚拟设 备1分配2个线程。
[0048] 在网络设备接收到报文后,若网络设备上接收该报文的接口为Portl,该报文中携 带的Vlan信息为Vlanl,那么该报文的入接口信息即为Portl、Vlanl。
[0049] 若根据入接口信息Portl、Vlanl确定出处理该报文的虚拟设备是虚拟设备1,可 以进一步检查虚拟设备1的CPU使用率是否已达到为该虚拟设备1分配的CPU资源配比, 艮P:网络设备的整体CPU资源的30%。
[0050] 当虚拟设备1的CPU使用率已达到网络设备的整体CPU资源的30%时,丢弃该报 文;否则,调用为虚拟设备1分配的2个线程中的任意一个线程来处理该报文,或者,从为虚 拟设备1分配的2个线程中确定出一个缓冲区的已用容量未到达预设阈值的线程来处理该 报文。
[0051] 综上所述,本发明提供的线程分配数量计算方法通过根据获取的为虚拟设备分配 的CPU资源配比以及网络设备CPU的核数,计算出为所述虚拟设备分配的线程数量,进而实 现为虚拟设备分配合理数量的线程,解决了现有技术中无法为虚拟设备分配合理数量的线 程,并进行统一调度的难题。
[0052] 本发明还提供一种线程分配数量计算装置,图3为该线程分配数量计算装置的结 构示意图,该装置可以应用在具有多核CPU的网络设备,所述网络设备上运行有虚拟设备, 该线程分配数量计算装置可以包括获取单元301、计算单元302以及分配单元303,其中:
[0053] 获取单元301,用于获取所述网络设备为虚拟设备分配的CPU资源配比;
[0054] 计算单元302,用于根据所述网络设备为虚拟设备分配的CPU资源配比以及所述 网络设备多核CPU的核数,计算出为所述虚拟设备分配的线程数量;
[0055] 分配单元303,用于为所述虚拟设备分配与所述线程数量对应数量的线程。
[0056] 进一步地,上述计算单元302具体可以用于根据以下公式计算为所述虚拟设备分 配的线程数量
[0057] 其中,X%为所述网络设备为虚拟设备分配的CPU资源配比,N为所述多核CPU的 核数。
[0058] 进一步地,上述装置还可以包括确定单元304以及调用单元305,其中,确定单元 304可以用于接收到报文后,确定出处理所述报文的虚拟设备;若处理所述报文的虚拟设 备的CPU使用率未达到所述为虚拟设备分配的CPU资源配比,从为所述虚拟设备分配的线 程中确定出一个线程;调用单元305可以用于调用所述一个线程处理所述报文。
[0059] 进一步地,上述装置还可以包括标识单元306,用于在分配给所述虚拟设备的线程 中添加所述虚拟设备的标识;所述确定单元304具体用于查找添加有所述虚拟设备的标识 的线程;从查找到的线程中确定出一个线程。
[0060] 进一步地,上述确定单元304具体可以用于确定所述为所述虚拟设备分配的线程 分别对应的缓冲区的已用容量是否达到预设阈值;从缓冲区的已用容量未到达预设阈值的 线程中确定出一个线程。
[0061]另外,本发明应用于具有多核CPU的网络设备的线程分配数量计算装置在具体的 处理流程中可以与上述线程分配数量计算方法的处理流程一致,在此不再赘述。
[0062] 上述装置可以通过软件实现,也可以通过硬件实现,本发明线程分配数量计算装 置所在组播路由设备的硬件架构示意图均可参考图4所示,其基本硬件环境包括中央处理 器CPU、转发芯片、存储器以及其他硬件,其中存储器件中包括机器可读指令,CPU读取并执 行机器可读指令执行图3中各单元的功能。
[0063] 从以上各种方法和装置的实施方式中可以看出,本发明提供的线程分配数量计算 方法以及装置通过根据获取的为虚拟设备分配的CPU资源配比以及网络设备CPU的核数, 计算出为所述虚拟设备分配的线程数量,进而实现为虚拟设备分配合理数量的线程,并进 行统一调度。可有效避免因为虚拟设备分配较多的线程,而导致的资源浪费,或者因为虚拟 设备分配线程数量较少而导致报文丢包的问题。
[0064] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【主权项】
1. 一种线程分配数量计算方法,应用于具有多核中央处理器CPU的网络设备,所述网 络设备上运行有虚拟设备,其特征在于,所述方法包括: 获取所述网络设备为虚拟设备分配的CPU资源配比; 根据所述网络设备为虚拟设备分配的CPU资源配比以及所述多核CPU的核数,计算出 为所述虚拟设备分配的线程数量; 为所述虚拟设备分配与所述线程数量对应数量的线程。2. 如权利要求1所述的方法,其特征在于,所述计算出为所述虚拟设备分配的线程数 量具体包括:其中,X%为所述网络设备为虚拟设备分配的CPU资源配比,N为所述多核CPU的核数。3. 如权利要求1所述的方法,其特征在于,所述方法还包括: 接收到报文后,确定出处理所述报文的虚拟设备; 若处理所述报文的虚拟设备的CPU使用率未达到所述为虚拟设备分配的CPU资源配 比,从为所述虚拟设备分配的线程中确定出一个线程; 调用所述一个线程处理所述报文。4. 如权利要求3所述的方法,其特征在于,所述方法还包括: 在分配给所述虚拟设备的线程中添加所述虚拟设备的标识; 所述从为所述虚拟设备分配的线程中确定出一个线程具体包括: 查找添加有所述虚拟设备的标识的线程; 从查找到的线程中确定出一个线程。5. 如权利要求3所述的方法,其特征在于,所述从为所述虚拟设备分配的线程中确定 出一个线程具体包括: 确定所述为所述虚拟设备分配的线程分别对应的缓冲区的已用容量是否达到预设阈 值; 从缓冲区的已用容量未到达预设阈值的线程中确定出一个线程。6. -种线程分配数量计算装置,应用于具有多核中央处理器CPU的网络设备,所述网 络设备上运行有虚拟设备,其特征在于,所述装置包括: 获取单元,用于获取所述网络设备为虚拟设备分配的CPU资源配比; 计算单元,用于根据所述网络设备为虚拟设备分配的CPU资源配比以及所述网络设备 多核CPU的核数,计算出为所述虚拟设备分配的线程数量; 分配单元,用于为所述虚拟设备分配与所述线程数量对应数量的线程。7. 如权利要求6所述的装置,其特征在于,所述计算单元具体用于根据以下公式计算 为所述虚拟设备分配的线程数量:其中,X%为所述网络设备为虚拟设备分配的CPU资源配比,N为所述多核CPU的核数。8. 如权利要求6所述的装置,其特征在于,所述装置还包括: 确定单元,用于接收到报文后,确定出处理所述报文的虚拟设备;若处理所述报文的虚 拟设备的CPU使用率未达到所述为虚拟设备分配的CPU资源配比,从为所述虚拟设备分配 的线程中确定出一个线程; 调用单元,用于调用所述一个线程处理所述报文。9. 如权利要求8所述的装置,其特征在于,所述装置还包括: 标识单元,用于在分配给所述虚拟设备的线程中添加所述虚拟设备的标识; 所述确定单元具体用于: 查找添加有所述虚拟设备的标识的线程; 从查找到的线程中确定出一个线程。10. 如权利要求8所述的装置,其特征在于,所述确定单元具体用于: 确定所述为所述虚拟设备分配的线程分别对应的缓冲区的已用容量是否达到预设阈 值; 从缓冲区的已用容量未到达预设阈值的线程中确定出一个线程。
【专利摘要】本发明提供一种线程分配数量计算方法以及装置,其中该方法包括:获取所述网络设备为虚拟设备分配的CPU资源配比;根据所述网络设备为虚拟设备分配的CPU资源配比以及所述多核CPU的核数,计算出为所述虚拟设备分配的线程数量;为所述虚拟设备分配与所述线程数量对应数量的线程。本发明实现了为虚拟设备分配合理数量的线程,并进行统一调度。
【IPC分类】G06F9/50
【公开号】CN104899097
【申请号】CN201510184154
【发明人】王其勇
【申请人】杭州华三通信技术有限公司
【公开日】2015年9月9日
【申请日】2015年4月17日