[发明专利]用于分割单链表以供分配存储器元素的系统和方法有效
申请号: | 201380022199.1 | 申请日: | 2013-04-19 |
公开(公告)号: | CN104254839B | 公开(公告)日: | 2018-10-12 |
发明(设计)人: | A·D·迪克西特;B·M·沃特斯 | 申请(专利权)人: | 微软技术许可有限责任公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F12/02 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 管琦琦 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 分割 单链表 分配 存储器 元素 系统 方法 | ||
提出了用于管理多个无锁列表结构中所存储的多个存储器元素的分配的系统和技术。可使这些无锁列表结构(诸如Slist)在多核处理器的操作系统环境中可访问并且可在系统中被分割。还可在这些无锁列表结构间对存储器元素进行分割。当核处理器(或其它处理元素)请求向自身分配存储器元素时,系统和/或方法可在无锁列表结构间搜索可用的存储器元素。当找到合适和/或可用的存储器元素时,系统可将可用的存储器元素分配到该发出请求的核处理器。可根据合适均衡度量(诸如,维持数量基本相等的存储器元素或避免资源的过度分配)对存储器资源进行动态均衡。
Slist是在操作系统中可用的LIFO(后进先出)列表的无锁实现的数据结构。Slist通常是对用以保持分配和释放无需保持任何旋转锁或其它同步原语的固定大小缓冲器的数据结构的期望选择。Slist还可以无锁单链表的形式用于大小可变的内容。在操作系统环境中还提供了其它能力——诸如构建在Slist上的后备列表。
然而,在一些场景中,使用Slist可能是不合期望的。举一个例子而言,通过多个处理器访问相同的Slist,单个Slist表头可变成服务器上高速缓存行争用热点。这在本机及Hyper-V虚拟化场景中都是可缩放性瓶颈。
在另一场景中,Slist主要用作分组高速缓存或固定大小的缓冲器储存库。然而,存在其中必须在此类无锁列表中维持更加复杂的数据结构或大小可能变化的资源的诸场景。为了诸如负载均衡、分组挪用、NUMA察觉以及此类其它算法需求的目的,可期望具有更多的操作而不仅仅是“入栈(Push)”和“出栈(Pop)”。这些通常通过用以管理多个Slist的另一数据结构抽象得以满足。后备列表是一个这样的示例。
后备列表维持固定大小缓冲器的高速缓存以供高速存储器分配和释放。为了处理器关联效益,一些操作系统还提供每个处理器的后备列表。这些每个处理器的后备列表一般(但非必须地)被全局列表备份以在每个处理器列表为空的情况包含备份分组。可期望具有额外的资源分配以具有相当大的全局备份列表来提供单个资源池的抽象。当需求减弱时,如果存在对存储器的需求,则这些额外的存储器分配可被释放。然而,在某些场景中资源不能被过度分配。对于限定其能力限度(诸如RAID控制器能处理的I/O请求的最大数目)的硬件驱动器而言尤其如此。先前算法使这些限度受Slist深度的束缚并且避免使用旋转锁。另外,分配和释放的额外开销导致存储器碎片并消耗CPU周期。出于这些原因,可能不可使用分配多于所需数量的后备列表。
下面呈现了本发明的简化概述,以便提供此处所描述的某些方面的基本概念。此概述不是所要求保护的主题的详尽的概述。既不是要指出所要求保护的主题的关键性元素,也不是要详细描述本发明的范围。唯一的目的是以简化形式呈现所要求保护的主题的某些概念,作为稍后呈现的比较详细的描述的前奏。
在一个实施例中,提出了用于管理多个无锁列表结构中所存储的多个存储器元素的分配的系统和方法。可使这些无锁列表结构(诸如Slist)在多核处理器的操作系统环境中可访问。在一些实施例中,无锁列表结构、Slist或类似物可被嵌入其它常见数据结构(如散列、树等)中以满足不同的资源分配和管理需求。
一些实施例可对该多个无锁列表结构进行分割并且在这些无锁列表结构间对存储器元素进行初始分割。当核处理器(或其它处理元素)请求向自身分配存储器元素时,系统和/或方法可在无锁列表结构间搜索可用的存储器元素。当发现合适和/或可用的存储器元素时,系统可将可用的存储器元素分配到该发出请求的核处理器。
在一些实施例中,该系统和/或方法可根据合适均衡度量随后在各种无锁列表结构间动态地均衡该组存储器元素。这种可能的度量用以在无锁列表结构间简单地维持数量基本相等的存储器元素是可能的。其它度量可包括其它负载均衡考虑——可能基于运行的处理类型、可能的争用情形或类似物(例如,诸如上述减少CPU争用或避免对存储器资源的过度分配)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201380022199.1/2.html,转载请声明来源钻瓜专利网。