CN107533475B - 用于在共享存储设备中协调读取和写入过程的方法和系统 - Google Patents
用于在共享存储设备中协调读取和写入过程的方法和系统 Download PDFInfo
- Publication number
- CN107533475B CN107533475B CN201680022890.3A CN201680022890A CN107533475B CN 107533475 B CN107533475 B CN 107533475B CN 201680022890 A CN201680022890 A CN 201680022890A CN 107533475 B CN107533475 B CN 107533475B
- Authority
- CN
- China
- Prior art keywords
- data
- storage device
- computing device
- unique subdivision
- subdivision
- 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
Images
Classifications
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared 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/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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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
- 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
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
Abstract
公开了一种可缩放软件栈。具体地,本公开提供了一种系统和方法,该系统和方法针对使用存储设备的两个或多个关联的计算设备中的共享存储设备中的存储位置的逻辑所有权的分配。逻辑所有权分配可最小化存储设备的同一存储位置内发生的两个同时访问之间的潜在冲突。
Description
技术领域
本发明一般涉及软件栈。更具体地,本发明涉及共享存储设备的一种更有效的写入方式,同时最小化对同一存储位置的两个同时访问之间的潜在冲突。
背景技术
软件栈一般指相互协作来完成共同的目标或任务的一组程序。软件栈还指以特定顺序操作、同时被指示以完成特定目标或任务的一组应用。软件栈的示例可包括基于Linux的软件栈-LAMP(Linux、Apache、MYSQL、Perl/PHP/Python)或基于Windows的软件栈-WINS(Windows Server,Internet Explorer,.NET,SQL Server)。
因为利用了软件栈中的多个程序和应用,所以关于由参与软件栈的每个程序和应用在存储器中存储的数据、从存储器读取的数据、在存储器中修改的数据和从存储器删除的数据可能引起关注。任何给定栈中的多个程序和应用可读取、写入和修改同一数据。结果,两个不同的实体可能读取或写入存储器的同一指定空间。如果这种情况发生,则空间中的数据可能被破坏,因为不存在一种方法在任何给定时间点确定数据的状态。
因此,需要一种用于在多个不同的程序和应用之间读取、写入和修改共享存储器中的数据的方法,使得当两个或多个程序和/或应用被指示以对同一数据操作的情况发生时,存在数据可能被破坏的最小机会。
发明内容
请求保护一种可缩放软件栈。具体地,本公开提供一种方法,由此可缩放软件栈可有效地访问(例如,读和写)共享存储设备,同时最小化两个或多个程序或应用对同一存储位置的同时访问之间的潜在冲突。该方法包括,为每个计算设备分配存储设备内它们自身的相应存储位置,该存储位置仅特定计算设备能够例如写入或修改。通过将特定存储位置的所有权分配至一个计算设备,该方法降低了对同一存储位置的同时访问之间的潜在冲突。该所有权还可用于确定存储于特定存储位置的数据何时被保持更新,以保证最新的数据读取被获取。
附图说明
图1图示在本发明中实现的多个计算设备和存储设备的示例性系统。
图2图示(同时或接近连续)的多个访问在存储于存储设备中的同一数据上被执行的情形。
图3图示一存储设备,该存储设备被划分为多个不同片段使得每个计算节点在该存储设备中具有其自身的相应片段。
图4图示用于为每个计算节点分配其自身的相应分区的方法。
图5图示多个计算节点彼此交互并与存储设备交互以在存储设备中读取和/或写入数据的情形。
具体实施方式
本文描述了用于可缩放软件栈的系统和方法。在如下描述中,细节被提供以解释本发明的各种实施例。然而,应当理解,本发明可在没有所提供的某些细节的情况下实现。为了简化或概括本发明特定实施例的目的,某些细节也可被省略。
图1图示在本发明中实现的多个计算设备和存储设备的示例性系统。图1的系统100为简化模型,其可包括多个计算设备C1-C5 110-130和多个存储设备S1-S4135-150。
计算设备C1-C5 110-130可为任何可用的通用计算机设备或处理器。这些计算设备110-130可拥有当前被实现的现代体系结构,并且可不需要被专业化以执行本文描述的本发明的过程。
存储设备S1-S4 135-150可为任何可用的通用存储器。具体地,存储设备135-150能够存储由多种相关联的计算设备C1-C5 110-130针对不确定时间段写入的数据。应当理解,随机存取存储器(RAM)以及其他相似类型的存储器可能不是用于本发明的理想存储器,因为例如RAM具有数据的暂时存储能力。当RAM未使用时,存储于RAM的数据可能丢失。然而,这不会改变本发明在多种实施例中包含RAM的可用性。
图1的系统可包括多个网络互联105和存储互联155。网络互联105可用于将多个计算设备110-125彼此连接。存储互联155可用于将计算设备110-130与一个或多个存储设备135-150连接。网络互联105和存储互联155可为电气连接、光连接或无线连接或被实现以连接两个独立设备的电缆。可用于本发明的示例性互联可包括以太网、无限带宽(Infiniband),光纤通道,SAS(串行连接SCSI),PCIe(外围设备组件高速互联)或存储器通道。
图1的计算设备C1-C4 110-125可通过使用各种网络互联105彼此连接。在示例性实施例中,图1的计算设备C5 130被图示为与计算设备C1-C4 110-125隔离。这可表示计算设备C5 130完全无法与其它计算设备C1-C4 110-125通信,无论是对计算设备C5 130未连接的存储设备S1-S3 135-145的信息提供数据请求,还是从其他计算设备C1-C4 110-125中接收用于存储于存储设备S4 150的信息的请求。图1中还图示了多个存储互联155的实现,其将各种计算设备C1-C5 110-130连接到其各自的存储设备S1-S4 135-150。
如图1所图示,计算设备C1-C5 110-130中的每一个计算设备可直接使用一个或多个对应存储设备S1-S4 135-150。某些计算设备(例如,计算设备C1 110)可通过使用一个或多个存储互联155而直接连接到一个存储设备(例如,存储设备S1 135)。另一方面,其他计算设备(例如,计算设备C2 115)可与一个或多个其他计算设备共享存储设备(例如,存储设备S2 140、存储设备S3 145)。
计算设备(例如,计算设备C2 115)可具有到同一存储设备(例如,存储设备S2140)的多个存储互联155。实现从单个计算设备到同一存储设备的多个存储互联155可提供冗余和改进的带宽,以用于计算设备与存储设备之间的数据传输。使用多个存储互联155在以下情况下是有帮助的,即特定计算设备与存储设备之间的存储互联155中的一个是无效的(例如,繁忙、失败)。使用多个存储互联155还可用于冗余,以保证信息在所需设备之间传输,即使一个或多个互联失败。
为说明上述特征,在示例性实施例中,计算设备C2 115可被指示以将数据请求传输至存储设备S2 140。来自计算设备C2 115的数据请求可利用计算设备C2 115与存储设备S2 140之间可用的存储互联155中的一个或两个而被发送至存储设备S2 140。如果在以下情况下,即在两个存储互联155中的一个存储互联在数据请求被发出时是繁忙的,则为了更好的效率,计算设备C2 115可利用较不繁忙的存储互联155。
一旦来自计算设备C2 115的数据请求在存储设备S2 140被接收,则所请求的数据可从存储设备S2 140传输至计算设备C2 115。数据可跨可用的存储互联155中的一个或两个来传输。类似于上述情况,通过利用两个存储互联155,可提供从存储设备S2 140到计算设备C2 115的改进带宽的数据传输。通过利用两个存储互联155还可包含冗余,以保证数据被递送至计算设备C2 155,即使一个或多个存储互联155失败。在两个存储互联155中的一个存储互联失败或可能繁忙的情况下,通过利用与其他计算设备关联的另一存储互联155,计算设备C2 115仍可从存储设备S2 140接收所请求的数据。与上述情况相比,利用计算设备与存储设备(例如,计算设备C1 110与存储设备S1 135)之间的一个存储互联155的情形可能不具有增加的冗余和改进的带宽的相同优点。
在单个计算设备具有可用于访问来自单个存储设备(例如,计算设备C2 115和存储设备S2 140)的数据的相似方式下,相类似的实施例可关于计算设备和对应的网络互联105来实现。具体地,如图1中所图示,多个计算设备可直接使用同一存储设备(例如,计算设备C2-C4 115-125和存储设备S3 145)。计算设备C1 110能够请求一个、两个或全部三个计算设备C2-C4 115-125,以访问存储于存储设备S3145的数据,并将其传输回至计算设备C1110。在此情形下,计算设备C2-C4 115-125中的每一个可视为单个通信通道,其可从具有冗余和改进的带宽的存储设备S3145提供请求信息,与另一计算设备形成附加的通信通道。计算设备C1 110与计算设备C2-C4 115-125通信以获取存储于存储设备S3中的信息的这种情形,可类似于上述关于计算设备C2 115和存储设备S2 140的多个存储互联。
继续参考图1,实施例可包括对称多处理(SMP)节点。具体地,计算设备C2 115和C3120可以以两个计算设备运行同一操作系统(OS)镜像(也称单个系统镜像(SSI))的方式互联。计算设备C2 115和C3 120作为SMP节点的一个优点为,两个设备可共享关联于计算设备的同一存储器。计算设备C2 115和C3 120操作于单个OS可使任一计算设备相对于另一计算设备几乎透明地访问资源(例如,存储于存储器或所连接存储设备的信息)。这种透明性可通过指示所连接存储设备与另一连接节点直接通信(例如,传输被请求数据)来实现。
也可存在一个或多个计算设备(例如,计算设备C5 130)可隔离自另一计算设备(例如,计算设备C1-C4 110-125)的实施例。这在对应存储设备中同样适用。尽管单个计算设备和存储设备完全隔离自系统100剩余部分(例如,计算设备C5130和存储设备S4 150)的情况并非本发明的实质性特征,但这种情况可在与计算设备C5 130的全部可用网络互联105失败(例如,繁忙、故障)时产生。在出现隔离部分的情况下,计算设备可能无法与其他计算设备相通信以及从其他存储设备访问信息。在该情形下,在另一存储设备上保持驻留于被隔离存储设备(例如,存储设备S4 150)的信息拷贝是有益的。因此,存储设备S1-S3 135-145还可包括存储于存储设备S4 150的信息,其可用于在部分隔离的情况下重构存储于存储设备S4 150的信息。
如上述,可能存在单个计算设备从存储设备访问和获取数据的多种不同的可能性。包含上述多种不同的可能性的某些方法(例如,多路径规划、利用多个互联)可为数据传输提供增加的带宽和增加的冗余。尽管多个通道可用于访问请求信息的上述方法的实现可在总体系统中为数据传输提供优点,但也可能产生其他问题。一种情况描述如下。
图2图示多个访问(同时或接近连续)执行于存储设备所存储的同一数据的情形。特别地,如图所示,计算节点A 205和计算节点B 210同时共享同一存储设备220。两个计算节点A 205和B 210还基于对存储于存储位置225的数据执行操作的指令而尝试访问同一存储位置225。总体上,与存储设备220关联的存储器可包括较大区域的可能存储位置,能够相对于多个过程来保护数据,而没有过多的重叠风险。然而,可能出现多个计算设备在响应于同一数据请求时尝试访问同一存储位置225的情形。
如图2所图示,实施例可包括计算节点C 215,其能够提供相同的指令至计算节点A205和计算节点B 210。计算节点A 205和计算节点B 210同时执行所请求的过程/指令(例如,从存储设备220访问和获取数据A)。
多个计算设备可被指示以操作(例如“写入”)同一存储位置的情况可能产生。其可导致冲突,因为多个计算设备可同时或接近连续地在同一存储位置操作(例如,获取、写入或修改)。如果系统无法在不同的计算设备中保持期望的操作顺序,两个或多个不同的计算设备同时(或接近连续)的多个操作可导致数据破坏,而且在全部操作被执行后,存储位置中的数据可能不确定。例如,两个计算设备被指示以写入同一存储位置的情况可能产生。在另一示例,计算设备可被指示以从存储位置读取数据,紧接着另一计算设备被指示以修改同一存储位置的数据。在两种示例,保证合适的数据被存储和从存储位置读取是重要的。在多个计算设备(例如,图1的计算设备C2-C4 115-125)具有同一存储设备(例如,存储设备S3145)的访问路径或计算设备代表其他计算设备执行操作时,这种情况可产生。
考虑到上述情形,如果多个计算设备正在执行同一存储设备的同一存储位置的访问,可能需要协调多个计算设备的操作。该协调可能希望减少或防止两个或多个计算设备可访问、读取和/或写入同一数据区域时的潜在冲突。如果两个计算设备同时或接近连续地开始和结束读/写,当计算设备无法确定数据应当是什么时,数据可能被破坏。
解决上述问题的传统方法依靠在执行期望的操作(例如,写入)之前,对特定计算设备分配逻辑锁(或“预定”)。换言之,如果逻辑锁被授权给特定计算设备,该计算设备的操作可继续。如果逻辑锁未立即授权给特定计算设备(例如,逻辑锁被授权给另一计算设备),该计算设备可能需要等待,直到逻辑锁被释放并可被授权。与特定计算设备关联的逻辑锁授权等待可延迟该计算节点上运行的软件栈的执行。
锁的授权过程必须保证没有其他计算节点具有已被授权的逻辑锁,以防止对单个存储位置的同时修改。换言之,在任何时间,只有一个计算节点可具有授权的逻辑锁,以对特定存储位置继续执行操作。为实现上述预防,需要执行确定性方法,以检查可被授权给逻辑锁的全部其他计算节点,保证只有一个逻辑锁被提供。尽管现有技术有多种方法来估计和保证只有一个逻辑锁被授权,但这些方法均受到可缩放性的影响。换言之,连接于存储器的计算节点越多,在验证逻辑锁当前时间是否可被授权之前,对应越多数量的检查将需要被执行。执行该估计的可缩放性限制了系统中计算节点和存储设备的数量,因为计算节点的数量可能需要更大的开销来确定逻辑锁是否可被授权。
如本发明描述的一种可能的解决方案可以是,分配共享存储设备中存储器的对应非重叠片段的逻辑所有权。特定计算节点可被分配到该片段的单独逻辑所有权,并将拥有单独写入和/或修改给定存储位置的数据的能力。实现上述解决方案的实施例可防止两个或多个计算设备在相近时间或相同时间访问同一存储位置或试图重写或修改存储于同一存储位置的数据的情况。
上述方法还可帮助应对包含隔离部分的情形。特别地,分配至特定片段的计算节点可继续将数据写入其逻辑上所占有的存储器片段,而不需要与系统剩余部分同步。
图3图示存储设备320已被划分为多个不同的片段325-335,以使每个计算节点305-315在存储设备320中具有专属的相应片段325-335。在某些实施例中,一个或多个计算节点(如,计算节点C 315)仍可被分配存储设备320中的分区,而不直接连接至存储设备320。该计算节点通过使用具有与存储设备320的直接连接的另一计算节点而仍可访问存储设备320中为其所分配的分区。
参考附图,三个分区325-335被分别分配至计算节点A 305、计算节点B 310和计算节点C 315。每个计算节点具有逻辑所有权,例如用于写入、修改、重写或删除其所分配分区的特定存储位置中的数据。每个分区325-335包括存储位置的唯一集合,其不与分配至存储设备320的其他分区的其他存储位置相重叠。
图4图示用于为每个计算节点分配其自身的相应分区(即存储设备的片段或子划分)的方法。特别地,图4图示的方法400有助于图3图示的实施例的实现。
步骤405,方法400可包括执行计算,用于确定存储位置在单个存储设备内如何分配。如图1可见,存储设备可具有任何数量的相关计算设备,其可直接访问存储设备所包含的存储位置。例如,存储设备S1 135可能只有一个直接连接于存储设备的计算设备C1 110。另一方面,存储设备S3 145可具有直接连接存储设备的三个计算设备C2-C4 115-125。应当理解,可变数量的计算设备可连接于单个存储设备。还可存在其他实施例,即包括不同数量的计算设备连接于本文未描述的单个存储设备。
一旦唯一子划分的数量被确定,该子划分则可被建立,如步骤410所示。在确定多少个唯一子划分应当在实施例被建立时,标识相关计算设备的数量可能是必要的。总体上,一个唯一子划分为连接于特定单个存储设备的每个计算设备而建立。然而,可能存在以下实施例,即建立少于计算设备总数的多个唯一子划分也是可能的。例如,可能存在以下实施例,其中某些计算设备可被指示以仅执行所连接存储设备的“读”操作。该计算设备则可被放弃分配唯一的子划分,例如因为该“只读”计算设备不需要管理(例如,写入或修改)存储设备中的数据的能力。以这种方式,管理存储设备中的数据的计算设备可被按需提供存储设备内的存储位置。
在某些其他实施例中,多个子划分可被建立,以使存在多于可用计算设备的子划分。对于这种情形,可以将一个计算设备分配至一个以上的唯一子划分。然而,每个唯一子划分将仍然仅拥有一个所有者,其有能力写入或修改唯一子划分中的存储位置所存储的数据。
在步骤415,每个唯一子划分被分配至单个计算设备。如上所表示,子划分的分配对应于将唯一子划分中每个存储位置的逻辑所有权提供至该计算设备。逻辑所有权仅允许该计算设备管理唯一子划分中存储位置的数据。然而,该逻辑所有权不影响其他计算设备获取(例如,读取)存储于唯一子划分中存储位置的数据的能力。
在一个实施例,为每个计算节点分配指定存储位置可以是静态的或动态的。在一个实施例中,用于每个计算节点的存储位置可在对应存储设备的初始配置期间被分配。在初始配置期间,每个计算节点可被分配存储设备中非变化的(或静态)存储位置的逻辑所有权。
在另一实施例,用于每个计算节点的存储位置的分配可基于需求来调整。例如,如果一个计算节点趋于进行更多的操作来将新的信息写入存储器,特定计算节点可在其他计算节点不频繁地执行该操作时被重新分配更多的存储器。相反,如果后来的计算节点比当前所有者执行更多的存储器操作,则已为一个计算节点分配的存储位置可类似地被重新分配至不同的计算节点。
在其它实施例,被已分配计算节点极少写入的特定位置可被动态和暂时地声明为“只读”位置。将该位置分配为“只读”可改进读取性能,至少直到所分配的计算节点重新开始只读位置的写操作。
利用上述实施例,如图2讨论的两个或多个计算节点尝试在同一存储位置操作(例如,写入)的情形可被减少。将存储位置的逻辑所有权分配到一个计算节点可指示在任一时间只有一个计算节点可具有单独将数据修改或写入特定存储位置的能力。在任何给定时间跟踪什么数据应当在特定存储位置中可能现在更容易和更有效地执行。
然而,为分配至特定存储设备的每个计算节点的上述独立存储位置的逻辑分配不影响任何计算节点访问(例如,读取)存储于特定存储位置的数据的能力。换言之,存储位置的逻辑所有权可不限制计算节点获取存储位置以执行例如查找或读取。上述逻辑所有权分配可仅属于特定计算节点的权限,以“写入”或修改特定存储位置。作为本发明的优点,还可实现一种更有效的方式来为计算设备确定特定存储位置中数据的当前“读取”是否为最新。
在现有技术中,当多个计算节点能够在同一存储位置同时读和/或写(或与其他读和/或写接近连续)时,可能不清楚存储位置中当前读取的数据是否为最新。例如,在由一个计算设备在特定存储位置执行读取时,另一计算节点可能正在修改同一存储位置的数据。为确定特定存储位置的数据是否为最新,执行数据读取的计算设备可需要从可访问特定存储位置的全部计算设备中请求确认。该确认可针对确定由特定计算设备执行的最近“写入”是否与数据读取冲突。基于可访问特定存储位置的计算设备的数量,计算设备的这种确定可能是麻烦和昂贵的。如果没有近期“写入”操作被执行,计算设备可提供读取自有问题的存储位置的当前数据。否则,如果确定数据在首次读取被执行期间被修改,计算设备可执行同一存储位置的重读以获取存储于同一存储位置的数据的更新形式。
从本发明考虑,基于上述现有技术的改进方法被提供,用于确定特定存储位置的数据是否为最新。特别地,本发明可简化对特定存储位置的数据是否为最新的确定方法。如现有技术所表示,对特定存储位置的数据执行“读取”的计算设备可能需要确定谁是存储位置的当前所有者以及存储位置何时被最后一次写入。确认可被请求自可访问特定存储位置的一个或多个不同的可能计算节点。
然而,利用本发明,由于每个存储位置被逻辑上分配至单个计算节点,由此单个计算节点具有单独写入或修改特定存储位置的能力,确定被读取数据是否为最新的开销可被降低。特别地,与可能询问多个计算节点最后一次近期写操作何时对特定存储位置执行(如果可利用)不同,读取计算设备现可更简单地标识被允许写入的单独计算节点。通过从被分配的用于该存储位置的计算设备直接请求关于特定存储位置的信息,读取计算节点可更简单和直接地确定读取自该存储位置的当前数据是否为最近修改版本。
在其它实施例中,当特定存储位置的所有权改变(例如,从一个计算节点重新分配至另一个)时,关于所有权的改变的信息也可被简单地检索。特别地,特定存储位置的原始所有者可存储可用于标识存储位置的当前所有者的信息(例如,指针)。所有者可周期性地和异步地发布其存储位置的相应所有权,其可进一步加速查找特定存储位置的当前所有者。
图5图示一种情形,其中多个计算节点相互交互以及与存储设备交互以在存储设备读取和/或写入数据。更特别地,该情形示出了可在示例性读过程期间产生的计算节点和存储设备之间的多种通信。如上所示,每个计算节点可读取或写入所属的各个被分配子划分,而不检查其他计算节点。然而,为读取存储于其他被分配子划分的数据,多种检查可能需要被执行,以保证正确的数据被获取。
类似于图3图示的情形,图5的情形包括三个计算节点A,B和C(505-515),其每一个均具有位于存储设备A 520的其身相应的被分配分区A,B和C(525-535)。如果计算节点(例如,计算节点C 515)期望在与计算节点关联的分配分区(例如,分区C 535)的存储位置读取和/或写入数据,计算节点可以进行数据读取和/或写入,而不执行对其他计算节点(例如,计算节点A 505和计算节点B 510)的任何必要的检查。计算节点可替代地直接执行被分配分区560中的存储位置的过程(例如,读取和/或写入)。
在第二示例中,如果计算节点(例如,计算节点B 510)被指示以读取存储于不在被分配分区(例如,分区A 525)的存储位置的数据,计算节点(例如,计算节点B 510)将需要与数据所存储的被分配分区(例如,分区A 525)的所有者(例如,计算节点A 505)相通信。存在多个步骤540、545、550,其中计算节点(例如,计算节点B 510)可能需要在从与被分配分区(例如,分区A 525)关联的存储位置获取信息555之前执行,以保证被读取数据是正确的。该步骤540、545、550可由计算节点(例如,计算节点B 510)在尝试读取未分配至计算节点的分区(例如,分区A 525)中的数据期间并行地执行。
如上所述,步骤540、545、550可由计算节点B 510执行,其与读取位于分区A 525的数据并行执行。步骤540对应于初始请求,由计算节点B 510从分区A 525的所有者(例如,计算节点A 505)询问位于分区A 525的数据有关的信息。该请求可包括从计算节点A 505请求关于数据所存储的存储位置的当前所有权的信息和数据更新状态。更新状态可表示数据何时最后一次被所有者(例如,计算节点A505)修改。例如,在数据与读取同时(或至少接近连续)被修改的情况下,可能需要指示计算节点B 510取消或忽略当前读取,并重读存储于存储位置的数据,以保证数据的更新版本被获取。否则,如果更新状态未呈现关于当前读取的数据版本的任何潜在冲突,计算节点B 510可由所有者(例如,计算节点A 505)发出通知,即数据版本为最新。
如上所示,在步骤540执行的请求还可请求关于数据所在存储位置的所有权的信息。总体上,存储于分区A 525的数据被分配至计算节点A 505。请求将确认计算节点A 505为所有者并传送关于数据的任何附加信息(例如,更新状态信息)。如上所示,分区的所有权可被重新分配。在分区的所有权可基于需要来重新分配的实施例中(例如,计算节点执行更多的读取或写入),该请求可确认计算节点A505是否仍为分区A 525的所有者或分区的所有权是否已被重新分配至不同的计算节点。原始所有者(例如,计算节点A 505)可包括标识分区的新的/当前所有者的信息(例如,指针)。如果分区的所有权已被重新分配,则分区B 510将需要针对关于数据的信息(例如,更新状态信息)而与新的所有者相通信。
在步骤545,计算节点A 505基于步骤540提供的请求而提供信息至计算节点B510。总体上,每个计算节点(例如,计算节点A 505)包含属于存储于其被分配分区的数据的信息。如上述,该信息可通知计算节点B 510当前数据读取是否应当继续(或可选地取消/忽略和重新开始)。该信息可包括细节,如数据所存储的存储位置的当前所有者,以保证关于存储位置的更新信息可被获取。应当理解,其他类型的信息也可在步骤540由计算节点B510请求。然后,来自计算节点A 505的响应因此可被提供。其他类型的信息还可用于通知当前读取是否可被完成或数据是否为最新。
步骤555对应于由计算节点B 510执行的读取,以获取存储于分区A 525相关存储位置的所请求数据。步骤555可与以上表示的步骤540、545、550并行执行。即使初始读取可与步骤540、545、550开始于同一时间,计算节点B 510可被指示以基于步骤540、545、550的结果来取消或忽略(即丢弃)当前读取。例如,步骤540、545、550的结果可表示当前读取的数据可能不是最新的。因此,可能期望计算节点B 510启动新的读取过程,以保证最新数据被获取。
前述对本文技术的详细描述已被呈现用于说明和描述。其并非意图穷举或将技术限制在公开的精确形式。根据上述教导的多种修改和变型是可能的。所描述的实施例被选择以用最佳方式说明该技术的原理及其实际应用,由此使本领域其他技术人员以最佳方式利用多种实施例中的技术以及适合所考虑的特殊用途的多种修改。该技术的范围意在由权利要求限定。
Claims (20)
1.一种用于在共享存储设备的多个处理器中协调读取和写入过程的方法,所述方法包括:
针对每个存储设备,标识能够将数据存储至特定存储设备的对应数量的计算设备;
针对每个存储设备,建立所述特定存储设备内的对应数量的子划分,其中子划分的所述数量基于能够将数据存储至所述特定存储设备的计算设备的所述数量;以及
针对每个存储设备,将所述特定存储设备内的唯一子划分分配至能够将数据存储至所述特定存储设备的所述计算设备中的每一个计算设备,其中被分配所述唯一子划分的所述计算设备具有单独管理所述唯一子划分中的数据的能力,其中所述单独管理所述唯一子划分中的数据的能力允许除被分配所述唯一子划分的所述计算设备之外的其他计算设备读取所述唯一子划分中的所述数据,而不改变所述唯一子划分的所有权或分配,
其中被分配特定唯一子划分的计算设备执行如下步骤:
从未被分配所述特定唯一子划分的请求计算设备接收读取请求,所述读取请求用于请求对存储在所述唯一子划分内的特定存储位置中的数据的访问,其中未被分配所述特定唯一子划分的所述请求计算设备执行与所述读取请求对应的读取操作,以获取所请求的存储在所述唯一子划分内的所述特定存储位置中的数据;以及
当针对所述请求计算设备的数据传输完成时,传输完成状态,其中所述完成状态被传输至所述请求计算设备。
2.根据权利要求1所述的方法,其中被分配唯一子划分的请求计算设备执行写入操作,所述写入操作请求将数据存储在所述存储设备的所述唯一子划分内的特定存储位置中。
3.根据权利要求1所述的方法,其中未被分配所述特定唯一子划分的计算设备执行如下步骤:
启动存储在未分配至所述计算设备的所述特定唯一子划分中的数据的初始读取;
将关于存储在所述特定唯一子划分中的所述数据的信息的请求传输至被分配所述特定唯一子划分的所述计算设备,其中关于所述数据的所述信息包括所述数据的当前所有权和所述数据的状态;
如果所述数据的所有权分配和状态是最新的,则从被分配所述特定唯一子划分的所述计算设备接收完成状态。
4.根据权利要求3所述的方法,进一步包括:
从被分配所述特定唯一子划分的所述计算设备接收如下指示:被读取的所述数据不再是最新的,其中所述指示在所述完成状态的传输之前或期间被接收;以及
将指令传输至未被分配所述特定唯一子划分的执行所述读取过程的所述计算设备,其中所述指令包括执行当前或另一存储位置重读的指示,以获取数据的最新版本。
5.根据权利要求3所述的方法,进一步包括:
接收被分配所述特定唯一子划分的所述计算设备不再是所述唯一子划分的当前所有者的指示,其中所述指示在所述完成状态的传输之前或期间被接收;以及
将指令传输至未被分配所述特定唯一子划分的执行所述读取过程的所述计算设备,其中所述指令包括如下指示:重新估计所述唯一子划分的所有权、从所重新估计的所述唯一子划分的所有者中重新请求关于所述特定唯一子划分的数据、以及重新读取当前存储位置或另一存储位置以获取数据的最新版本的指示。
6.根据权利要求1所述的方法,其中从所述请求计算设备接收所述读取请求和所述请求计算设备执行与所述读取请求对应的所述读取操作被同时执行。
7.根据权利要求1所述的方法,其中针对每个存储设备,将具有所述特定存储设备的所述唯一子划分分配至连接到所述特定存储设备的所述计算设备中的每一个计算设备是静态的。
8.根据权利要求1所述的方法,其中针对每个存储设备,将具有所述特定存储设备的所述唯一子划分分配至连接到所述特定存储设备的所述计算设备中的每一个计算设备是动态的。
9.根据权利要求1所述的方法,其中被分配至特定存储设备的所述唯一子划分的大小基于具有所述特定存储设备的特定计算设备的操作频率。
10.根据权利要求1所述的方法,其中单独管理数据的能力包括写入存储位置中的能力或修改所述存储位置中的数据的能力。
11.一种用于在共享存储设备的多个处理器中协调读取和写入过程的系统,该系统包括:
多个存储设备,所述存储设备包括存储在各个存储位置的数据;
多个计算设备,所述计算设备用于利用所述存储设备执行各种操作,其中每个计算设备包括存储器,并执行存储在存储器中的指令,使得:
针对每个存储设备,标识能够将数据存储至特定存储设备的对应数量的计算设备;
针对每个存储设备,建立所述特定存储设备内对应数量的子划分,其中子划分的所述数量基于能够将数据存储至所述特定存储设备的计算设备的所述数量;以及
针对每个存储设备,将所述特定存储设备内的唯一子划分分配至能够将数据存储至所述特定存储设备的所述计算设备中的每一个计算设备,其中被分配所述唯一子划分的所述计算设备具有单独管理所述唯一子划分中的数据的能力,其中所述单独管理所述唯一子划分中的数据的能力允许除被分配所述唯一子划分的所述计算设备外的其他计算设备读取所述唯一子划分中的所述数据,而不改变所述唯一子划分的所有权或分配,
其中被分配特定唯一子划分的每个计算设备执行如下步骤:
从未被分配所述特定唯一子划分的请求计算设备接收读取请求,所述读取请求用于请求对存储在所述唯一子划分内的特定存储位置中的数据的访问,其中未被分配所述特定唯一子划分的所述请求计算设备执行与所述读取请求对应的读取操作,以获取所请求的存储在所述唯一子划分内的所述特定存储位置中的数据;以及
当针对所述请求计算设备的数据传输完成时,传输完成状态,其中所述完成状态被传输至所述请求计算设备。
12.根据权利要求11所述的系统,其中被分配唯一子划分的请求计算设备执行写入操作,所述写入操作请求将数据存储在所述存储设备的所述唯一子划分内的特定存储位置中。
13.根据权利要求11所述的系统,其中未被分配所述特定唯一子划分的计算设备执行如下步骤:
启动存储在未分配至所述计算设备的所述特定唯一子划分中的数据的初始读取;
将关于存储在所述特定唯一子划分中的所述数据的信息的请求传输至被分配所述特定唯一子划分的所述计算设备,其中关于所述数据的所述信息包括所述数据的当前所有权和所述数据的状态;
如果所述数据的所有权分配和状态是最新的,则从被分配所述特定唯一子划分的所述计算设备接收完成状态。
14.根据权利要求13所述的系统,其中未被分配所述特定唯一子划分的所述计算设备进一步执行如下步骤:
从被分配所述特定唯一子划分的所述计算设备接收如下指示:被读取的所述数据不再是最新的,其中所述指示在所述完成状态的传输之前或期间被接收;以及
执行当前或另一存储位置重读,以获取数据的最新版本。
15.根据权利要求13所述的系统,其中未被分配所述特定唯一子划分的所述计算设备进一步执行如下步骤:
接收被分配所述特定唯一子划分的所述计算设备不再是所述唯一子划分的当前所有者的指示,其中所述指示在所述完成状态的传输之前或期间被接收;以及
执行重新估计所述唯一子划分的所有权、从所重新估计的所述唯一子划分的所有者中重新请求关于所述特定唯一子划分的数据、以及重新读取当前存储位置或另一存储位置以获取数据的最新版本。
16.根据权利要求11所述的系统,其中从所述请求计算设备接收所述读取请求和所述请求计算设备执行与所述读取请求对应的所述读取操作被同时执行。
17.根据权利要求11所述的系统,其中针对每个存储设备,将具有所述特定存储设备的所述唯一子划分分配至连接到所述特定存储设备的所述计算设备中的每一个计算设备是静态的。
18.根据权利要求11所述的系统,其中针对每个存储设备,将具有所述特定存储设备的所述唯一子划分分配至连接到所述特定存储设备的所述计算设备中的每一个计算设备是动态的。
19.根据权利要求11所述的系统,其中被分配至特定存储设备的所述唯一子划分的大小基于具有所述特定存储设备的特定计算设备的操作频率。
20.根据权利要求11所述的系统,其中单独管理数据的能力包括写入存储位置中的能力或修改所述存储位置中的数据的能力。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/710,492 US11068420B2 (en) | 2015-05-12 | 2015-05-12 | Scalable software stack |
US14/710,492 | 2015-05-12 | ||
PCT/US2016/032117 WO2016183328A1 (en) | 2015-05-12 | 2016-05-12 | Scalable software stack |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107533475A CN107533475A (zh) | 2018-01-02 |
CN107533475B true CN107533475B (zh) | 2021-04-06 |
Family
ID=57248615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680022890.3A Active CN107533475B (zh) | 2015-05-12 | 2016-05-12 | 用于在共享存储设备中协调读取和写入过程的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11068420B2 (zh) |
EP (1) | EP3295307A4 (zh) |
CN (1) | CN107533475B (zh) |
WO (1) | WO2016183328A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11068420B2 (en) | 2015-05-12 | 2021-07-20 | Hewlett Packard Enterprise Development Lp | Scalable software stack |
WO2017173162A1 (en) | 2016-03-31 | 2017-10-05 | Dexcom, Inc. | Systems and methods for inter-app communications |
CN113438920A (zh) | 2018-12-19 | 2021-09-24 | 德克斯康公司 | 间歇性监测 |
GB2582785A (en) * | 2019-04-02 | 2020-10-07 | Graphcore Ltd | Compiling a program from a graph |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101346700A (zh) * | 2005-12-26 | 2009-01-14 | 安泰科技有限公司 | 便携式装置和用于控制便携式装置中的共享存储器的方法 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2594979B2 (ja) | 1987-10-23 | 1997-03-26 | 株式会社日立製作所 | マルチプロセツサシステム |
US6542926B2 (en) | 1998-06-10 | 2003-04-01 | Compaq Information Technologies Group, L.P. | Software partitioned multi-processor system with flexible resource sharing levels |
US6321238B1 (en) | 1998-12-28 | 2001-11-20 | Oracle Corporation | Hybrid shared nothing/shared disk database system |
US6484185B1 (en) | 1999-04-05 | 2002-11-19 | Microsoft Corporation | Atomic operations on data structures |
US20030110205A1 (en) | 2001-12-07 | 2003-06-12 | Leith Johnson | Virtualized resources in a partitionable server |
US7389508B2 (en) | 2003-09-25 | 2008-06-17 | International Business Machines Corporation | System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment |
CH696421A5 (de) * | 2003-12-18 | 2007-06-15 | Tecpharma Licensing Ag | Autoinjektor mit Arretierung des Wirkstoffbehälters. |
JP4304308B2 (ja) * | 2004-06-15 | 2009-07-29 | 日本電気株式会社 | ストレージ装置とその論理記憶装置割り当て制御方法 |
US7506009B2 (en) | 2005-01-28 | 2009-03-17 | Dell Products Lp | Systems and methods for accessing a shared storage network using multiple system nodes configured as server nodes |
US8762595B1 (en) * | 2005-04-05 | 2014-06-24 | Oracle America, Inc. | Method for sharing interfaces among multiple domain environments with enhanced hooks for exclusiveness |
US7631150B2 (en) | 2006-09-29 | 2009-12-08 | Broadcom Corporation | Memory management in a shared memory system |
US8056084B2 (en) | 2007-01-25 | 2011-11-08 | Hewlett-Packard Development Company, L.P. | Method and system for dynamically reallocating a resource among operating systems without rebooting of the computer system |
US8010710B2 (en) | 2007-02-13 | 2011-08-30 | Mosaid Technologies Incorporated | Apparatus and method for identifying device type of serially interconnected devices |
US8346719B2 (en) | 2007-05-17 | 2013-01-01 | Novell, Inc. | Multi-node replication systems, devices and methods |
US7679311B2 (en) * | 2007-06-29 | 2010-03-16 | Caterpillar Inc. | System and method for dynamic field weakening |
US8230435B2 (en) * | 2008-02-12 | 2012-07-24 | International Business Machines Corporation | Authenticating a processing system accessing a resource |
US7958381B2 (en) * | 2008-06-27 | 2011-06-07 | International Business Machines Corporation | Energy conservation in multipath data communications |
US8478835B2 (en) * | 2008-07-17 | 2013-07-02 | Netapp. Inc. | Method and system for using shared memory with optimized data flow to improve input/output throughout and latency |
US8103827B2 (en) * | 2009-02-24 | 2012-01-24 | International Business Machines Corporation | Managing processing systems access to control blocks providing information on storage resources |
US8762680B2 (en) * | 2009-05-19 | 2014-06-24 | International Business Machines Corporation | Scaling energy use in a virtualized environment |
CN102662913B (zh) | 2012-03-29 | 2015-05-06 | 佛山华芯微特科技有限公司 | 用于提高mcu存储性能的方法及其对应的mcu芯片 |
US20140035924A1 (en) * | 2012-08-01 | 2014-02-06 | Apollo Group, Inc. | Trend highlighting |
US9213649B2 (en) | 2012-09-24 | 2015-12-15 | Oracle International Corporation | Distributed page-table lookups in a shared-memory system |
US9417899B2 (en) * | 2013-03-14 | 2016-08-16 | International Business Machines Corporation | Memory page de-duplication in a computer system that includes a plurality of virtual machines |
US9361215B2 (en) | 2013-05-31 | 2016-06-07 | Apple Inc. | Memory allocation improvements |
US11068420B2 (en) | 2015-05-12 | 2021-07-20 | Hewlett Packard Enterprise Development Lp | Scalable software stack |
-
2015
- 2015-05-12 US US14/710,492 patent/US11068420B2/en active Active
-
2016
- 2016-05-12 CN CN201680022890.3A patent/CN107533475B/zh active Active
- 2016-05-12 WO PCT/US2016/032117 patent/WO2016183328A1/en active Application Filing
- 2016-05-12 EP EP16793531.1A patent/EP3295307A4/en not_active Ceased
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101346700A (zh) * | 2005-12-26 | 2009-01-14 | 安泰科技有限公司 | 便携式装置和用于控制便携式装置中的共享存储器的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107533475A (zh) | 2018-01-02 |
EP3295307A1 (en) | 2018-03-21 |
US20160335002A1 (en) | 2016-11-17 |
US11068420B2 (en) | 2021-07-20 |
EP3295307A4 (en) | 2018-05-16 |
WO2016183328A1 (en) | 2016-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103136110B (zh) | 内存管理方法、内存管理装置及numa系统 | |
US10178168B2 (en) | Read-after-write consistency in data replication | |
JP3871305B2 (ja) | マルチプロセッサ・システムにおけるメモリ・アクセスの動的直列化 | |
CN107533475B (zh) | 用于在共享存储设备中协调读取和写入过程的方法和系统 | |
US7774785B2 (en) | Cluster code management | |
US9535873B2 (en) | System, computer-implemented method and computer program product for direct communication between hardward accelerators in a computer cluster | |
US9858190B2 (en) | Maintaining order with parallel access data streams | |
US10331581B2 (en) | Virtual channel and resource assignment | |
CN112099728B (zh) | 一种执行写操作、读操作的方法及装置 | |
US9063929B2 (en) | Information processing apparatus, information processing method, computer-readable recording medium having stored therein program | |
US7490203B2 (en) | Method for dumping data in processing systems to a shared storage | |
US10860224B2 (en) | Method and system for delivering message in storage system | |
US20170366612A1 (en) | Parallel processing device and memory cache control method | |
CN105718589B (zh) | 访问文件的方法和装置 | |
WO2018176397A1 (zh) | 一种锁分配的方法、装置和计算设备 | |
CN110413217B (zh) | 管理存储系统的方法、设备和计算机程序产品 | |
CN109783002B (zh) | 数据读写方法、管理设备、客户端和存储系统 | |
US10474545B1 (en) | Storage system with distributed input-output sequencing | |
US20210141535A1 (en) | Accelerating memory compression of a physically scattered buffer | |
CN114281516A (zh) | 一种基于numa属性的资源分配方法及装置 | |
US10635336B1 (en) | Cache-based partition allocation | |
JP3719976B2 (ja) | 二重化コントローラ構成ディスク記憶システム向けコントローラ、及び同コントローラが二重化されたディスク記憶システム | |
CN111837104A (zh) | 一种在多个处理器之间调度软件任务的方法和装置 | |
JP2008276322A (ja) | 情報処理装置、情報処理システムおよび情報処理方法 | |
US20230315636A1 (en) | Multiprocessor system cache management with non-authority designation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |