CN104254839A - 用于分割单链表以供分配存储器元素的***和方法 - Google Patents
用于分割单链表以供分配存储器元素的***和方法 Download PDFInfo
- Publication number
- CN104254839A CN104254839A CN201380022199.1A CN201380022199A CN104254839A CN 104254839 A CN104254839 A CN 104254839A CN 201380022199 A CN201380022199 A CN 201380022199A CN 104254839 A CN104254839 A CN 104254839A
- Authority
- CN
- China
- Prior art keywords
- list structure
- memory element
- lock list
- processor
- lock
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 238000000638 solvent extraction Methods 0.000 title 1
- 230000011218 segmentation Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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]
-
- 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
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management 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)
- Storage Device Security (AREA)
- Multi Processors (AREA)
- Memory System (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 (10)
1.一种用于管理一个或多个无锁列表结构(204)中所存储的多个存储器元素(206)的分配的方法,所述无锁列表结构在多核处理器的操作***环境中可访问,所述方法的步骤包括:
对所述一个或多个无锁列表结构(204)进行分割;
在所述一个或多个无锁列表结构间对所述多个存储器元素(206)进行初始分割;
一旦请求向核处理器分配存储器元素,就从所述一个或多个无锁列表结构搜索可用的存储器元素;
一旦找到所述可用的存储器元素,就把所述可用的存储器元素(214)分配给所述核处理器;以及
根据合适的均衡度量,在所述一个或多个无锁列表结构间动态地均衡所述存储器元素。
2.根据权利要求3所述的方法,其特征在于,对所述一个或多个无锁列表结构进行分割的步骤进一步包括将所述一个或多个无锁列表结构分割成第一数据结构。
3.根据权利要求4所述的方法,其特征在于,所述第一数据结构是组中的一者,所述组包括:散列结构(202)和动态列表交换(250)数据结构。
4.根据权利要求5所述的方法,其特征在于,根据多核处理器架构键控所述散列结构。
5.根据权利要求6所述的方法,其特征在于,根据处理器索引键控所述散列结构。
6.根据权利要求6所述的方法,其特征在于,根据NUMA节点编号键控所述散列结构。
7.根据权利要求5所述的方法,其特征在于,所述动态列表交换数据结构进一步包括出栈无锁列表结构和入栈无锁列表结构,其中所述对所述一个或多个无锁列表结构进行分割的步骤进一步包括根据用以均衡存储器资源的度量在所述出栈无锁列表结构和所述入栈无锁列表结构之间交换指针。
8.一种用于管理一个或多个无锁列表结构(204)中所存储的多个存储器元素(206)的分配的***,所述无锁列表结构在多核处理器的操作***环境中可访问,所述***包括:
多个核处理器(106),所述核处理器被分割成一组处理器插槽(104);一组共享存储器(108),所述共享存储器可由至少一个所述处理器插槽访问;
在至少两个所述处理器插槽之间的通信路径(110);
一组一个或多个无锁列表结构(204),每一所述无锁列表结构能够存储至少一个存储器元素,所述一组一个或多个无锁列表结构能够被分割以供一请求存储器元素分配就向所述核处理器分配所述存储器元素;
分配模块(202),所述分配模块能够从所述多个核处理器接收对存储器元素分配的请求;以及
其中所述分配模块能够根据合适的均衡度量在所述一组一个或多个无锁列表结构间动态地调整存储器元素。
9.根据权利要求8所述的***,其特征在于,所述分配模块能够在所述核处理器(106)之一上执行。
10.根据权利要求9所述的***,其特征在于,所述合适的均衡度量是组中的一员,所述组包括:在无锁列表结构间维持数量基本相等的存储器元素以及避免存储器资源的过度分配。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/458,355 | 2012-04-27 | ||
US13/458,355 US9652289B2 (en) | 2012-04-27 | 2012-04-27 | Systems and methods for S-list partitioning |
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 true CN104254839A (zh) | 2014-12-31 |
CN104254839B 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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107944297A (zh) * | 2017-12-11 | 2018-04-20 | 北京奇虎科技有限公司 | 一种访问文件的控制方法及装置 |
CN111143058A (zh) * | 2019-12-17 | 2020-05-12 | 长沙新弘软件有限公司 | 一种基于后备列表的内存管理方法 |
Families Citing this family (7)
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*** |
WO2019212182A1 (en) * | 2018-05-04 | 2019-11-07 | Samsung Electronics Co., Ltd. | Apparatus and method for managing a shareable resource in a multi-core processor |
Citations (3)
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 | 国际商业机器公司 | 用于持久和稳固的存储设备分配的***和方法 |
US20030121030A1 (en) * | 2001-12-21 | 2003-06-26 | Christopher Koob | Method for implementing dual link list structure to enable fast link-list pointer updates |
Family Cites Families (21)
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 |
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 |
US8700823B2 (en) * | 2007-03-15 | 2014-04-15 | Broadcom Corporation | Software driver interconnect framework |
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 |
-
2012
- 2012-04-27 US US13/458,355 patent/US9652289B2/en active Active
-
2013
- 2013-04-15 TW TW102113317A patent/TWI605340B/zh not_active IP Right Cessation
- 2013-04-19 JP JP2015509034A patent/JP6275119B2/ja active Active
- 2013-04-19 WO PCT/US2013/037266 patent/WO2013163008A1/en active Application Filing
- 2013-04-19 RU RU2014143063A patent/RU2639944C2/ru active
- 2013-04-19 BR BR112014022764-0A patent/BR112014022764B1/pt active IP Right Grant
- 2013-04-19 EP EP13720655.3A patent/EP2842032B1/en active Active
- 2013-04-19 CN CN201380022199.1A patent/CN104254839B/zh active Active
-
2017
- 2017-05-15 US US15/595,088 patent/US10223253B2/en active Active
Patent Citations (3)
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 | 国际商业机器公司 | 用于持久和稳固的存储设备分配的***和方法 |
US20030121030A1 (en) * | 2001-12-21 | 2003-06-26 | Christopher Koob | Method for implementing dual link list structure to enable fast link-list pointer updates |
Non-Patent Citations (2)
Title |
---|
ANISH SHETH等: "Data Structure Distribution and Multi-threading of Linux File System for Multiprocessor", 《HIGH PERFORMANCE COMPUTING,1998.HIPC’98.5TH INTERNATIONAL CONFERENCE ON》 * |
MAGED M.MICHAEL等: "Scalable-Lock-Free Dynamic Memory Allocation", 《PLDI’04 PROCEEDINGS OF THE ACM SIGPLAN 2004 CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107944297A (zh) * | 2017-12-11 | 2018-04-20 | 北京奇虎科技有限公司 | 一种访问文件的控制方法及装置 |
CN107944297B (zh) * | 2017-12-11 | 2020-11-24 | 北京奇虎科技有限公司 | 一种访问文件的控制方法及装置 |
CN111143058A (zh) * | 2019-12-17 | 2020-05-12 | 长沙新弘软件有限公司 | 一种基于后备列表的内存管理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20130290667A1 (en) | 2013-10-31 |
US20170249243A1 (en) | 2017-08-31 |
US9652289B2 (en) | 2017-05-16 |
EP2842032A1 (en) | 2015-03-04 |
BR112014022764A2 (zh) | 2017-06-20 |
RU2639944C2 (ru) | 2017-12-25 |
WO2013163008A1 (en) | 2013-10-31 |
RU2014143063A (ru) | 2016-05-20 |
BR112014022764A8 (pt) | 2017-12-12 |
BR112014022764B1 (pt) | 2021-10-13 |
CN104254839B (zh) | 2018-10-12 |
EP2842032B1 (en) | 2020-05-06 |
JP6275119B2 (ja) | 2018-02-07 |
TWI605340B (zh) | 2017-11-11 |
JP2015515076A (ja) | 2015-05-21 |
US10223253B2 (en) | 2019-03-05 |
TW201405308A (zh) | 2014-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104254839A (zh) | 用于分割单链表以供分配存储器元素的***和方法 | |
US8984085B2 (en) | Apparatus and method for controlling distributed memory cluster | |
US11093468B1 (en) | Advanced metadata management | |
US7370029B2 (en) | Method of changing system configuration in shared-nothing database management system | |
US7721044B1 (en) | Expanding the storage capacity of a virtualized data storage system | |
US10915365B2 (en) | Determining a quantity of remote shared partitions based on mapper and reducer nodes | |
CN102255962B (zh) | 一种分布式存储方法、装置和*** | |
US20230099290A1 (en) | Metadata control in a load-balanced distributed storage system | |
CN106656631B (zh) | 在共享存储上实现逻辑卷动态分配的方法 | |
CN104679594B (zh) | 一种中间件分布式计算方法 | |
CN104536724A (zh) | 一种多核环境下哈希表并发访问性能优化方法 | |
US10082978B2 (en) | Distributed shared log storage system having an adapter for heterogenous big data workloads | |
US20120151175A1 (en) | Memory apparatus for collective volume memory and method for managing metadata thereof | |
WO2014120304A1 (en) | System and method for supporting work sharing muxing in a cluster | |
KR102124897B1 (ko) | 분산 메시지 시스템 및 분산 메시지 시스템에서의 동적 파티셔닝 방법 | |
CN111143035A (zh) | Cpu资源的分配方法、装置、设备及计算机可读存储介质 | |
KR101654969B1 (ko) | 가상화 클러스터 환경에서 네임 노드를 할당하는 방법 및 장치 | |
CN115202859A (zh) | 一种内存扩展方法以及相关设备 | |
JP2013088920A (ja) | 計算機システム及びデータ管理方法 | |
US20240111606A1 (en) | Distributed Cluster Join Management | |
US20210255800A1 (en) | Techniques for clustering compute nodes in distributed storage | |
Xu et al. | NewBalance: Efficient Data Space Management and Algorithmic Optimization for Large‐Scale Storage Systems | |
Agarwal et al. | Packed Memory Arrays for Dynamic Graphs in the Distributed Memory Setting | |
Aye | Data Consistency on Private Cloud Storage System | |
US9880774B2 (en) | Methods for automatic data storage device assignment during system initialization and devices thereof |
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 |