CN105893137B - 用于为对象分配锁资源的方法和装置 - Google Patents
用于为对象分配锁资源的方法和装置 Download PDFInfo
- Publication number
- CN105893137B CN105893137B CN201410573345.6A CN201410573345A CN105893137B CN 105893137 B CN105893137 B CN 105893137B CN 201410573345 A CN201410573345 A CN 201410573345A CN 105893137 B CN105893137 B CN 105893137B
- Authority
- CN
- China
- Prior art keywords
- relevance
- lock
- objects
- alternative
- resource
- 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
Links
Classifications
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施方式提供一种用于为对象分配锁资源的方法和装置,该方法包括:获取用于所述对象的第一备选锁;当所述第一备选锁已被分配给一个或多个其他对象时,确定所述对象与所述一个或多个其他对象中的每个对象的第一关联性;以及响应于确定每个所述第一关联性均低于预定阈值,将所述第一备选锁分配给所述对象。通过该方法可以最大化并行执行的可能性,并且减少等待锁资源的时间,避免了锁竞争。
Description
技术领域
本发明的实施方式涉及存储系统领域,更具体地,涉及一种用于为对象分配锁资源的方法和装置。
背景技术
在现代计算机系统中,由于系统变得越来越复杂,一些关键性资源总是会短缺。通常,不同的执行部件需要竞争这些资源,并且阻止其他部件运行。这类竞争将极大地影响总体并行执行和系统吞吐量。例如在存储系统中,往往利用锁资源来保证对原子数据的改变。然而,由于多个锁的时间和内存开销非常大,而且其硬件资源利用也非常昂贵,锁的数量通常是有限的,不足以为每个申请锁资源的对象单独分配一个锁。
传统的解决方案是通过哈希算法或均匀分布式算法而将同一个锁分配给多个对象使用,即让多个对象共享同一个锁。然而,由于共享同一个锁的多个对象之间可能并非是完全独立的,而是相互之间具有关联性。在一些情况下,具有关联性的多个对象会相互高度影响,这导致锁竞争的性能的劣化。例如,具有关联性的多个对象由于其关联性往往需要同时执行某些操作,这些操作会使得该多个对象竞争所共享的锁,从而导致多个串行化操作,影响系统性能。
发明内容
为了解决现有技术中存在的上述问题,本说明书提出如下方案。
根据本发明的第一方面,提供一种用于为对象分配锁资源的方法,包括:获取用于所述对象的第一备选锁;当所述第一备选锁已被分配给一个或多个其他对象时,确定所述对象与所述一个或多个其他对象中的每个对象的第一关联性;以及响应于确定每个所述第一关联性均低于预定阈值,将所述第一备选锁分配给所述对象。
在本发明的可选实施方式中,该方法,还包括:响应于确定任一所述第一关联性高于所述预定阈值:获取用于所述对象的第二备选锁;当所述第二备选锁已被分配给一个或多个其他对象时,确定所述对象与所述一个或多个其他对象中的每个对象的第二关联性;以及响应于确定每个所述第二关联性均低于所述预定阈值,将所述第二备选锁分配给所述对象。
在本发明的可选实施方式中,该方法还包括:响应于确定任一所述第二关联性高于所述预定阈值:计算所有所述第一关联性的统计值作为用于所述第一备选锁的关联性统计值;计算所有所述第二关联性的统计值作为用于所述第二备选锁的关联性统计值;以及使得所述关联性统计值中较大的一个统计值所用于的备选锁不分配给所述对象。
在本发明的可选实施方式中,该方法还包括:当所述第二备选锁尚未被分配时,将所述第二备选锁分配给所述对象。
在本发明的可选实施方式中,该方法还包括:当所述第一备选锁尚未被分配时,将所述第一备选锁分配给所述对象。
在本发明的可选实施方式中,基于两个对象是否属于以下中的一个或多个来确定所述两个对象之间的关联性:同一镜像组、同一RAID组、同一资源池、以及同一去重域。
在本发明的可选实施方式中,该方法还包括:存储为所述对象分配的所述锁资源的信息。
根据本发明的第二方面,提供一种用于为多个对象分配锁资源的方法,包括:从所述多个对象接收对锁资源的请求;以及基于所述多个对象之间的关联性,为所述多个对象中的每个对象分配锁资源。
在本发明的可选实施方式中,该方法还包括:基于所述多个对象之间的关联性,为所述多个对象中的每个对象分配锁资源进一步包括:响应于所述多个对象中的两个对象之间的关联性大于第一阈值,避免为所述两个对象分配相同的锁资源。
在本发明的可选实施方式中,该方法还包括:响应于所述多个对象中的两个对象之间的关联性小于第二阈值,为所述两个对象分配相同的锁资源。
在本发明的可选实施方式中,基于两个对象是否属于以下中的一个或多个来确定所述两个对象之间的关联性:同一镜像组、同一RAID组、同一资源池、以及同一去重域。
根据本发明的第三方面,提供一种用于为对象分配锁资源的装置,包括:获取单元,被配置为获取用于所述对象的第一备选锁;确定单元,被配置为当所述第一备选锁已被分配给一个或多个其他对象时,确定所述对象与所述一个或多个其他对象中的每个对象的第一关联性;以及分配单元,被配置为响应于确定每个所述第一关联性均低于预定阈值,将所述第一备选锁分配给所述对象。
在本发明的可选实施方式中,所述分配单元还被配置为:响应于确定任一所述第一关联性高于所述预定阈值:获取用于所述对象的第二备选锁;当所述第二备选锁已被分配给一个或多个其他对象时,确定所述对象与所述一个或多个其他对象中的每个对象的第二关联性;以及响应于确定每个所述第二关联性均低于所述预定阈值,将所述第二备选锁分配给所述对象。
在本发明的可选实施方式中,所述分配单元还被配置为:响应于确定任一所述第二关联性高于所述预定阈值:计算所有所述第一关联性的统计值作为用于所述第一备选锁的关联性统计值;计算所有所述第二关联性的统计值作为用于所述第二备选锁的关联性统计值;以及使得所述关联性统计值中较大的一个统计值所用于的备选锁不分配给所述对象。
在本发明的可选实施方式中,所述分配单元还被配置为:当所述第二备选锁尚未被分配时,将所述第二备选锁分配给所述对象。
在本发明的可选实施方式中,所述分配单元还被配置为:当所述第一备选锁尚未被分配时,将所述第一备选锁分配给所述对象。
在本发明的可选实施方式中,基于两个对象是否属于以下中的一个或多个来确定所述两个对象之间的关联性:同一镜像组、同一RAID组、同一资源池、以及同一去重域。
在本发明的可选实施方式中,该装置还包括:存储单元,被配置为存储为所述对象分配的所述锁资源的信息。
根据本发明的第四方面,提供一种用于为多个对象分配锁资源的装置,包括接收单元,被配置为从所述多个对象接收对锁资源的请求;以及分配单元,被配置为基于所述多个对象之间的关联性,为所述多个对象中的每个对象分配锁资源。
在本发明的可选实施方式中,所述分配单元进一步被配置为:响应于所述多个对象中的两个对象之间的关联性大于第一阈值,避免为所述两个对象分配相同的锁资源。
在本发明的可选实施方式中,所述分配单元进一步被配置为:响应于所述多个对象中的两个对象之间的关联性小于第二阈值,为所述两个对象分配相同的锁资源。
在本发明的可选实施方式中,基于两个对象是否属于以下中的一个或多个来确定所述两个对象之间的关联性:同一镜像组、同一RAID组、同一资源池、以及同一去重域。
根据本发明的实施方式,考虑到对象之间的关联性来为对象分配锁资源,可以最大化并行执行的可能性,并且减少等待锁资源的时间,避免了锁竞争。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。
图2示出了根据本发明一个方面的用于为对象分配锁资源的方法200的流程图。
图3示出了根据本发明的实施方式的用于为对象分配锁资源的进一步方法300的流程图。
图4示出了根据本发明的实施方式的用于为对象分配锁资源的更进一步方法400的流程图。
图5示出了根据本发明另一方面的用于为多个对象分配锁资源的方法500的流程图。
图6示出了根据本发明的用于为多个对象分配锁资源的一个具体示例。
图7示出了根据本发明示例性实施方式的用于为对象分配锁资源的装置700的示意性框图。
图8示出了根据本发明示例性实施方式的用于为对象分配锁资源的装置800的示意性框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如图1所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和触摸屏显示器114。在这些设备中,与系统总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及触摸屏显示器114与显示控制器109耦合。应当理解,图1所示的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施方式中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施方式的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其他可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其他可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其他可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图2示出了根据本发明一个方面的用于为对象分配锁资源的方法200的流程图。贯穿本申请的上下文,术语“对象”指代存储系统中的申请锁资源的各种实体。根据方法200,在步骤S201中,首先获取用于该对象的第一备选锁。这里所称的“第一备选锁”可以是通过任何现有方法(例如哈希算法或均匀分布算法等)所既定分配给该对象的一个备选锁,本发明在如何为对象选取第一备选锁方面不受限制。
接下来,方法200前进到步骤S202,当第一备选锁已经被分配给一个或多个其他对象时,确定该对象与该一个或多个对象中的每个对象的第一关联性。如本发明背景技术部分所述,按照现有方法分配的锁(如步骤S201中的第一备选锁)可能在多个对象之间共享,为了确保共享同一个锁的多个对象之间不会由于存在关联性而相互影响、导致性能的劣化,本发明在此逐一考虑当前申请锁资源的对象与该备选锁所被分配给的一个或多个对象之间的关联性。在具体实现中,两个对象之间具有“关联性”可以根据需要进行定义。例如,可以在两个对象属于同一镜像组(clone group)、来自于同一RAID组(RG)、同一资源池或同一去重域(deduplication domain)时认为该两个对象之间具有关联性。这是因为来自同一上述各种容器(如镜像组、RG、资源池或去重域等)的各个对象将会继承该同一容器的共同属性。如果该共同容器的属性发生改变,该各个对象也要同时采取相同的动作。例如,对于来自同一镜像组的多个镜像对象而言,一个镜像对象所存储的数据发生改变也要引起其他镜像对象所存储的数据发生相同的改变,以维持镜像组的一致性,这造成了属于同一镜像组中的各个对象之间的强关联性。在这种情况下,各个对象会竞争全局锁来保证改变的一致性,如果进行更细粒度的考虑,可以根据需要,认为属于同一镜像组的对象之间的关联性高于来自于同一RAID组、同一资源池或同一去重域的关联性。为了便于直观地表示对象之间的关联性,引入用数值来对关联性进行衡量。例如,在上述示例中,可以将属于同一镜像组的对象之间的关联性设置为数值1,将来自于同一去重域的对象之间的关联性设置为数值0.75,将来自于同一RAID组或同一存储池的对象之间的关联性设置为数值0.5,等等。如果两个对象之间没有任何关联性,例如可以将该关联性设置为数值0。本领域技术人员应当理解,上述对关联性的定义以及关联性的数值度量仅是示例性的,并不作为对本发明的限制。另外容易理解,在可选情况下,当该第一备选锁尚未被分配给任何其他对象时,将该第一备选锁分配给该对象。
继而,方法200前进到步骤S203,响应于确定每个该第一关联性均低于预定阈值,将该第一备选锁分配给该对象。即,在确定每个该第一关联性均低于预定阈值的情况下,可以认为该对象与第一备选锁被分配给的一个或多个对象之间均不存在关联性或者关联性很低,从而能够将给第一备选锁分配给该对象。仍以步骤S202中的镜像组为例,由于属于同一镜像组的各镜像对象几乎总是同时要求发生改变,如果为它们分配相同的锁,显然这些镜像对象必须串行而不能并行进行改变,会极大地影响系统的效率。相反,如果仅让相互之间没有关联性或关联性很低的对象共享同一锁,则可以尽可能地避免串行化操作的出现,提高系统的执行效率。需要注意的是,步骤S203中的预定阈值可以根据需要来预先设定,例如设置为数值0.1。
至此,方法200结束。
容易看到,通过方法200,可以尽量避免需要同时执行操作的多个对象共享同一个锁,从而最小化可能的串行化操作,提高系统的执行效率。
图3示出了根据本发明的实施方式的用于为对象分配锁资源的进一步方法300的流程图。根据方法300,当在方法200的步骤S203中,确定任一该第一关联性高于该预定阈值(步骤S301)时,获取用于该对象的第二备选锁(步骤S302)。与步骤S201中类似地,“第二备选锁”也可以是通过任何现有方法(例如哈希算法或均匀分布算法等)所既定分配给该对象的另一备选锁,本发明在如何为对象选取第二备选锁方面同样不受限制。
接下来,方法300前进到步骤S303,当该第二备选锁已被分配给一个或多个其他对象时,确定该对象与该一个或多个其他对象中的每个对象的第二关联性。步骤S303中关联性的确定与方法200的步骤S202中关联性的确定过程类似,不再赘述。同样容易理解,在可选情况下,当该第二备选锁尚未被分配给任何其他对象时,将该第二备选锁分配给该对象。
接着,方法300前进到步骤S304,响应于确定每个该第二关联性均低于该预定阈值,将该第二备选锁分配给该对象。步骤S304的实现类似于方法200的步骤S203,不再赘述。
至此,方法300结束。
考虑到既定于一个对象的备选锁往往不止一个,方法300尝试在一个备选锁已被具有关联性的对象占用的情况下获取其他备选锁,并在该其他备选锁没有被有关联性的对象占用的情况下为对象分配该其他备选锁,这进一步优化了锁资源的分配,提高了系统的效率。
图4示出了根据本发明的实施方式的用于为对象分配锁资源的更进一步方法400的流程图。方法400关注在方法300的步骤S304中当确定任一该第二关联性高于该预定阈值(步骤S401)的情况。在这一情况下,方法400进入步骤S402,计算所有该第一关联性的统计值作为用于该第一备选锁的关联性统计值。例如,如果用R1表示用于第一备选锁的关联性统计值,则其中,x表示该第一备选锁已被分配给的对象的数目,rt表示申请第一备选锁的对象与该x个对象中的第t个对象之间的关联性。
接着,方法400进入步骤S403,计算所有该第二关联性的统计值作为用于该第二备选锁的关联性统计值。例如,如果用R2表示用于第二备选锁的关联性统计值,则其中,x表示该第二备选锁已被分配给的对象的数目,rt表示申请第二备选锁的对象与该x个对象中的第t个对象之间的关联性。
接下来,方法400进入步骤S404,使得该关联性统计值中较大的一个统计值所用于的备选锁不分配给该对象。例如,如果R1的值大于R2,则说明该对象与第一备选锁所分配给的对象的总关联性高于其与第二备选锁所分配给的对象的总关联性,因此第一备选锁和第二备选锁相比而言,不将第一备选锁分配给该对象。在针对该对象仅有这两个备选锁的情况下,可以将关联性统计值中较小的R2所用于的第二备选锁分配给该对象。然而,在存在用于该对象的N(N为正整数)个备选锁时,可以类似地计算其中,i=1,2,...,N,x表示第i备选锁已被分配给的对象的数目,rt表示申请第i备选锁的对象与该x个对象中的第t个对象之间的关联性。从R1,R2,...,Rn中选取值最小的R所用于的备选锁以便分配给该对象。
至此,方法400结束。
可以看到,方法400通过在判断出既定于一个对象的多个备选锁均被有关联性的对象占用的情况下,考虑关联性的总统计值来决定锁资源的分配更细粒度地优化了资源的分配,进一步提高了系统的效率。
此外,在一种可选的实施方式中,可以存储在方法200、300、400中所分配给对象的锁资源的信息,以便在系统重启时可以自动恢复。在另一可选的实施方式中,所分配的锁资源信息是静态的,除非对象被删除,否则不发生改变。这有利于节约对锁资源进行分配的成本。然而,本领域技术人员可以理解,所分配的锁资源信息完全可以是动态生成的,本发明在此方面不受限制。
图5示出了根据本发明另一方面的用于为多个对象分配锁资源的方法500的流程图。根据方法500,在步骤S501中,首先从多个对象接收对锁资源的请求。接着,方法500进入步骤S502,基于该多个对象之间的关联性,为该多个对象中的每个对象分配锁资源。如参照图2-4所描述的类似的原理,考虑对象之间的关联性来为对象分配锁资源是有利的。在具体实现中,步骤S502中的术语“关联性”可以参照类似于方法200的步骤S202中的说明,或者根据具体应用来定义“关联性”,在此不再赘述。例如,可以在两个对象属于同一镜像组(clonegroup)、来自于同一RAID组、同一资源池或同一去重域(deduplication domain)时认为该两个对象之间具有关联性。
在本发明的可选实现中,步骤S502进一步包括:响应于该多个对象中的两个对象之间的关联性大于第一阈值,避免为该两个对象分配相同的锁资源。
在本发明的另一可选实现中,步骤S502还可以包括:响应于该多个对象中的两个对象之间的关联性小于第二阈值,为该两个对象分配相同的锁资源。
本领域技术人员应当理解,参照图5描述的方法500与参照图2-4描述的方法200-400在同一发明构思下,因此其具体的实现方式可以借助于前述对方法200-400的任何可能步骤,出于简洁的目的而不再赘述。
图6示出了根据本发明的用于为多个对象分配锁资源的一个具体示例。如图所示,为简化起见,在图6讨论的具体示例中的多个对象(图6中具体为镜像对象)仅涉及三种可能的关联关系:来自同一镜像组、来自于同一RAID组(RG)、或来自同一存储池。在实践中,各对象的关联关系显然还包括其他情形,如来自于同一去重域等(图6中未示出)。图6中所涉及的每个镜像组被示出为包括2个镜像,然而,在实际的系统中,每个镜像组中的镜像数目根据需要可能不同,在某些存储系统中,镜像的数目可以多达8个。假设可用于该多个镜像组的锁群组中共有32个锁(锁的数目为示意性的,不作为对本发明的限制)可用。为了将有限的锁资源分配给数量众多的镜像对象,根据本发明的方法可以采用如下步骤:
首先,考虑最强关联关系中可能要求同时进行动作的对象的最大数目,确定维度m,以便将锁群组变换成m*n的矩阵。例如,在图6所涉及的关联关系中的最强关联关系是来自同一镜像组,而同一镜像组中可能的最大镜像数目为8,即,可能同时有8个镜像对象都要求进行动作,则将维度m确定为8,从而将32个锁变换成8*4的矩阵,如图6下部所示。
接着,针对每个镜像组中的每个镜像对象,按照包括常规方法在内的任何方法为其确定该锁阵列中的备选锁,并根据方法200-500中的相关步骤进行锁资源的分配。例如,可以将第x个镜像组中的第y个镜像对象的备选锁既定为阵列中的第(x+(y-1))%m列的锁,其中%表示“模运算”。如图6所示,镜像组1的镜像1的备选锁是阵列中的第(1+(1-1))%8=1列的四个锁。优选地,其第一备选锁可以是第一行第一列的锁。由于该锁并未被分配,可以直接将该锁分配给镜像组1的镜像1。镜像组2的镜像1的备选锁是阵列中的第(2+(1-1))%8=2列的四个锁。优选地,其第一备选锁可以是第一行第二列的锁。由于该锁并未被分配,可以直接将该锁分配给镜像组2的镜像1。类似地确定其他镜像组中各镜像的备选锁。需要注意的是,镜像组1的镜像2的备选锁是阵列中的第(1+(2-1))%8=2列的四个锁。优选地,其第一备选锁可以是第一行第二列的锁。由于该锁已经被分配给镜像组2的镜像1,需要进一步确定这两个镜像对象之间的关联性。由于它们来自不同的镜像组、不同的RG以及不同的资源池,在本示例中认为它们之间的关联性很低,从而仍然可以将第一行第二列的锁分配给镜像组1的镜像2。而对于镜像组9的镜像1,其备选锁是阵列中的第(9+(1-1))%8=1列的四个锁。优选地,其第一备选锁可以是第一行第一列的锁。由于该锁已经被分配给镜像组1的镜像1,并且进一步确定出这两个镜像对象属于同一RG,具有相当的关联性,因此考虑第二行第一列的第二备选锁。由于该锁并未被分配给任何对象,可以直接向镜像组9的镜像1分配该锁。在极端情况下,如果镜像组9的镜像1的四个备选锁均被与其具有关联性的其他对象所占用,则要逐一计算各备选锁的关联性的统计值(如总和),将统计值最小的备选锁分配给该镜像对象。
接下来参看图7进一步描述根据本发明示例性实施方式的用于为对象分配锁资源的装置700。如图所示,装置700包括获取单元701、确定单元702以及分配单元703。其中,获取单元701被配置为获取用于所述对象的第一备选锁;确定单元702被配置为当所述第一备选锁已被分配给一个或多个其他对象时,确定所述对象与所述一个或多个其他对象中的每个对象的第一关联性;而分配单元703被配置为响应于确定每个所述第一关联性均低于预定阈值,将所述第一备选锁分配给所述对象。
在本发明的可选实施方式中,所述分配单元703还被配置为:响应于确定任一所述第一关联性高于所述预定阈值:获取用于所述对象的第二备选锁;当所述第二备选锁已被分配给一个或多个其他对象时,确定所述对象与所述一个或多个其他对象中的每个对象的第二关联性;以及响应于确定每个所述第二关联性均低于所述预定阈值,将所述第二备选锁分配给所述对象。
在本发明的可选实施方式中,所述分配单元703还被配置为:响应于确定任一所述第二关联性高于所述预定阈值:计算所有所述第一关联性的统计值作为用于所述第一备选锁的关联性统计值;计算所有所述第二关联性的统计值作为用于所述第二备选锁的关联性统计值;以及使得所述关联性统计值中较大的一个统计值所用于的备选锁不分配给所述对象。
在本发明的可选实施方式中,所述分配单元703还被配置为:当所述第二备选锁尚未被分配时,将所述第二备选锁分配给所述对象。
在本发明的可选实施方式中,所述分配单元703还被配置为:当所述第一备选锁尚未被分配时,将所述第一备选锁分配给所述对象。
在本发明的可选实施方式中,基于两个对象是否属于以下中的一个或多个来确定所述两个对象之间的关联性:同一镜像组、同一RAID组、同一资源池、以及同一去重域。
在本发明的可选实施方式中,装置700还包括:存储单元704,被配置为存储为所述对象分配的所述锁资源的信息。
进一步参看图8描述根据本发明示例性实施方式的用于为多个对象分配锁资源的装置800。如图所示,装置800包括接收单元801和分配单元802。其中,接收单元801被配置为从所述多个对象接收对锁资源的请求;而分配单元802被配置为基于所述多个对象之间的关联性,为所述多个对象中的每个对象分配锁资源。
在本发明的可选实施方式中,所述分配单元802进一步被配置为:响应于所述多个对象中的两个对象之间的关联性大于第一阈值,避免为所述两个对象分配相同的锁资源。
在本发明的可选实施方式中,所述分配单元802进一步被配置为:响应于所述多个对象中的两个对象之间的关联性小于第二阈值,为所述两个对象分配相同的锁资源。
在本发明的可选实施方式中,基于两个对象是否属于以下中的一个或多个来确定所述两个对象之间的关联性:同一镜像组、同一RAID组、同一资源池、以及同一去重域。
附图中的流程图和框图显示了根据本发明的多个实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施方式,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施方式。在不偏离所说明的各实施方式的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施方式的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施方式。
Claims (12)
1.一种用于为第一对象分配锁资源的方法,包括:
获取用于所述第一对象的第一备选锁;
当所述第一备选锁已被分配给一个或多个其他对象时,确定所述第一对象与所述一个或多个其他对象中的每个对象的第一关联性;
响应于确定每个所述第一关联性均低于预定阈值,将所述第一备选锁分配给所述第一对象;
响应于确定任一所述第一关联性高于所述预定阈值:
获取用于所述第一对象的第二备选锁;
当所述第二备选锁已被分配给一个或多个其他对象时,确定所述第一对象与所述一个或多个其他对象中的每个对象的第二关联性;以及
响应于确定每个所述第二关联性均低于所述预定阈值,将所述第二备选锁分配给所述第一对象;以及
响应于确定任一所述第二关联性高于所述预定阈值:
计算所有所述第一关联性的第一统计值作为用于所述第一备选锁的第一关联性统计值;
计算所有所述第二关联性的第二统计值作为用于所述第二备选锁的第二关联性统计值;以及
使得所述第一备选锁和所述第二备选锁在多个关联性统计值中的所述第一关联性统计值和所述第二关联性统计值之间具有较大的一个的备选锁不分配给所述第一对象。
2.根据权利要求1所述的方法,其中,基于两个对象是否属于以下中的一个或多个来确定所述两个对象之间的关联性:同一镜像组、同一RAID组、同一资源池、以及同一去重域。
3.根据权利要求1-2中任一项所述的方法,还包括:存储为所述第一对象分配的所述锁资源的信息。
4.一种用于为多个对象分配锁资源的方法,包括:
从所述多个对象接收对锁资源的请求;以及
基于所述多个对象之间的关联性,为所述多个对象中的每个对象分配锁资源;
其中基于两个对象是否属于以下中的一个或多个来确定所述两个对象之间的关联性:同一镜像组、同一RAID组、同一资源池、以及同一去重域。
5.根据权利要求4所述的方法,其中,基于所述多个对象之间的关联性,为所述多个对象中的每个对象分配锁资源进一步包括:
响应于所述多个对象中的两个对象之间的关联性大于第一阈值,避免为所述两个对象分配相同的锁资源。
6.根据权利要求4所述的方法,还包括:
响应于所述多个对象中的两个对象之间的关联性小于第二阈值,为所述两个对象分配相同的锁资源。
7.一种用于为第一对象分配锁资源的装置,包括处理单元,所述处理单元被配置为:
获取用于所述第一对象的第一备选锁;
当所述第一备选锁已被分配给一个或多个其他对象时,确定所述第一对象与所述一个或多个其他对象中的每个对象的第一关联性;
响应于确定每个所述第一关联性均低于预定阈值,将所述第一备选锁分配给所述第一对象;
响应于确定任一所述第一关联性高于所述预定阈值:
获取用于所述第一对象的第二备选锁;
当所述第二备选锁已被分配给一个或多个其他对象时,确定所述第一对象与所述一个或多个其他对象中的每个对象的第二关联性;以及
响应于确定每个所述第二关联性均低于所述预定阈值,将所述第二备选锁分配给所述第一对象;以及
响应于确定任一所述第二关联性高于所述预定阈值:
计算所有所述第一关联性的第一统计值作为用于所述第一备选锁的第一关联性统计值;
计算所有所述第二关联性的第二统计值作为用于所述第二备选锁的第二关联性统计值;以及
使得所述第一备选锁和所述第二备选锁在多个关联性统计值中的所述第一关联性统计值和所述第二关联性统计值之间具有较大的一个的备选锁不分配给所述第一对象。
8.根据权利要求7所述的装置,其中,基于两个对象是否属于以下中的一个或多个来确定所述两个对象之间的关联性:同一镜像组、同一RAID组、同一资源池、以及同一去重域。
9.根据权利要求7-8中任一项所述的装置,还被配置为存储为所述第一对象分配的所述锁资源的信息。
10.一种用于为多个对象分配锁资源的装置,包括处理单元,所述处理单元被配置为:
从所述多个对象接收对锁资源的请求;以及
基于所述多个对象之间的关联性,为所述多个对象中的每个对象分配锁资源;
其中基于两个对象是否属于以下中的一个或多个来确定所述两个对象之间的关联性:同一镜像组、同一RAID组、同一资源池、以及同一去重域。
11.根据权利要求10所述的装置,进一步被配置为:
响应于所述多个对象中的两个对象之间的关联性大于第一阈值,避免为所述两个对象分配相同的锁资源。
12.根据权利要求10所述的装置,其中,进一步被配置为:
响应于所述多个对象中的两个对象之间的关联性小于第二阈值,为所述两个对象分配相同的锁资源。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410573345.6A CN105893137B (zh) | 2014-10-21 | 2014-10-21 | 用于为对象分配锁资源的方法和装置 |
US14/884,501 US9996289B2 (en) | 2014-10-21 | 2015-10-15 | Assigning lock resources to objects |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410573345.6A CN105893137B (zh) | 2014-10-21 | 2014-10-21 | 用于为对象分配锁资源的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105893137A CN105893137A (zh) | 2016-08-24 |
CN105893137B true CN105893137B (zh) | 2019-11-08 |
Family
ID=55749116
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410573345.6A Active CN105893137B (zh) | 2014-10-21 | 2014-10-21 | 用于为对象分配锁资源的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9996289B2 (zh) |
CN (1) | CN105893137B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116974456A (zh) | 2022-04-21 | 2023-10-31 | 戴尔产品有限公司 | 锁定存储系统中的存储区域的方法、设备和计算机程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1206478A (zh) * | 1995-12-28 | 1999-01-27 | 诺基亚电信公司 | 电信网络管理方法和系统 |
CN101946235A (zh) * | 2008-02-27 | 2011-01-12 | 国际商业机器公司 | 用于在共享处理器分区环境中移动线程的方法及装置 |
CN102339283A (zh) * | 2010-07-20 | 2012-02-01 | 中兴通讯股份有限公司 | 集群文件系统访问控制方法及集群节点 |
CN102792273A (zh) * | 2010-03-15 | 2012-11-21 | 国际商业机器公司 | 双模式读写锁 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8037169B2 (en) * | 2005-05-18 | 2011-10-11 | Oracle International Corporation | Determining affinity in a cluster |
-
2014
- 2014-10-21 CN CN201410573345.6A patent/CN105893137B/zh active Active
-
2015
- 2015-10-15 US US14/884,501 patent/US9996289B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1206478A (zh) * | 1995-12-28 | 1999-01-27 | 诺基亚电信公司 | 电信网络管理方法和系统 |
CN101946235A (zh) * | 2008-02-27 | 2011-01-12 | 国际商业机器公司 | 用于在共享处理器分区环境中移动线程的方法及装置 |
CN102792273A (zh) * | 2010-03-15 | 2012-11-21 | 国际商业机器公司 | 双模式读写锁 |
CN102339283A (zh) * | 2010-07-20 | 2012-02-01 | 中兴通讯股份有限公司 | 集群文件系统访问控制方法及集群节点 |
Also Published As
Publication number | Publication date |
---|---|
US20160110129A1 (en) | 2016-04-21 |
US9996289B2 (en) | 2018-06-12 |
CN105893137A (zh) | 2016-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11361483B2 (en) | Graph partitioning for massive scale graphs | |
US20220027210A1 (en) | Work Stealing in Heterogeneous Computing Systems | |
US10558498B2 (en) | Method for scheduling data flow task and apparatus | |
Carøe et al. | Dual decomposition in stochastic integer programming | |
US10572290B2 (en) | Method and apparatus for allocating a physical resource to a virtual machine | |
US7730185B2 (en) | Method, apparatus and computer program product for sharing resources | |
KR102635453B1 (ko) | Gpu를 위한 피드백 기반 분할 작업 그룹 디스패치 | |
Pereira et al. | PSkel: A stencil programming framework for CPU‐GPU systems | |
US20180365019A1 (en) | System and method for hybrid task management across cpu and gpu for efficient data mining | |
US20140331235A1 (en) | Resource allocation apparatus and method | |
WO2016123808A1 (zh) | 数据处理系统、计算节点和数据处理的方法 | |
US8874587B2 (en) | Tenant placement in multitenant cloud databases with one-to-many data sharing | |
CN102822798A (zh) | 用于虚拟容器系统内的资源容量评估的方法和装置 | |
WO2020119029A1 (zh) | 分布式任务调度方法、系统及存储介质 | |
US11422858B2 (en) | Linked workload-processor-resource-schedule/processing-system—operating-parameter workload performance system | |
US9965343B2 (en) | System and method for determining concurrency factors for dispatch size of parallel processor kernels | |
CN109901987A (zh) | 一种生成测试数据的方法和装置 | |
US20170269966A1 (en) | Method and apparatus for scheduling threads in many-core system | |
CN105893137B (zh) | 用于为对象分配锁资源的方法和装置 | |
CN109412865A (zh) | 一种虚拟网络资源分配方法、系统及电子设备 | |
KR101639003B1 (ko) | Cpu/gpu 기반 매니코어 시스템 및 cpu/gpu의 동시처리를 위한 작업량 분배 방법 | |
US20150066988A1 (en) | Scalable parallel sorting on manycore-based computing systems | |
CN112540844A (zh) | 集群内容器调度方法、装置、存储介质和电子设备 | |
CN115756740A (zh) | 容器虚拟机资源管理方法、装置和电子设备 | |
KR101771928B1 (ko) | 태스크 스케줄링 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200415 Address after: Massachusetts, USA Patentee after: EMC IP Holding Company LLC Address before: Massachusetts, USA Patentee before: EMC Corp. |