CN104254839B - 用于分割单链表以供分配存储器元素的系统和方法 - Google Patents

用于分割单链表以供分配存储器元素的系统和方法 Download PDF

Info

Publication number
CN104254839B
CN104254839B CN201380022199.1A CN201380022199A CN104254839B CN 104254839 B CN104254839 B CN 104254839B CN 201380022199 A CN201380022199 A CN 201380022199A CN 104254839 B CN104254839 B CN 104254839B
Authority
CN
China
Prior art keywords
lock
memory element
list structure
memory
group
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.)
Active
Application number
CN201380022199.1A
Other languages
English (en)
Other versions
CN104254839A (zh
Inventor
A·D·迪克西特
B·M·沃特斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN104254839A publication Critical patent/CN104254839A/zh
Application granted granted Critical
Publication of CN104254839B publication Critical patent/CN104254839B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)

Abstract

提出了用于管理多个无锁列表结构中所存储的多个存储器元素的分配的系统和技术。可使这些无锁列表结构(诸如Slist)在多核处理器的操作系统环境中可访问并且可在系统中被分割。还可在这些无锁列表结构间对存储器元素进行分割。当核处理器(或其它处理元素)请求向自身分配存储器元素时,系统和/或方法可在无锁列表结构间搜索可用的存储器元素。当找到合适和/或可用的存储器元素时,系统可将可用的存储器元素分配到该发出请求的核处理器。可根据合适均衡度量(诸如,维持数量基本相等的存储器元素或避免资源的过度分配)对存储器资源进行动态均衡。

Description

用于分割单链表以供分配存储器元素的系统和方法
背景
Slist是在操作系统中可用的LIFO(后进先出)列表的无锁实现的数据结构。Slist通常是对用以保持分配和释放无需保持任何旋转锁或其它同步原语的固定大小缓冲器的数据结构的期望选择。Slist还可以无锁单链表的形式用于大小可变的内容。在操作系统环境中还提供了其它能力——诸如构建在Slist上的后备列表。
然而,在一些场景中,使用Slist可能是不合期望的。举一个例子而言,通过多个处理器访问相同的Slist,单个Slist表头可变成服务器上高速缓存行争用热点。这在本机及Hyper-V虚拟化场景中都是可缩放性瓶颈。
在另一场景中,Slist主要用作分组高速缓存或固定大小的缓冲器储存库。然而,存在其中必须在此类无锁列表中维持更加复杂的数据结构或大小可能变化的资源的诸场景。为了诸如负载均衡、分组挪用、NUMA察觉以及此类其它算法需求的目的,可期望具有更多的操作而不仅仅是“入栈(Push)”和“出栈(Pop)”。这些通常通过用以管理多个Slist的另一数据结构抽象得以满足。后备列表是一个这样的示例。
后备列表维持固定大小缓冲器的高速缓存以供高速存储器分配和释放。为了处理器关联效益,一些操作系统还提供每个处理器的后备列表。这些每个处理器的后备列表一般(但非必须地)被全局列表备份以在每个处理器列表为空的情况包含备份分组。可期望具有额外的资源分配以具有相当大的全局备份列表来提供单个资源池的抽象。当需求减弱时,如果存在对存储器的需求,则这些额外的存储器分配可被释放。然而,在某些场景中资源不能被过度分配。对于限定其能力限度(诸如RAID控制器能处理的I/O请求的最大数目)的硬件驱动器而言尤其如此。先前算法使这些限度受Slist深度的束缚并且避免使用旋转锁。另外,分配和释放的额外开销导致存储器碎片并消耗CPU周期。出于这些原因,可能不可使用分配多于所需数量的后备列表。
概述
下面呈现了本发明的简化概述,以便提供此处所描述的某些方面的基本概念。此概述不是所要求保护的主题的详尽的概述。既不是要指出所要求保护的主题的关键性元素,也不是要详细描述本发明的范围。唯一的目的是以简化形式呈现所要求保护的主题的某些概念,作为稍后呈现的比较详细的描述的前奏。
在一个实施例中,提出了用于管理多个无锁列表结构中所存储的多个存储器元素的分配的系统和方法。可使这些无锁列表结构(诸如Slist)在多核处理器的操作系统环境中可访问。在一些实施例中,无锁列表结构、Slist或类似物可被嵌入其它常见数据结构(如散列、树等)中以满足不同的资源分配和管理需求。
一些实施例可对该多个无锁列表结构进行分割并且在这些无锁列表结构间对存储器元素进行初始分割。当核处理器(或其它处理元素)请求向自身分配存储器元素时,系统和/或方法可在无锁列表结构间搜索可用的存储器元素。当发现合适和/或可用的存储器元素时,系统可将可用的存储器元素分配到该发出请求的核处理器。
在一些实施例中,该系统和/或方法可根据合适均衡度量随后在各种无锁列表结构间动态地均衡该组存储器元素。这种可能的度量用以在无锁列表结构间简单地维持数量基本相等的存储器元素是可能的。其它度量可包括其它负载均衡考虑——可能基于运行的处理类型、可能的争用情形或类似物(例如,诸如上述减少CPU争用或避免对存储器资源的过度分配)。
当与本申请中呈现的附图结合阅读时,在下面的详细描述中呈现了本系统的其它特征和方面。
附图说明
示例性实施例在所参考的附图中示出。此处公开的实施例和附图旨在被认为是说明性而非限制性的。
图1示出其中本申请的系统和技术可被托管及操作的示例性计算机系统。
图2A是针对Slist管理的自适应散列结构系统和方法的一个实施例。
图2B是针对Slist管理的动态列表交换系统和方法的一个实施例。
图3描绘如图2A中可实现的自适应散列系统的一个实施例中的流程图。
详细描述
如在此使用的,术语“组件”、“系统”、“接口”等指的是计算机相关的实体,它们可以是硬件、软件(例如,执行中的)和/或固件。例如,组件可以是运行在处理器上的进程、处理器、对象、可执行码、程序、和/或计算机。作为说明,在服务器上运行的应用和服务器两者都可以是组件。一个或多个组件可以驻留在进程中,组件可以位于一个计算机内和/或分布在两个或更多计算机之间。
现在参考附图来描述所要求保护的主题,所有附图中使用相同的附图标记来指代相同的元素。在以下描述中,为解释起见,阐明了众多具体细节以提供对本发明的全面理解。然而,很明显,所要求保护的主题可以在没有这些具体细节的情况下实施。在其他情况下,以框图形式示出了各个已知的结构和设备以便于描述本发明。
为了解决潜在的资源瓶颈,本申请公开了允许有效及高效使用Slist的数个实施例。在一个实施例中,可以以解决上述限制同时仍维持资源Slist的无锁属性,减少高速缓存行争用、固定数量分配,以及列表间资源共享/挪用的有效方式对Slist进行分割。在其它实施例中,这些技术可利用处理器关联和NUMA察觉以供最优性能。
图1描绘了示出多个组、NUMA节点(即,处理器插槽)、多核系统100的计算机系统图。如示出的,系统100包括2个组,例如,组0(102a)和组1(102b)。在一个实施例中,每一组可包括至多64个(例如,标记为0到63)逻辑处理器(LP)。
应理解,如果存在的逻辑存储器少于64个,合适的系统可具有1个组。类似地,系统可具有多于两个的组。NUMA节点被完全包含在组中,从而使一组可具有少于64个逻辑处理器是有可能的。取决于系统中所包含的逻辑处理器的数目,系统可具有数个(多于两组)组。
如示出的,每一组可进一步包括节点104(即,处理器插槽)。图中的诸节点也可称作NUMA(非统一存储器访问)节点。在许多当前系统中,NUMA节点遍及跨越所有各组的整个系统被编号为0至63;然而未来系统可具有不同的节点编号并且本申请不受限于这样的当前规范。每一此类节点可进一步包括核106。在这一实施例中,每一LP可以是核或硬件线程。在每一组中逻辑处理器被唯一地编号为0至63。
在许多计算环境中,具有多于一个物理处理器的诸系统或者具有有多个核的物理处理器的诸系统可给操作系统提供多个逻辑处理器。从操作系统、应用或驱动器的角度而言,逻辑处理器是一个逻辑计算引擎。“核”(或者“核处理器”)是一个处理器单元,其包括一个或多个逻辑处理器。物理处理器可包括一个或多个核。物理处理器可被解释为等同于处理器封装、插槽或CPU。
此外,核0到核C-1可共享存储器资源108。给定节点上诸核与存储器之间的本地存储器访问时间可快于到其它节点的存储器访问时间。诸节点之间的连接110可以是这样:所有节点可访问所有其他节点中的存储器但存储器访问时间可比访问本地存储器慢。
应理解,可不必完全连接所有节点,并且进一步,从一个节点到另一节点的存储器访问可需要遍历附加节点以访问第三个节点上的存储器。
Slist管理
本申请公开了用于有效管理无锁列表结构、Slist或类似物的多个实施例。图2A和2B描绘了两个此类实施例——用于Slist管理的自适应散列函数(图2A)和动态出栈和入栈结构(图2B)。在这些实施例中,期望在无锁列表(如Slist)中提供资源或分组管理以便:
减少CPU高速缓存行争用;
避免对资源的过度分配;
在各列表间提供资源共享及挪用以适应具有最大限度的资源需求;
为NUMA拓扑察觉、处理器关联等提供附加的逻辑;和/或
提供特定的存储器分配需求(如分配器),例如,在4GB范围以内以及此类其它限度。不期望附加的存储器分配和释放,附加的存储器分配和释放可导致是个问题(例如,尤其带有4GB的限度)的分割。
一般而言,本申请的技术和实施例旨在在其它常见数据结构(如散列、树等)中嵌入无锁列表结构、Slist或类似物以满足不同的资源分配和管理需求。
在本申请的多个实施例中,提出了用于管理多个无锁列表结构中所存储的多个存储器元素的分配的系统和方法。可使这些无锁列表结构(诸如Slist)在多核处理器的操作系统环境中可访问。
这些实施例可对该多个无锁列表结构进行分割并且在这些无锁列表结构间对存储器元素进行初始分割。当核处理器(或其它处理元素)请求向自身分配存储器元素时,系统和/或方法可在无锁列表结构间搜索可用的存储器元素。当找到合适和/或可用的存储器元素时,系统可将可用的存储器元素分配到该发出请求的核处理器。无锁列表结构的这种分割可旨在减少CPU争用。
该系统和/或方法可根据合适均衡度量随后在各种无锁列表结构间动态地均衡该组存储器元素。这种可能的度量用以在无锁列表结构间简单地维持数量基本相等的存储器元素是可能的。其它度量可包括其它负载均衡考虑——可能基于运行的处理的类型、可能的争用情形或类似物(例如,诸如上述避免存储器资源的过度分配)。
在另一实施例中,可在计算机系统(诸如图1中所示系统或在任何其它合适的多核处理系统)中实现合适的分配模块。仅作为一个示例,分配模块可在核处理器之一上执行并且可从那里实现动态存储器分配。如下文将更详细讨论的,分配模块可管理在各种数据结构(例如,动态散列结构或动态列表交换结构或类似结构)中对存储器元素进行动态分割。
对Slist管理的自适应散列
图2A描绘用于管理Slist的自适应、动态散列系统和技术(200)。如示出的,散列模块202连接至一个或多个Slist204(例如,Slist0到Slist3)。每一Slist可进一步包括零个或更多个存储器元素206。这些存储器元素206中的每一个可以或者是固定大小的缓冲器或者是可变大小的缓冲器和/或数据结构。
在这一实施例中,通过与系统相关联的方式进行键控,通常以涉及计算系统拓扑和/或多核处理器架构的方式来维持不同Slist的这一散列。例如,图2A描绘了两个这样的拓扑:(1)通过处理器索引(如针对标记为208a的组0用实线箭头所示出的)进行键控;或者(2)通过NUMA节点编号(如针对进一步包括节点210和LP 212的标记为208b的组0用虚线箭头所示出的)进行键控。在这些实施例中,将索引与系统拓扑相关的指针可优化访问时间以最小化延迟以及与系统中其它处理器的争用。如可看出的,根据用于负载均衡和/或存储器资源分配的合适度量,可在各Slist(例如,214)之间调整和/或均衡存储器元素。
在一个实施例中,把单个逻辑Slist抽象成多个是有可能的。在这样的情况下,如果一个特定Slist为空,则在不同的列表之间移动列表实体从而使分配不失败是可能的。在分配失败之前可以搜索散列中的所有Slist。应理解,不同的散列算法还可迎合系统拓扑和优化目标(诸如NUMA或这些列表的处理器关联性扩展)。
图3描绘了在散列结构中处理Slist的一种可能的流程图。在步骤300处,系统开始分配存储器资源,并且在302处系统可基于期望的键(例如,CPU编号或NUMA ID,如图2A中所指示的)来计算散列索引。Slist可随后被指派给散列(索引),如所计算的。
在306处,系统可就特定Slist是否为空或没有存储器元素进行查询,并且如果结果肯定,系统可迭代遍历其它Slist来寻找合适的资源。一旦找到,比方说可从下一非空Slist分配资源。
在Slist非空的情况下,在310处可从该Slist分配资源。无论在步骤310处还是在步骤312处进行分配,在步骤314处系统都可询问分配是否成功。如果没成功,在320处系统可当时返回错误消息并在322处结束处理。
然而,如果分配成功了,在316处存储器资源可被用来分配。一旦不再需要存储器资源,系统就可任选地把资源释放回原始的或施主Slist并在322处结束处理。
动态列表交换
图2B示出用于有效管理Slist使用动态列表交换数据结构(250)的又一实施例。如可见的,可维持两个分开的Slist(例如,一个用于入栈(释放)252a而一个用于出栈(获取/分配)252b操作)并且每一Slist可具有用以分配的存储器元素254。两个不同的指针(256a和256b)可被用来访问这些Slist。在操作过程中,如果在尝试的分配期间出栈Slist为空(或者用以均衡存储器资源的一些其它合适的度量),交换指针从而使先前的入栈Slist现在变成出栈Slist(反之亦然)是可能的。从那一刻起,尝试从这一新出栈Slist进行分配现在是可能的。这一技术类同于维护不同的“分配”和“释放”列表并在“分配”列表为空时交换它们。
上文所描述的包括本发明的示例。当然,不可能出于描述所要求保护的主题的目的而描述组件或方法的每个可能的组合,但是,本领域技术人员可以认识到,本发明的许多进一步的组合和置换都是可以的。因此,所要求保护的主题旨在包含在所附权利要求书的精神和范围内的所有这样的更改、修改和变化。
具体来说,对于由上述组件、设备、电路、系统等等执行的各种功能,除非另外指明,否则用于描述这些组件的术语(包括对“装置”的引用)旨在对应于执行所描述的执行此处在所要求保护的主题的示例性方面所示的功能的组件的指定功能(例如,功能上等效)的任何组件,即使这些组件在结构上不等效于所公开的结构。关于这一点,还应认识到,本发明还包括了具有用于执行所要求保护的主题的各种方法的动作和/或事件的计算机可执行指令的系统以及计算机可读介质。
另外,尽管可相对于若干实现中的仅一个实现来公开本发明的一个特定特征,但是这一特征可以如对任何给定或特定应用所需且有利地与其它实现的一个或多个其它特征相组合。此外,就在说明书或权利要求书中使用术语“包括”和“含有”及其变体而言,这些术语旨在以与术语“包含”相似的方式为包含性的。

Claims (12)

1.一种用于管理一个或多个无锁列表结构(204)中所存储的多个存储器元素(206)的分配的方法,所述无锁列表结构在多核处理器的操作系统环境中可访问,所述方法的步骤包括:
对所述一个或多个无锁列表结构(204)进行分割;
在所述一个或多个无锁列表结构间对所述多个存储器元素(206)进行初始分割;
一旦请求向核处理器分配存储器元素,就从所述一个或多个无锁列表结构搜索可用的存储器元素,所述搜索使用被键控以相应散列所述一个或多个无锁列表结构中的每一个的自适应散列来执行;
一旦找到所述可用的存储器元素,就把所述可用的存储器元素(214)分配给所述核处理器;以及
根据合适的被配置为优化存储器分配的均衡度量,在所述一个或多个无锁列表结构间动态地均衡所述存储器元素。
2.根据权利要求1所述的方法,其特征在于,对所述一个或多个无锁列表结构进行分割的步骤进一步包括将所述一个或多个无锁列表结构分割成第一数据结构。
3.根据权利要求2所述的方法,其特征在于,所述第一数据结构是组中的一者,所述组包括:散列结构(202)和动态列表交换(250)数据结构。
4.根据权利要求3所述的方法,其特征在于,根据多核处理器架构键控所述散列结构。
5.根据权利要求4所述的方法,其特征在于,根据处理器索引键控所述散列结构。
6.根据权利要求4所述的方法,其特征在于,根据NUMA节点编号键控所述散列结构。
7.根据权利要求3所述的方法,其特征在于,所述动态列表交换数据结构进一步包括出栈无锁列表结构和入栈无锁列表结构,其中所述对所述一个或多个无锁列表结构进行分割的步骤进一步包括根据用以均衡存储器资源的度量在所述出栈无锁列表结构和所述入栈无锁列表结构之间交换指针。
8.一种用于管理一个或多个无锁列表结构(204)中所存储的多个存储器元素(206)的分配的系统,所述无锁列表结构在多核处理器的操作系统环境中可访问,所述系统包括:
多个核处理器(106),所述核处理器被分割成一组处理器插槽(104);一组共享存储器(108),所述共享存储器可由至少一个所述处理器插槽访问;
在至少两个所述处理器插槽之间的通信路径(110);
一组一个或多个无锁列表结构(204),每一所述无锁列表结构能够存储至少一个存储器元素,所述一组一个或多个无锁列表结构能够被分割以供一请求存储器元素分配就向所述核处理器分配所述存储器元素;
分配模块(202),所述分配模块能够从所述多个核处理器接收对存储器元素分配的请求;以及
其中所述分配模块能够根据合适的被配置为优化存储器分配的均衡度量使用被键控以相应散列所述一个或多个无锁列表结构中的每一个的自适应散列在所述一组一个或多个无锁列表结构间动态地调整存储器元素。
9.根据权利要求8所述的系统,其特征在于,所述分配模块能够在所述核处理器(106)之一上执行。
10.根据权利要求9所述的系统,其特征在于,所述合适的均衡度量是组中的一员,所述组包括:在无锁列表结构间维持数量基本相等的存储器元素以及避免存储器资源的过度分配。
11.一种具有指令的计算机可读存储介质,当所述指令被执行时使得机器执行如权利要求1-7中任一权利要求所述的方法。
12.一种计算机系统,包括用于执行如权利要求1-7中任一权利要求所述的方法的装置。
CN201380022199.1A 2012-04-27 2013-04-19 用于分割单链表以供分配存储器元素的系统和方法 Active CN104254839B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/458,355 US9652289B2 (en) 2012-04-27 2012-04-27 Systems and methods for S-list partitioning
US13/458,355 2012-04-27
PCT/US2013/037266 WO2013163008A1 (en) 2012-04-27 2013-04-19 Systems and methods for partitioning of singly linked lists for allocation memory elements

Publications (2)

Publication Number Publication Date
CN104254839A CN104254839A (zh) 2014-12-31
CN104254839B true CN104254839B (zh) 2018-10-12

Family

ID=48289638

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380022199.1A Active CN104254839B (zh) 2012-04-27 2013-04-19 用于分割单链表以供分配存储器元素的系统和方法

Country Status (8)

Country Link
US (2) US9652289B2 (zh)
EP (1) EP2842032B1 (zh)
JP (1) JP6275119B2 (zh)
CN (1) CN104254839B (zh)
BR (1) BR112014022764B1 (zh)
RU (1) RU2639944C2 (zh)
TW (1) TWI605340B (zh)
WO (1) WO2013163008A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652289B2 (en) 2012-04-27 2017-05-16 Microsoft Technology Licensing, Llc Systems and methods for S-list partitioning
US9372825B1 (en) * 2013-02-27 2016-06-21 Netapp, Inc. Global non-volatile solid-state cache in a network storage system
US9377954B2 (en) * 2014-05-09 2016-06-28 Advanced Micro Devices, Inc. System and method for memory allocation in a multiclass memory system
US9870328B2 (en) * 2014-11-14 2018-01-16 Cavium, Inc. Managing buffered communication between cores
US10564865B2 (en) 2016-03-22 2020-02-18 Seagate Technology Llc Lockless parity management in a distributed data storage system
CN107969153B (zh) * 2016-08-19 2021-06-22 华为技术有限公司 一种资源分配方法、装置及numa系统
CN107944297B (zh) * 2017-12-11 2020-11-24 北京奇虎科技有限公司 一种访问文件的控制方法及装置
EP3756092A4 (en) * 2018-05-04 2021-04-14 Samsung Electronics Co., Ltd. APPARATUS AND METHOD FOR MANAGING A SHARED RESOURCE IN A MULTI-CORE PROCESSOR
CN111143058A (zh) * 2019-12-17 2020-05-12 长沙新弘软件有限公司 一种基于后备列表的内存管理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02162439A (ja) * 1988-12-15 1990-06-22 Fujitsu Ltd 共有メモリのフリーリスト管理方式
CN1309354A (zh) * 2000-02-15 2001-08-22 国际商业机器公司 用于持久和稳固的存储设备分配的系统和方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058460A (en) * 1996-06-28 2000-05-02 Sun Microsystems, Inc. Memory allocation in a multithreaded environment
US6785888B1 (en) * 1997-08-29 2004-08-31 International Business Machines Corporation Memory allocator for a multiprocessor computer system
US6986015B2 (en) 2001-12-10 2006-01-10 Incipient, Inc. Fast path caching
US7111289B2 (en) 2001-12-21 2006-09-19 Agere Systems, Inc. Method for implementing dual link list structure to enable fast link-list pointer updates
US7016923B2 (en) 2002-11-05 2006-03-21 Sun Microsystems, Inc. Multi-threaded garbage collector employing cascaded memory arrays of task identifiers to implement work stealing queues for task identification and processing
US7069394B2 (en) 2002-12-05 2006-06-27 International Business Machines Corporation Dynamic data routing mechanism for a high speed memory cloner
US7587566B2 (en) 2004-02-20 2009-09-08 Microsoft Corporation Realtime memory management via locking realtime threads and related data structures
US7844973B1 (en) 2004-12-09 2010-11-30 Oracle America, Inc. Methods and apparatus providing non-blocking access to a resource
US10769215B2 (en) 2005-07-14 2020-09-08 Conversant Wireless Licensing S.A R.L. Method, apparatus and computer program product providing an application integrated mobile device search solution using context information
US7904688B1 (en) * 2005-12-21 2011-03-08 Trend Micro Inc Memory management unit for field programmable gate array boards
EP1936498A1 (en) * 2006-12-21 2008-06-25 International Business Machines Corporation A method and system to manage memory accesses from multithread programs on multiprocessor systems
US8112570B2 (en) * 2007-03-15 2012-02-07 Broadcom Corporation Pipelined buffer interconnect with trigger core controller
US8495641B2 (en) * 2007-06-29 2013-07-23 International Business Machines Corporation Efficiently boosting priority of read-copy update readers while resolving races with exiting and unlocking processes
RU2406127C2 (ru) 2007-09-18 2010-12-10 Виктор Анатольевич Кущенко Цифровой процессор кущенко в.а.
US7941688B2 (en) 2008-04-09 2011-05-10 Microsoft Corporation Managing timers in a multiprocessor environment
US20090259780A1 (en) 2008-04-10 2009-10-15 Weistech Technology Co., Ltd. Portable electronic device for controlling under-controlled devices
US8190827B2 (en) * 2009-02-27 2012-05-29 Red Hat, Inc. Memory sharing among computer programs
US8078825B2 (en) * 2009-03-11 2011-12-13 Oracle America, Inc. Composite hash and list partitioning of database tables
US20100251250A1 (en) * 2009-03-30 2010-09-30 Microsoft Corporation Lock-free scheduler with priority support
TW201112125A (en) 2009-09-16 2011-04-01 Ibm Method and system for operating an instance of a data structure
US20110296437A1 (en) * 2010-05-28 2011-12-01 Devendra Raut Method and apparatus for lockless communication between cores in a multi-core processor
US9652289B2 (en) 2012-04-27 2017-05-16 Microsoft Technology Licensing, Llc Systems and methods for S-list partitioning

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02162439A (ja) * 1988-12-15 1990-06-22 Fujitsu Ltd 共有メモリのフリーリスト管理方式
CN1309354A (zh) * 2000-02-15 2001-08-22 国际商业机器公司 用于持久和稳固的存储设备分配的系统和方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Data Structure Distribution and Multi-threading of Linux File System for Multiprocessor;Anish Sheth等;《High Performance Computing,1998.HIPC’98.5th International Conference On》;19981220;1-4页 *
Scalable-Lock-Free Dynamic Memory Allocation;Maged M.Michael等;《PLDI’04 Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation》;20040609;35-46页 *

Also Published As

Publication number Publication date
RU2639944C2 (ru) 2017-12-25
BR112014022764B1 (pt) 2021-10-13
JP2015515076A (ja) 2015-05-21
RU2014143063A (ru) 2016-05-20
WO2013163008A1 (en) 2013-10-31
BR112014022764A8 (pt) 2017-12-12
US9652289B2 (en) 2017-05-16
US20130290667A1 (en) 2013-10-31
CN104254839A (zh) 2014-12-31
US20170249243A1 (en) 2017-08-31
TWI605340B (zh) 2017-11-11
EP2842032B1 (en) 2020-05-06
JP6275119B2 (ja) 2018-02-07
US10223253B2 (en) 2019-03-05
EP2842032A1 (en) 2015-03-04
BR112014022764A2 (zh) 2017-06-20
TW201405308A (zh) 2014-02-01

Similar Documents

Publication Publication Date Title
CN104254839B (zh) 用于分割单链表以供分配存储器元素的系统和方法
Dragojević et al. {FaRM}: Fast remote memory
US20210224279A1 (en) Distributed real-time partitioned mapreduce for a data fabric
US8381230B2 (en) Message passing with queues and channels
US11847098B2 (en) Metadata control in a load-balanced distributed storage system
CN103914399B (zh) 一种并行计算系统中的磁盘缓存方法及装置
CN101013381B (zh) 基于对象存储系统的分布式锁
WO2019139693A1 (en) Distributed partitioned map reduce using a data fabric
CN105242872B (zh) 一种面向虚拟集群的共享存储系统
CN104346317B (zh) 共享资源访问方法和装置
CN105634958A (zh) 基于多核系统的报文转发方法和装置
CN105980991A (zh) 在多个计算节点之间的存储资源共享
CN104536724A (zh) 一种多核环境下哈希表并发访问性能优化方法
US10929035B2 (en) Memory management via dynamic tiering pools
JP2016530625A (ja) ロッキング機構を用いた効率的なタスク・スケジューリングのための方法、システム、およびプログラム
US20230273859A1 (en) Storage system spanning multiple failure domains
US7849272B2 (en) Dynamic memory management in an RDMA context
US11269687B2 (en) Map reduce using coordination namespace hardware acceleration
US8543722B2 (en) Message passing with queues and channels
US8341368B2 (en) Automatic reallocation of structured external storage structures
US9858185B1 (en) Multi-tier data storage using inclusive/exclusive burst buffer caching based on reference counts
WO2014120304A1 (en) System and method for supporting work sharing muxing in a cluster
Devulapalli et al. Data structure consistency using atomic operations in storage devices
Liu et al. Topology-aware strategy for MPI-IO operations in clusters
US20240111606A1 (en) Distributed Cluster Join Management

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150401

TA01 Transfer of patent application right

Effective date of registration: 20150401

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

GR01 Patent grant
GR01 Patent grant