CN106020974A - Numa平台的内存缓存方法及系统 - Google Patents
Numa平台的内存缓存方法及系统 Download PDFInfo
- Publication number
- CN106020974A CN106020974A CN201610308324.0A CN201610308324A CN106020974A CN 106020974 A CN106020974 A CN 106020974A CN 201610308324 A CN201610308324 A CN 201610308324A CN 106020974 A CN106020974 A CN 106020974A
- Authority
- CN
- China
- Prior art keywords
- thread
- distributor
- worker
- task
- subregion
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种NUMA平台的内存缓存方法,所述方法包括:通过派发者线程接收来自网卡的任务请求,NUMA平台中每个分区中运行一个对网卡进行监听的派发者线程;将所述派发者线程的任务队列中的所述任务请求派发给工作者线程,通过所述工作者线程从所述任务队列中取出所述任务请求并进行处理,所述工作者线程为所述派发者线程下属的线程;通过所述工作者线程将缓存对象通过与缓存对象处于同一分区的网卡发出。本发明还公开了一种NUMA平台的内存缓存系统,能够最大限度减少远端IO访问,并且在线程之间进行相应的负载均衡,提高内存缓存系统的吞吐量和降低系统延迟。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种NUMA平台的内存缓存方法及系统。
背景技术
在非一致性内存访问(NUMA,Non Uniform Memory Access Architecture)平台上,不仅仅存在访存的不对称性,而且在输入输出(IO)访问方面也具有不对称性。IO访问不对称性对内存缓存系统的性能有重要的影响。内存缓存系统利用内存来存储访问代价昂贵的数据,在需要的时候直接返回暂存的数据,能够作为中间层加速系统的整体性能。目前并没有一种针对NUMA平台特点而设计的内存缓存系统。
对于包含8个节点、2个分区的双网卡NUMA平台,节点0-3属于分区1,节点4-7属于分区2。由于NUMA平台的特点,当工作者线程和其处理的数据缓存在不同分区中时,例如工作者线程运行在节点7(分区2)而对象缓存在节点0(分区1),由于分区间的数据传输开销比较大,造成网络数据传输速度比较慢。
因此,针对NUMA平台上的非对称IO访问问题,需要一种能够适应NUMA特点的、多网卡情况下的内存缓存方案。
发明内容
为解决现有存在的技术问题,本发明实例提供一种NUMA平台的内存缓存方法及系统。
为达到上述目的,本发明实施的技术方案是这样实现的:
一种NUMA平台的内存缓存方法,所述方法包括:
通过派发者线程接收来自网卡的任务请求,NUMA平台中每个分区中运行一个所述派发者线程,所述分区是网卡与其临近的NUMA节点构成的区域;
将所述派发者线程的任务队列中的所述任务请求派发给工作者线程,通过所述工作者线程从所述任务队列中取出所述任务请求并进行处理,所述工作者线程为所述派发者线程下属的线程;
通过所述工作者线程将缓存对象通过与所述缓存对象所在同一分区的网卡发出。
其中,通过派发者线程接收来自网卡的任务请求之前,所述方法还包括:建立所述派发者线程及其下属的所述工作者线程,所述派发者线程与所述NUMA平台的分区一一对应,一个所述派发者线程下属有至少一个所述工作者线程。
其中,所述方法还包括:检测到有派发者线程空闲时,则从检测为繁忙的派发者线程或者工作者线程拉取任务到所述空闲的派发者线程或者工作者线程。
其中,所述方法还包括:实时监测每个所述派发者线程任务队列的任务数;在所述任务数低于预设的低水印时,则认为所述派发者线程为空闲;在所述任务数高于预设的高水印时,则认为所述派发者线程为繁忙。
其中,所述NUMA平台包括两个或两个以上的网卡。
其中,所述将所述派发者线程的任务队列中的所述任务请求派发给工作者线程,包括:所述派发者线程根据任务请求的数据包含的所属分区位置信息,优先选择与数据所在位置处于同一分区的工作者线程进行处理。
一种NUMA平台的内存缓存系统,所述系统包括:
接收模块,用于通过派发者线程接收来自网卡的任务请求,NUMA平台中每个分区上运行一个所述派发者线程,所述分区是网卡与其临近的NUMA节点构成的区域;
处理模块,用于将所述派发者线程的任务队列中的所述任务请求派发给工作者线程,通过所述工作者线程从所述任务队列中取出所述任务请求并进行与数据相关处理,所述工作者线程为所述派发者线程下属的线程;
发送模块,用于通过所述工作者线程将缓存对象通过与所述缓存对象所在同一分区的网卡发出。
其中,所述系统还包括:建立模块,用于建立所述派发者线程及其下属的工作者线程,所述派发者线程与所述NUMA平台的分区一一对应,一个所述派发者线程下属有至少一个所述工作者线程。
其中,所述系统还包括:负载均衡模块,用于检测到有派发者线程空闲时,则从检测为繁忙的派发者线程或者工作者线程拉取任务到所述空闲的派发者线程或者工作者线程。
其中,所述负载均衡模块还用于实时监测每个所述派发者线程任务队列的任务数;在所述任务数低于预设的低水位时,则认为所述派发者线程为空闲;在所述任务数高于预设的高水位时,则认为所述派发者线程为繁忙。
其中,所述NUMA平台包括两个或两个以上的网卡。
其中,所述处理模块,用于将所述派发者线程的任务队列中的所述任务请求派发给工作者线程,包括:所述派发者线程根据任务请求的数据包含的所属分区位置信息,优先选择与数据所在位置处于同一分区的工作者线程进行处理。
本发明实例针对NUMA平台上的非对称IO访问问题,通过对应不同网卡的派发者线程及其下属的工作线程,充分利用NUMA平台的特点,首次提出一种在NUMA平台下的内存缓存方法及系统,本发明实例能够最大限度减少远端IO访问,并且在线程之间进行相应的负载均衡,提高内存缓存系统的吞吐量和降低系统延迟。
附图说明
在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。具有不同字母后缀的相似附图标记可表示相似部件的不同示例。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。
图1为本发明实施例基于NUMA平台的内存缓存方法的流程示意图;
图2为本发明实例双网卡情况下内存缓存系统的架构示意图;
图3为本发明实施例基于NUMA平台的内存缓存系统的组成结构示意图;
图4为双网卡NUMA平台的架构示意图。
具体实施方式
本发明实施例的主要思想是:根据NUMA平台下IO访问的非对称性,充分利用NUMA平台的特点,减少内存缓存系统中线程的非对称访问,提出一种在NUMA平台下的内存缓存方法及系统,以最大限度减少远端IO访问,并且本发明实施例的内存缓存方法及系统任务处理时在线程之间还进行相应的负载均衡,以提高系统吞吐量并降低系统延迟。
如图1所示,本发明实例还提供了一种基于NUMA平台的内存缓存方法,在NUMA平台机构的基础上实现,主要可以包括如下步骤:
步骤101:通过派发者线程(Dispatcher)接收来自网卡(NIC,NetworkInterface Card)的任务请求,NUMA平台中每个分区上运行一个所述派发者线程;
这里,所述NUMA平台包括含有至少两个或两个以上网卡的NUMA平台。派发者线程接收同一分区的网卡的任务请求。派发者线程在每个分区中运行的。所谓分区就是网卡与其临近的NUMA节点所构成的区域。在图4中所示的互联模块连接的两部分,这两部分分别运行一个派发者线程监听。分区中可以有一个或者多个NUMA节点。所述分区是网卡与其临近的NUMA节点构成的区域。步骤102:将所述派发者线程的任务队列中的所述任务请求派发给工作者线程(Worker),通过所述工作者线程从所述任务队列中取出所述任务请求并进行处理,所述工作者线程为所述派发者线程下属的线程;
这里,通过派发者线程接收任务请求后,将所述任务请求(Request)加入到所述派发者线程的任务队列中,之后,通过派发者线程将所述任务队列中的任务请求派发给下属的工作者线程。所述派发者线程下属有至少一个工作者线程,一般来说,一个派发者线程下属有多个工作者线程。例如,在如图2所示的双网卡实例中,每个分区中运行一个所述派发者线程,每个所述派发者线程下属有四个工作者线程。
其中,不同派发者线程之间能够相互通信。当派发者线程任务繁忙时,空闲的派发者线程可以主动从该派发者线程拉取任务进行处理。派发者线程有各自的任务队列;当任务队列中的任务数低于预设的某个低数值(低水印),即此派发者线程比较空闲,查看另外一个派发者线程的队列的任务数是否高于预设的某个高数值(高水印),如果高了,即此派发者线程比较繁忙,比较空闲的派发者线程就从该比较繁忙的任务队列中拉取任务过来处理。
步骤103:通过所述工作者线程将缓存对象通过与所述缓存对象处于同处一个分区的网卡发出。
这里,在步骤101之前,所述方法还包括:建立所述派发者线程及其下属的工作者线程,所述派发者线程与NUMA平台的分区一一对应。
被请求的数据中含有所属分区位置信息,派发者线程根据数据中的位置信息,优先选择数据所在分区的工作者线程进行处理;当派发者线程繁忙的时候进行负载均衡。
如图3所示,本发明实例还提供了一种基于NUMA平台的内存缓存系统,所述系统可以包括:接收模块,用于通过派发者线程接收来自网卡的任务请求,NUMA平台中每个分区上运行一个所述派发者线程;处理模块,用于将所述派发者线程的任务队列中的所述任务请求派发给工作者线程,通过所述工作者线程从所述任务队列中取出所述任务请求并进行处理,所述工作者线程为所述派发者线程下属的线程;发出模块,用于通过所述工作者线程将缓存对象通过与所述缓存对象所在分区的网卡发出。这里,所述NUMA平台包括含有两个或两个以上网卡的NUMA平台。
其中,所述系统还包括:建立模块,用于建立所述派发者线程及其下属的工作者线程,所述派发者线程与所述NUMA平台的分区一一对应,一个所述派发者线程下属有至少一个所述工作者线程。
其中,所述系统还包括:负载均衡模块,用于在检测到有派发者线程的任务队列为空时,则从其他的派发者线程拉取任务到任务队列为空的派发者线程中。这里,所述负载均衡模块还用于实时监测每个所述派发者线程的任务队列。
这里,所述处理模块,用于将所述派发者线程的任务队列中的所述任务请求派发给工作者线程,包括:所述派发者线程根据任务请求的数据包含的所属分区位置信息,优先选择与数据所在位置处于同一分区的工作者线程进行处理。
下面以双网卡的NUMA平台的情况为例,对本发明实施例的具体实现过程进行详细说明。
如图4所示,为双网卡情况下的NUMA平台架构示意图。其中,QPI表示QuickPath Interconnect,HT表示HyperTransport,两者都是芯片间的互联方式。芯片间的连接方式不限于QPI和HT,也可以是其他方式。
对于如图4所示的双网卡NUMA平台,如图2所示,其内存缓存方法具体实现过程如下:
A:针对每个分区运行一个派发者线程,如图2所示,两个派发者线程分别接收来自对应分区的网卡的任务请求。
B:每个派发者线程通过任务队列将任务请求派发给下属的工作者线程,工作者线程从任务队列中取出任务,分析任务内容,进行相应的处理工作。
C:工作者线程在任务请求处理完毕后,将相应缓存对象从与缓存对象所在同一分区的网卡发送出去。
D:负载均衡:两个任务派发者线程之间可以相互通信;当其中一个派发者线程比较繁忙的时候,另外一个空闲的派发者线程或者工作者线程可以主动拉取任务进行处理。
本发明实施例的内存缓存系统及方法在网站加速方面具有重要应用:将本发明实施例的内存缓存系统置于网站前端应用程序和后端数据库之间,用于缓存数据库的访问结果,减少数据库访问次数和访问延迟。例如,Facebook、YouTube、Wikipedia、Yahoo等等都在使用分布式缓存(Memcached)来支持其每天数亿级的页面访问。本发明实施例的内存缓存系统也可以作为Hadoop、MapReduce甚至虚拟机的加速系统。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (12)
1.一种非一致性内存访问NUMA平台的内存缓存方法,其特征在于,所述方法包括:
通过派发者线程接收来自网卡的任务请求,NUMA平台中每个分区中运行一个所述派发者线程,所述分区是网卡与其临近的NUMA节点构成的区域;
将所述派发者线程的任务队列中的所述任务请求派发给工作者线程,通过所述工作者线程从所述任务队列中取出所述任务请求并进行处理,所述工作者线程为所述派发者线程下属的线程;
通过所述工作者线程将缓存对象通过与所述缓存对象处于同处一个分区的网卡发出。
2.根据权利要求1所述的方法,其特征在于,通过派发者线程接收来自网卡的任务请求之前,所述方法还包括:建立所述派发者线程及其下属的所述工作者线程,所述派发者线程与所述NUMA平台的分区一一对应,一个所述派发者线程下属有至少一个所述工作者线程。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测到有派发者线程空闲时,则进行负载均衡操作。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:实时监测每个所述派发者线程任务队列的任务数;在所述任务数低于预设的低水位时,则认为所述派发者线程为空闲;在所述任务数高于预设的高水位时,则认为所述派发者线程为繁忙。
5.根据权利要求1所述的方法,其特征在于,所述NUMA平台包括两个或两个以上分属于不同分区的网卡。
6.根据权利要求1所述的方法,其特征在于,所述将所述派发者线程的任务队列中的所述任务请求派发给工作者线程,包括:
所述派发者线程根据任务请求的缓存数据包含的所属分区位置信息,优先选择与数据所在位置处于同一分区的工作者线程进行处理。
7.一种非一致性内存访问NUMA平台的内存缓存系统,其特征在于,所述系统包括:
接收模块,用于通过派发者线程接收来自网卡的任务请求,NUMA平台中每个分区上运行一个所述派发者线程,所述分区是网卡与其临近的NUMA节点构成的区域;
处理模块,用于将所述派发者线程的任务队列中的所述任务请求派发给工作者线程,通过所述工作者线程从所述任务队列中取出所述任务请求并进行处理,所述工作者线程为所述派发者线程下属的线程;
发出模块,用于通过所述工作者线程将缓存对象通过与所述缓存对象所在同一分区的网卡发出。
8.根据权利要求7所述的系统,其特征在于,所述系统还包括:建立模块,用于建立所述派发者线程及其下属的工作者线程,所述派发者线程与所述NUMA平台的分区一一对应,一个所述派发者线程下属有至少一个所述工作者线程。
9.根据权利要求7所述的系统,其特征在于,所述系统还包括:负载均衡模块,用于检测到有派发者线程空闲时,则从检测为繁忙的派发者线程或者工作者线程拉取任务到所述空闲的派发者线程或者工作者线程。
10.根据权利要求9所述的系统,其特征在于,所述负载均衡模块还用于实时监测每个所述派发者线程任务队列的任务数;在所述任务数低于预设的低水印时,则认为所述派发者线程为空闲;在所述任务数高于预设的高水印时,则认为所述派发者线程为繁忙。
11.根据权利要求7所述的系统,其特征在于,所述NUMA平台包括两个或两个以上的网卡。
12.根据权利要求6所述的系统,其特征在于,所述处理模块,用于将所述派发者线程的任务队列中的所述任务请求派发给工作者线程,包括:所述派发者线程根据任务请求的数据包含的所属分区位置信息,优先选择与数据所在位置处于同一分区的工作者线程进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610308324.0A CN106020974A (zh) | 2016-05-11 | 2016-05-11 | Numa平台的内存缓存方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610308324.0A CN106020974A (zh) | 2016-05-11 | 2016-05-11 | Numa平台的内存缓存方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106020974A true CN106020974A (zh) | 2016-10-12 |
Family
ID=57099373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610308324.0A Pending CN106020974A (zh) | 2016-05-11 | 2016-05-11 | Numa平台的内存缓存方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106020974A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107038061A (zh) * | 2017-04-14 | 2017-08-11 | 上海交通大学 | 一种基于numa和硬件辅助技术的高效网络io处理方法 |
CN108021429A (zh) * | 2017-12-12 | 2018-05-11 | 上海交通大学 | 一种基于numa架构的虚拟机内存及网卡资源亲和度计算方法 |
CN112306699A (zh) * | 2019-07-29 | 2021-02-02 | 华为技术有限公司 | 访问临界资源的方法及装置、计算机设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1547348A (zh) * | 2003-12-10 | 2004-11-17 | 中国科学院计算技术研究所 | 基于智能网卡的计算机间用户级并行通信的方法 |
CN103605568A (zh) * | 2013-10-29 | 2014-02-26 | 北京奇虎科技有限公司 | 一种多线程管理方法及装置 |
CN104050091A (zh) * | 2012-12-28 | 2014-09-17 | 华耀(中国)科技有限公司 | 基于非一致性内存访问系统的网络设备及其设置方法 |
CN104199718A (zh) * | 2014-08-22 | 2014-12-10 | 上海交通大学 | 一种基于numa高性能网络缓存资源亲和度的虚拟处理器的调度方法 |
CN105159841A (zh) * | 2014-06-13 | 2015-12-16 | 华为技术有限公司 | 一种内存迁移方法及装置 |
-
2016
- 2016-05-11 CN CN201610308324.0A patent/CN106020974A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1547348A (zh) * | 2003-12-10 | 2004-11-17 | 中国科学院计算技术研究所 | 基于智能网卡的计算机间用户级并行通信的方法 |
CN104050091A (zh) * | 2012-12-28 | 2014-09-17 | 华耀(中国)科技有限公司 | 基于非一致性内存访问系统的网络设备及其设置方法 |
CN103605568A (zh) * | 2013-10-29 | 2014-02-26 | 北京奇虎科技有限公司 | 一种多线程管理方法及装置 |
CN105159841A (zh) * | 2014-06-13 | 2015-12-16 | 华为技术有限公司 | 一种内存迁移方法及装置 |
CN104199718A (zh) * | 2014-08-22 | 2014-12-10 | 上海交通大学 | 一种基于numa高性能网络缓存资源亲和度的虚拟处理器的调度方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107038061A (zh) * | 2017-04-14 | 2017-08-11 | 上海交通大学 | 一种基于numa和硬件辅助技术的高效网络io处理方法 |
CN107038061B (zh) * | 2017-04-14 | 2019-07-05 | 上海交通大学 | 一种基于numa和硬件辅助技术的高效网络io处理方法 |
CN108021429A (zh) * | 2017-12-12 | 2018-05-11 | 上海交通大学 | 一种基于numa架构的虚拟机内存及网卡资源亲和度计算方法 |
CN112306699A (zh) * | 2019-07-29 | 2021-02-02 | 华为技术有限公司 | 访问临界资源的方法及装置、计算机设备及可读存储介质 |
CN112306699B (zh) * | 2019-07-29 | 2024-04-12 | 华为技术有限公司 | 访问临界资源的方法及装置、计算机设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103914399B (zh) | 一种并行计算系统中的磁盘缓存方法及装置 | |
CN103067293B (zh) | 负载均衡设备的连接管理和复用的方法和系统 | |
CN106170016A (zh) | 一种处理高并发数据请求的方法和系统 | |
CN106503058B (zh) | 一种数据加载方法、终端和计算集群 | |
CN103294548B (zh) | 一种基于分布式文件系统的io请求调度方法和系统 | |
CN107451853B (zh) | 一种红包实时派发的方法、装置、系统及存储介质 | |
JP5775481B2 (ja) | 情報処理システム及びその処理方法 | |
CN109697122A (zh) | 任务处理方法、设备及计算机存储介质 | |
EP3295629B1 (en) | Query plan and operation-aware communication buffer management | |
CN102299959A (zh) | 一种数据库集群系统的负载均衡实现方法和装置 | |
CN106020974A (zh) | Numa平台的内存缓存方法及系统 | |
CN105491150A (zh) | 基于时间序列的负载均衡处理方法及系统 | |
CN102314336A (zh) | 一种数据处理方法和系统 | |
SE515265C2 (sv) | System och förfarande för behandling av signaldata samt kommunikationssystem omfattande ett signaldatabehandlingssystem | |
CN108900626A (zh) | 一种云环境下数据存储方法、装置及系统 | |
CN110427270A (zh) | 一种面向rdma网络下分布式连接算子的动态负载均衡方法 | |
CN103473848B (zh) | 一种基于高并发的网络发票查验构架及方法 | |
CN100539538C (zh) | 具有链表处理器的存储器管理系统 | |
CN108153494B (zh) | 一种io请求处理方法及装置 | |
CN108093047B (zh) | 数据发送方法、装置、电子设备及中间件系统 | |
CN105144099B (zh) | 通信系统 | |
JP6668456B2 (ja) | 処理システムおよび処理方法 | |
CN109325266A (zh) | 面向在线云服务的响应时间分布预测方法 | |
CN102932389A (zh) | 一种请求处理方法、装置及服务器系统 | |
CN110908939B (zh) | 一种报文处理方法、装置及网络芯片 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161012 |
|
RJ01 | Rejection of invention patent application after publication |