映射方法及装置的制作方法

文档序号:7866150阅读:243来源:国知局
专利名称:映射方法及装置的制作方法
技术领域
本发明涉及通信领域,具体而言,涉及一种映射方法及装置。
背景技术
多队列网卡是一种技术,最初是用来解决网络服务质量(Quality of Service简称为QoS)问题的,后来随着网络带宽的不断提升,单核中央处理器(Central ProcessingUnit,简称为CPU)不能完全处满足网卡的需求,通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的核上,以满足网卡的需求。linux-2. 6. 24及以上都支持发送多队列(接收/发送),但是相关技术中没有多队列与多核的映射的合理方案。软件需要有足够的适应能力,灵活适应用户现场应用环境。另夕卜,防火墙平台不同,网卡芯片不一样,不同的芯片对多队列支持也不一样,因此无法在多 核平台下发挥网卡处理能力。因此,在相关技术中,多核平台下网卡多队列与CPU无法均衡配合,实现多核平台各网卡处理队列与各个CPU能够均衡分担报文处理任务。针对相关技术中多核与多队列的映射没有合理方案的问题,目前尚未提出有效的解决方案。

发明内容
针对相关技术中多核与多队列的映射没有合理方案的问题,本发明提供了一种映射方法及装置,以至少解决上述问题。根据本发明的一个方面,提供了一种映射方法,该方法包括确定CPU的核数,网卡个数,以及各个网卡的队列数;根据所述核数、所述网卡个数以及所述各个网卡的队列数,将所述各个网卡的各个队列与所述CPU的核相映射。确定上述网卡个数包括根据网络接口确定上述网卡个数;或者,查看数据库;根据上述数据库的记录确定上述网卡个数。确定上述各个网卡的队列数包括查看驱动;根据上述驱动确定上述各个网卡的队列数。将上述各个网卡的各个队列与上述CPU的核相映射包括将上述各个网卡的各个队列,均衡映射到上述CPU的核;或者,根据上述CPU的核的处理性能,将上述各个网卡的各个队列映射到上述CPU的核;或者,根据上述CPU的负载情况,将上述各个网卡的各个队列映射到上述CPU的核。根据本发明的另一方面,提供了一种映射装置,该装置包括确定模块,用于确定CPU的核数,网卡个数,以及各个网卡的队列数;映射模块,用于根据上述确定模块确定的上述核数、上述网卡个数以及上述各个网卡的队列数,将上述各个网卡的各个队列与上述CPU的核相映射。上述确定模块包括第一确定单元,用于根据网络接口确定上述网卡个数;或者,第二确定单元,用于查看数据库;根据上述数据库的记录确定上述网卡个数。
上述确定模块包括第三确定单元,用于查看驱动;根据上述驱动确定上述各个网卡的队列数。
上述映射模块包括第一映射单元,用于将上述各个网卡的各个队列,均衡映射到上述CPU的核;或者,第二映射单元,用于根据上述CPU的核的处理性能,将上述各个网卡的各个队列映射到上述CPU的核;或者,第三映射单元,用于根据上述CPU的负载情况,将上述各个网卡的各个队列映射到上述CPU的核。
通过本发明,在确定CPU的核数、网卡个数以及各个网卡的队列数之后,根据上述三个指标,将各个网卡的各个队列与CPU的核相映射,解决了相关技术中多核与多队列的映射没有合理方案的问题,进而使得多核平台上各网卡上的收发队列,能够在程序的调度下,自动绑定到对应的CPU上进行处理,大幅提升了多核平台的网络处理能力。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中
图I是根据本发明实施例的映射方法的流程图2是根据本发明实施例的多核和多队列的映射方法的流程图3是根据本发明实施例的映射装置的结构框图4是根据本发明实施例的映射装置的第一种具体结构框图5是根据本发明实施例的映射装置的第二种具体结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
基于相关技术中不存在多核与多队列进行映射的合理方案,本发明实施例提供了一种映射方法及装置,将各个网卡的各个队列与CPU的核相映射,大幅提升了多核平台的网络处理能力。下面通过具体实施例进行详细介绍。
本实施例提供了一种映射方法,图I是根据本发明实施例的映射方法的流程图, 如图I所示,该方法包括以下步骤(步骤S102-步骤S104)
步骤S102,确定CPU的核数,网卡个数,以及各个网卡的队列数;
步骤S104,根据上述核数、上述网卡个数以及上述各个网卡的队列数,将各个网卡的各个队列与CPU的核相映射。
通过上述方法,在确定CPU的核数、网卡个数以及各个网卡的队列数之后,根据上述三个指标,将各个网卡的各个队列与CPU的核相映射,解决了相关技术中多核与多队列的映射没有合理方案的问题,进而使得多核平台上各网卡上的收发队列,能够在程序的调度下,自动绑定到对应的CPU上进行处理,大幅提升了多核平台的网络处理能力。
在上述步骤S102中,CPU的核数、网卡个数、以及各个网卡的队列数的确定动作的执行时机并不限定。可以先确定网卡个数,也可以先确定CPU的核数,等等。上述三个动作的执行时机不限于此。
在上述步骤S102中,对于网卡个数的确定方法,能够通过多种方式实现,本实施例提供了两种优选实施方式,即确定网卡个数包括根据网络接口确定网卡个数;或者,查看数据库;根据上述数据库的记录确定网卡个数。通过上述方式,为后续将多核与多队列进行映射提供了基础。当然,网卡个数的确定方法不限于此。无论采用何种方式,只要能够确定网卡个数即可。
对于各个网卡的队列数的确定方法,也能够通过多种方式实现,本实施例提供了一种优选实施方式,即确定各个网卡的队列数包括查看驱动;根据上述驱动确定各个网卡的队列数。通过上述方式,为后续将多核与多队列进行映射提供了基础。当然,各个网卡的队列数的确定方法也不限于此。无论采用何种方式,只要能够确定各个网卡的队列数即可。
在上述步骤S104中,将各个网卡的各个队列与CPU的核相映射也能够通过多种方式实现,本实施例提供了一种优选实施方式,即将各个网卡的各个队列,均衡映射到CPU的核。例如,假设CPU是双核系统,网卡个数为一个,该网卡的队列个数为4个,则可以将2个队列映射到CPU的一个核,将另外2个队列映射到CPU的另外一个核。上述实施方式简单易操作,实现了多核和多队列的映射。
对于将各个网卡的各个队列与CPU的核相映射的过程,本实施例还提供了一种优选实施方式,即根据CPU的核的处理性能,将各个网卡的各个队列映射到CPU的核。通过上述方式,对CPU的核的处理性能进行分析,对于处理性能较高的核,可以稍微多分一些队列与该核进行映射,对于处理性能较低的核,可以稍微少分一些队列与该核进行映射。通过上述优选实施方式,能够根据实际情况将多核与多队列进行映射,提高了映射方法的实效性。
对于将各个网卡的各个队列与CPU的核相映射的过程,本实施例还提供了一种优选实施方式,即根据CPU的负载情况,将各个网卡的各个队列映射到CPU的核。通过上述优选实施方式,能够根据实际情况将多核与多队列进行映射,提高了映射方法的实效性。
当然,多核与多队列的映射方法不限于此。无论采用何种方式,只要能够将多核与多队列进行映射即可。
下面通过具体实施例对多核和多队列的映射方法进行介绍。图2是根据本发明实施例的多核和多队列的映射方法的流程图,如图2所示,该方法包括以下步骤(步骤 S202-步骤 S204)
步骤S202,对CPU的核数,网卡个数,以及各个网卡的队列数进行检测。假设检测到CPU的核数为4个,网卡个数是I个,该网卡的队列数为4个。
步骤S204,根据检测结果,将上述网卡的4个队列与4个核一一对应进行映射。当然,还存在其他映射方式,例如,将4个队列对应于一个核,其余核不与队列相映射。在此不再赘述。
对应于上述映射方法,本实施例提供了一种映射装置,该装置用于实现上述实施例,图3是根据本发明实施例的映射装置的结构框图,如图3所示,该装置包括确定模块 10和映射模块20。下面对该结构进行介绍。
确定模块10,用于确定中央处理器CPU的核数,网卡个数,以及各个网卡的队列数;
映射模块20,连接至确定模块10,用于根据上述确定模块10确定的上述核数、上述网卡个数以及上述各个网卡的队列数,将上述各个网卡的各个队列与上述CPU的核相映射。
通过上述装置,在确定模块10确定CPU的核数、网卡个数以及各个网卡的队列数之后,映射模块20根据上述三个指标,将各个网卡的各个队列与CPU的核相映射,解决了相关技术中多核与多队列的映射没有合理方案的问题,进而使得多核平台上各网卡上的收发队列,能够在程序的调度下,自动绑定到对应的CPU上进行处理,大幅提升了多核平台的网络处理能力。
上述确定模块10对CPU的核数、网卡个数、以及各个网卡的队列数的确定动作的执行时机并不限定。可以先确定网卡个数,也可以先确定CPU的核数,等等。上述三个动作的执行时机不限于此。
上述确定模块10对于网卡个数的确定方法,能够通过多种方式实现,本实施例提供了两种优选实施方式,如图4所示的映射装置的第一种具体结构框图,该装置除了包括上述图3所示的各个模块之外,确定模块10还包括第一确定单元12或者第二确定单元。 下面对该结构进行介绍。
第一确定单元12,用于根据网络接口确定上述网卡个数;或者,
第二确定单元,用于查看数据库;根据上述数据库的记录确定上述网卡个数。
上述图4仅仅以确定模块10包括第一确定单元12为例进行介绍。通过上述结构, 为后续将多核与多队列进行映射提供了基础。当然,网卡个数的确定方法不限于此。无论采用何种方式,只要能够确定网卡个数即可。
对于各个网卡的队列数的确定方法,也能够通过多种方式实现,本实施例提供了一种优选实施方式,即上述确定模块10还可以包括第三确定单元,用于查看驱动;根据上述驱动确定上述各个网卡的队列数。通过上述结构,为后续将多核与多队列进行映射提供了基础。当然,各个网卡的队列数的确定方法也不限于此。无论采用何种方式,只要能够确定各个网卡的队列数即可。
在本实施例中,映射模块20将各个网卡的各个队列与CPU的核相映射也能够通过多种方式实现,本实施例提供了一种优选实施方式,如图5所示的映射装置的第二种具体结构框图,该装置除了包括上述图4所示的各个模块之外,映射模块20还包括第一映射单元22、第二映射单元或者第三映射单元。下面对该结构进行介绍。
第一映射单元22,用于将上述各个网卡的各个队列,均衡映射到上述CPU的核;或者,
第二映射单元,用于根据上述CPU的核的处理性能,将上述各个网卡的各个队列映射到上述CPU的核;或者,
第三映射单元,用于根据上述CPU的负载情况,将上述各个网卡的各个队列映射到上述CPU的核。
上述图5仅仅以映射模块20包括第一映射单元22为例进行介绍。上述实施方式简单易操作,实现了多核和多队列的映射。当然,多核与多队列的映射方法不限于此。无论采用何种方式,只要能够将多核与多队列进行映射即可,在此不再赘述。
对于上述实施例介绍的多核和多队列的映射方法,可以通过以下程序进行具体实施。该程序代码具体如下权利要求
1.一种映射方法,其特征在于,包括 确定中央处理器CPU的核数,网卡个数,以及各个网卡的队列数; 根据所述核数、所述网卡个数以及所述各个网卡的队列数,将所述各个网卡的各个队列与所述CPU的核相映射。
2.根据权利要求I所述的方法,其特征在于,确定所述网卡个数包括 根据网络接口确定所述网卡个数;或者, 查看数据库;根据所述数据库的记录确定所述网卡个数。
3.根据权利要求I所述的方法,其特征在于,确定所述各个网卡的队列数包括 查看驱动; 根据所述驱动确定所述各个网卡的队列数。
4.根据权利要求I所述的方法,其特征在于,将所述各个网卡的各个队列与所述CPU的核相映射包括 将所述各个网卡的各个队列,均衡映射到所述CPU的核;或者, 根据所述CPU的核的处理性能,将所述各个网卡的各个队列映射到所述CPU的核;或者, 根据所述CPU的负载情况,将所述各个网卡的各个队列映射到所述CPU的核。
5.一种映射装置,其特征在于,包括 确定模块,用于确定中央处理器CPU的核数,网卡个数,以及各个网卡的队列数; 映射模块,用于根据所述确定模块确定的所述核数、所述网卡个数以及所述各个网卡的队列数,将所述各个网卡的各个队列与所述CPU的核相映射。
6.根据权利要求5所述的装置,其特征在于,所述确定模块包括 第一确定单元,用于根据网络接口确定所述网卡个数;或者, 第二确定单元,用于查看数据库;根据所述数据库的记录确定所述网卡个数。
7.根据权利要求5所述的装置,其特征在于,所述确定模块包括 第三确定单元,用于查看驱动;根据所述驱动确定所述各个网卡的队列数。
8.根据权利要求5所述的装置,其特征在于,所述映射模块包括 第一映射单元,用于将所述各个网卡的各个队列,均衡映射到所述CPU的核;或者,第二映射单元,用于根据所述CPU的核的处理性能,将所述各个网卡的各个队列映射到所述CPU的核;或者, 第三映射单元,用于根据所述CPU的负载情况,将所述各个网卡的各个队列映射到所述CPU的核。
全文摘要
本发明公开了一种映射方法及装置。其中,该方法包括确定CPU的核数,网卡个数,以及各个网卡的队列数;根据所述核数、所述网卡个数以及所述各个网卡的队列数,将所述各个网卡的各个队列与所述CPU的核相映射。通过本发明,在确定CPU的核数、网卡个数以及各个网卡的队列数之后,根据上述三个指标,将各个网卡的各个队列与CPU的核相映射,解决了相关技术中多核与多队列的映射没有合理方案的问题,进而使得多核平台上各网卡上的收发队列,能够在程序的调度下,自动绑定到对应的CPU上进行处理,大幅提升了多核平台的网络处理能力。
文档编号H04L12/861GK102984085SQ20121047740
公开日2013年3月20日 申请日期2012年11月21日 优先权日2012年11月21日
发明者姚翼雄, 陈大钊, 曾化龙 申请人:网神信息技术(北京)股份有限公司, 网神科技(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1