[发明专利]一种用于流式数据并行处理的内存管理方法有效
| 申请号: | 201510427494.6 | 申请日: | 2015-07-20 |
| 公开(公告)号: | CN105094751B | 公开(公告)日: | 2018-01-09 |
| 发明(设计)人: | 彭群;张广兴;谢高岗 | 申请(专利权)人: | 中国科学院计算技术研究所 |
| 主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/50 |
| 代理公司: | 北京泛华伟业知识产权代理有限公司11280 | 代理人: | 王勇,李科 |
| 地址: | 100190 北*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 用于 数据 并行 处理 内存 管理 方法 | ||
技术领域
本发明涉及流式数据并行处理技术领域,具体地说,本发明涉及一种用于流式数据并行处理的内存管理方法。
背景技术
流式数据处理包括:网络数据包处理(下文中简称为数据包处理)、视频流处理、文本处理、消息处理等。随着网络基础设施和互联网产业的蓬勃发展,网络规模和服务复杂度都在不断增长。传统的流式数据处理技术已经无法满足高速网络带来的性能需求,基于多核处理器的流式数据并行处理技术已经成为了新的趋势。以数据包处理为例,图1示出了一个通用的数据包多核并行处理构架。参考图1,在这个数据包多核并行处理构架中,每个处理器核上都绑定了一个处理线程,所有处理线程共同构成了一个并行流水线布局。输入的数据包从流水线第一级开始,经过层层处理和中间调度,最终抵达流水线最后一级。在实际应用中,系统的流水线级数和每级流水线的线程个数都是可调整的。
另一方面,在并行处理技术领域,如何减少多个处理线程对共享资源的同时竞争,始终是一个核心问题,以数据包并行处理为代表的流式数据并行处理也不例外。在数据包并行处理中,最常见的共享资源就是内存。每个待处理的数据包都会被分配一块内存以存储相关数据,处理完毕后这块内存将被释放。在多核并行处理环境下,多个线程需要同时进行内存申请和释放,很容易造成对内存资源的持续竞争。并且,处理线程数目越多意味着竞争越激烈,造成的竞争开销也越大。对于高吞吐率的数据包处理系统而言,其每秒都需要处理上百万的数据包,从而带来上百万次的内存操作。因此,高效的内存管理方法对于提高数据包多核并行处理系统的性能来说至关重要。
现有技术中,通用内存管理方法主要有全局存储共享类型内存管理方法和线程局部缓存类型内存管理方法两大类,下面分别介绍。
1、全局存储共享类型内存管理方法
早期的内存管理器都是全局存储共享类型的,例如早期版本Glibc库中由Doug Lea实现的内存管理器。在全局存储共享类型内存管理方法下,内存管理器首先从操作系统管理的堆内存中预申请一块全局存储区域,并使用某种数据结构进行组织,例如分隔空闲列表。当同时有多个线程执行内存申请和释放操作时,为了避免发生资源冲突(例如返回了同一个内存块给不同线程)或破坏内部数据结构(例如内存块链表节点指针错乱),通常需要使用互斥锁机制来对每个操作进行同步,从而带来内存资源竞争开销。而数据包多核并行处理中,线程数目通常较多,容易造成激烈的资源竞争,带来非常大的内存竞争开销。因此,全局共享类型的内存管理器显然不适合用于以数据包多核并行处理为代表的流式数据并行处理应用场景。
2、线程局部缓存类型内存管理方法
为了减少全局存储共享类型内存管理方法在多线程并发环境下的竞争开销,以线程局部缓存为基础的针对多线程优化的内存分配器逐渐成为了主流,如Hoard内存管理器和开源的TCMalloc内存管理器,以及较新版本的Glibc库中的内存管理模块ptmalloc等。这些内存管理方案的基本原理都是加入线程局部缓存,即内存管理器除了维护一块全局堆内存以外,还会为应用程序的每个线程单独维护一块相关联的线程局部缓存。
当应用程序申请内存时,内存管理器会首先检查申请内存的线程相关联的局部缓存,若不为空则从局部缓存中直接获取,否则才从全局堆内存中获取。由于是从自己的局部缓存中取,因此通常情况下都不需要进行加锁。在这种设计下,只要大部分的内存申请都是通过局部缓存,则内存分配性能就可以非常高。
当应用程序释放内存时,同样地,内存管理器需要尝试将该内存块释放到线程局部缓存,以通过局部化写入来避免加锁,同时也能够通过填充局部缓存来为后续的内存申请做好准备。与内存申请不同的是,内存释放可以有两种不同的方案,第一种是释放回该内存块原始申请时所属的线程缓存,第二种是直接释放到本线程自己的局部缓存。
线程局部缓存类型的内存管理在一般的多线程环境下能够有效地提升性能,但在实践中发现,对于以数据包多核并行处理为代表的流式数据并行处理应用场景,传统的线程局部缓存方案仍然有很大提升空间。
发明内容
因此,本发明的任务是提供一种特别适合于流式数据并行处理的内存管理解决方案。
根据本发明的一个方面,提供了一种用于流式数据并行处理的内存管理方法,包括下列步骤:
1)根据流式数据并行处理流水线的构架为生产者和消费者建立一一对应的对等关系,为建立了对等关系的每个生产者建立私有的局部缓存池,为建立了对等关系的每个消费者建立私有的局部缓存池;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510427494.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种事件处理的方法和装置
- 下一篇:一种自适应预读方法及装置
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置





