CN101542448B - 多处理器存储区域网中锁定管理器的轮换 - Google Patents
多处理器存储区域网中锁定管理器的轮换 Download PDFInfo
- Publication number
- CN101542448B CN101542448B CN200780043455XA CN200780043455A CN101542448B CN 101542448 B CN101542448 B CN 101542448B CN 200780043455X A CN200780043455X A CN 200780043455XA CN 200780043455 A CN200780043455 A CN 200780043455A CN 101542448 B CN101542448 B CN 101542448B
- Authority
- CN
- China
- Prior art keywords
- processor
- nuclear
- locking request
- request
- frame
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
Abstract
在一个实施例中,提供了一种解决方案,其中锁管理器被保持在多核或多处理器环境中的多个核或处理器之间移动。通过将锁管理器从处理器“跳”到处理器,防止了任何处理器处的瓶颈。移动的频率可基于例如计数器,该计数器对锁管理器处理输入/输出的次数进行计数并且一旦满足预定阈值就将锁管理器移至不同的处理器。在本发明的另一实施例中,在处理器之间移动的频率可基于计时器,该计时器对锁管理器已对处理器操作的时间量进行计时并且一旦达到预定时间就将锁管理器移至不同的处理器。
Description
技术领域
本公开涉及存储区域网(storage area network)。
背景技术
存储区域网(SAN)是如下的计算机系统:其中诸如独立磁盘冗余阵列(RAID)设备之类的大海量存储设备经由高速网络技术(相对于例如经由系统总线)连接至一个中央处理器或多个处理器。SAN越来越多地用于存储巨量信息,并且它们的使用已随着因特网的兴起而指数地增长。
存在两种实现SAN的一般方式:集中式和分散式。集中式SAN将多个主机联系到具有大量高速缓存和冗余电源的单个存储系统。图1示出通常的集中式SAN。也称为主机100、102、104的启动器与大海量存储设备106通信。
另一方面,分散式SAN将多个海量存储设备与诸如交换机之类的集中式控制器连接,该集中式控制器协调主机与多个海量存储设备之间的存储。图2示出通常的分布式SAN。这里,启动器200、202、204经由交换机212与由若干大海量存储设备206、208、210所组成的虚拟SAN通信。
存在可用在SAN内的若干不同应用,例如,卷管理应用、数据复制应用、数据迁移应用以及数据保护应用等等。这些应用或者在主机侧或者在存储装置侧被操作。
图3示出通常SAN中的IO命令的操作。命令300从启动器302发送至存储装置304。在此示例中,命令可以是读请求。这样,存储装置304然后向启动器302发送返回数据项306、308、310。一旦所有的数据已被发送,存储装置304就发送返回响应消息312。
在主机侧操作的应用能够屏蔽来自存储装置侧的操作的物理细节。类似地,在存储装置侧操作的应用能够屏蔽来自主机侧的操作的物理细节。然而,在任一实现方式中,用户经常受惠于单个销售商。例如,假如用户希望实现主机侧的应用,那么使用该应用的任何主机都必须来自分发该主机侧应用的销售商。类似地,假如用户希望实现存储装置侧的应用,那么使用该应用的任何存储装置都必须来自分发该存储装置侧应用的销售商。
附图说明
图1示出通常的集中式SAN。
图2示出通常的分布式SAN。
图3示出通常SAN中的IO命令的操作。
图4示出SAN中所执行的命令的示例。
图4A示出示例软件栈。
图5示出用于处理互锁请求的示例方法。
图6示出用于处理互锁请求的示例装置。
图7示出用于在存储区域网中具有多个处理器或核的设备处处理帧的示例方法。
图8示出用于在存储区域网中具有多个处理器或核的设备处处理帧的另一示例方法。
图9示出用于在存储区域网中具有多个处理器或核的设备处处理帧的另一示例方法。
图10示出用于在存储区域网中具有多个处理器或核的设备处处理帧的另一示例方法。
图11示出用于在存储区域网中具有多个处理器或核的设备处处理帧的示例装置。
图12示出用于在存储区域网中具有多个处理器或核的设备处处理帧的另一示例装置。
具体实施方式
概述
提供了一种解决方案,其中锁管理器(lock manager)被保持在多核或多处理器环境中的多个核或处理器之间移动。通过将锁管理器从处理器“跳”到处理器,防止了任何处理器处的瓶颈。移动的频率可基于例如计数器,计数器对由锁管理器处理输入/输出的次数进行计数并且一旦满足预定阈值就将锁管理器移至不同的处理器。在本发明的另一实施例中,在处理器之间移动的频率可基于计时器,计时器对锁管理器已经对处理器操作的时间量进行计时并且一旦达到预定时间就将锁管理器移至不同的处理器。
示例实施例
在此应用中,陈述了许多具体细节,以便提供对本发明的彻底理解。然而,本发明可在没有这些具体细节中的一些或全部的情况中而被实践,这对本领域的技术人员而言将会是显然的。在其他实例中,没有详细描述公知的处理步骤,以便不模糊本发明。
提供了一种解决方案,其中SAN应用被移至分布式SAN环境中的交换机。这使应用能有效且高效地操作,而不用关心主机和存储装置的特定销售商。它还提供了单点管理。
SAN中来自和去往主机和存储装置的输入和输出一起称为SAN的交换或流。此交换通常以输入/输出(IO)来测量。传统上,每个输入或输出由主机发送并且在存储装置处终止,或者反之亦然。这是因为将发送或解释IO的应用位于主机或者存储装置处。因为本发明描述将应用移至交换机,所以在本发明的一个实施例中,IO可在交换机(或位于主机和存储装置之间的一些其他装置)处被终止。应当注意,此文档通篇使用的术语“存储装置”应当指单个存储设备或者一群存储设备。
图4示出SAN中所执行的命令的示例。类似于图3,此图中的命令是读请求。然而,命令404必须首先在交换机406处被终止,而不是通信直接发生在启动器400和存储装置402之间。交换机406然后对命令执行一个或多个处理,并且然后生成用于向存储装置402通信的结果命令408。对在交换机406处被终止的数据消息410、412、414同样如此,在数据416、418、420被重放(replay)至启动器400之前,可对数据消息410、412、414执行处理。
在本发明的一个实施例中,可使用与标准交换机兼容的定制硬件。这样的实施例避免了修改交换机本身的必要。此硬件可称为存储服务模块(SSM),SSM可以是插入交换机并且包括硬件和软件的刀片(blade)。使用了交换机本身或者使用了替代硬件和/或软件的替代实施例是可以的。
在本发明的一个实施例中,所使用的软件可拆分成三个单独的部分。图4A示出示例软件栈。伙伴软件(partner software,PS)层450可包括将要被运行的基础应用(underlying application)。控制路径处理器(CPP)层452可控制软件和硬件。数据路径处理器(DPP)层454可以是应用处理本身可被执行的地方。每个DPP本质上表示多处理器或多核环境中的单个处理器或核。
用于在SAN内通信的一个普通协议是小型计算系统接口(SCSI)。主机可通过使用光纤通道(FC)交换技术经由SCSI协议来以高速通信。近来的进展已使这样的通信能利用10Gb/s FC或10Gig以太网标准而以高达10Gb/s发生。因此,由SAN交换机所执行的复杂的虚拟化功能也以10Gb/s来执行将会是有利的,以免产生瓶颈。遗憾的是,在大多数交换机中普通的单处理器体系结构对这些级别的线路速度而言不是可行的解决方案。任何解决方案都需要使用多处理器或多核处理器技术。
然而,这样的高性能需要复杂的软件。存在当试图利用多核处理器来控制虚拟SAN时出现的若干不同技术问题。
所有存储设备中一个共同关心的方面与数据完整性有关。具体地,当多个主机正在访问同一存储卷时,经常必需锁定存储卷的特定部分以确保一次仅仅一个主机可修改基础数据(underlying data)。如果在适当位置没锁并且两个主机发出矛盾的写命令,则数据讹误和可能的系统故障可能发生。在访问卷之前,启动器发出请求锁定该卷的互锁请求(interlockrequest)。在通常的单核或单处理器环境中,用于每个存储卷的集中式锁管理器接收互锁请求并且控制相应存储卷的锁定以确保数据完整性。然而,如果有人希望之前所讨论的高线路速度,则这样的集中式锁管理器在多核或多处理器环境中是不可以的。这是因为单个锁管理器会表现为交换机处潜在的瓶颈点。
为了解决此问题,提供了本发明的一个实施例,其中用于每个卷的锁管理器被保持在多个核或处理器之间移动。通过将锁管理器从处理器“跳”到处理器,防止了任何处理器处的瓶颈。希望经常从处理器到处理器地移动锁管理器以防止这样的瓶颈,但不是太经常以致于其变得低效。在本发明的一个实施例中,在处理器之间移动的频率可基于计数器,该计数器对锁管理器处理IO的次数进行计数并且一旦满足预定阈值就将锁管理器移至不同的处理器。在本发明的另一实施例中,在处理器之间移动的频率可基于计时器,该计时器对锁管理器已对处理器操作的时间量进行计时并且一旦达到预定时间就将锁管理器移至不同的处理器。应当注意,当达到预定阈值或时间时,如下情况是可能的:当前选中的处理器可能仍是负载最小的处理器。在这样的情况下,如下的实施例是可以的:或者无论如何都改变处理器,或者其中总是选择负载最小的处理器,即使它与当前选中的处理器是同一处理器也是如此。
在本发明的一个实施例中,当锁管理器被移至不同处理器时,所选择的处理器是负载最小(即此刻正在处理最少量的IO)的处理器。其他实施例是可以的,其中其他准则结合或者代替处理器的负载级别而被使用,诸如随机选择例程、轮转调度(round robin)方案或用户选择。
在本发明的一个实施例中,利用上述的锁管理器提供了到同一虚拟逻辑单元号(VLUN)的共同访问。图5示出用于处理互锁请求的示例方法。此处理可以在SAN的主机和存储装置侧之间的中介(intermediary)处执行,诸如在交换机中执行。然而,如下实施例是可以的:其中处理物理地在主机和存储装置侧被执行,但是软件起到了中介的作用。在500,接收互锁请求。在502,判断这是否是第一互锁请求。如果是,则在504,可选择负载最小的DPP。如果不是,则先前已选择了DPP。这样,在506,可判断是否已达到针对选中DPP的连续互锁请求的预定阈值。这可通过将互锁请求的计数器与预定次数相比较来实现。可使用计时器,并且可将计时器相对预定时间作比较。如果已达到预定阈值,则处理进至504,其中选择负载最小的DPP。在508,互锁请求由选中的DPP处理。在510,可递增(或递减,基于使用的实施例)计数器以指示一个互锁请求已被处理。处理然后循环至500用于每个所接收的互锁请求。
在另一实施例中,可使用诸如多核Octeon处理器之类的处理器。在此实施例中,互锁请求被包含在称为工作队列项(WQE)的数据结构中,可利用标签来标注该WQE,以指示该WQE是互锁请求。核拾取WQE并且对它进行处理。在对一定数量的WQE进行处理之后(或者基于时间),该核将核群(core-group)改变为核映射(core-mapping),从而使排队的随后的WQE被分派至(一个或多个)新核并且在那里被处理。新核可以是该核群中最不忙的。通过这样做,明显地实现了负载平衡。
图6示出用于处理互锁请求的示例装置。锁定请求接收器600可接收互锁请求。耦合至锁定请求接收器600的第一互锁请求确定器602可判断这是否是第一互锁请求。如果是,则耦合至锁定请求接收器600的锁定请求处理器重新选择器(lock request processor re-selctor)604可选择用来处理锁定请求处理器。这可包括可选择负载最小处理器的负载最小处理器选择器606。如果这不是第一互锁请求,则DPP先前已被选中。这样,耦合至第一互锁请求确定器602并且耦合至锁定请求处理器重新选择器604的锁定请求处理器预定阈值确定器(predetermined threshold of lock requestsprocessor determiner)608可判断是否已达到针对选中DPP的连续互锁请求的预定阈值。在一个替代实施例中,此部件可利用处理器预定时间确定器(predetermined time processor determiner)替换,处理器预定时间确定器可判断针对选中处理器的计时器是否已达到预定时间。如果已达到预定阈值或时间,则锁定请求处理器重新选择器604可选择用来处理锁定请求的处理器。互锁请求然后可由选中DPP处理。如果还未达到预定阈值或时间,则这可包括利用耦合至锁定请求处理器预定阈值确定器608的先前选中处理器锁定请求分配器(previously selected processor lock requestassigner)610,来将锁定请求分配至先前选中的处理器。如果还未达到预定阈值或时间,则这可包括利用耦合至锁定请求处理器预定阈值确定器608的重新选中处理器锁定请求分配器(re-selected processor lock requestassigner)612,来将锁定请求分配至重新选中的处理器。如果还未达到预定阈值或时间,则耦合至锁定请求处理器预定阈值确定器608的计数器增量器614可递增计数器,而如果已达到预定阈值或时间,则耦合至锁定请求处理器预定阈值确定器608的计数器复位器616可复位计数器。注意,上述的单独元件以及此文档通篇其他示图中的元件不必要是独立的设备或部件。本领域的普通技术人员将会意识到,任何两个或更多的元件的操作可组合进单个部件。
在多核或多处理器SAN环境中出现的另一问题与状态信息的管理有关。主机和存储装置在称为上下文(context)的数据结构中维持状态信息。这通常称为主机侧的主机上下文以及存储装置侧的磁盘上下文。然而,主机上下文以及磁盘上下文需要互相排他性的访问,因为它们包含了状态变量。在本发明的一个实施例中,这可经由针对每个上下文的单独项来实现,诸如三态内容可寻址存储器(TCAM)项。每个主机IO可被分配一个主机上下文。由虚拟化功能执行的到存储装置侧的每个IO可被分配一个磁盘上下文。此上下文在了解例如在任何给定时刻已执行了IO的多少处理方面可以是有用的。无论何时IS中发生了新事件,诸如响应消息,此上下文都可被检索。
在本发明的一个实施例中,服务特定IO直到完成所需要的处理尽可能地保持在单个DPP内。这最小化了高费用的查找。它还利用了本地高速缓存中的热数据(hot data)。因为仅仅一个DPP在处理交换,所以它不必要被转储清除回(flush back)存储器并由另一DPP重读。在另一实施例中,新的IO可被重定向至负载最小的DPP,从而改善了等待时间。此外,可最小化DPP上的软件与ASIC硬件之间的交互。
在本发明的此实施例中,标签、软交换以及显式锁定模型(explicitlocking model)可用来执行交换级负载平衡。这使交换能在一个核处完全被处理,从而更有效地调节(leverage)核驻留数据高速缓存并且不以相同的数据副本来污染其他核的数据高速缓存。除了硬件所提供的队列(通常每个核群一个队列)以外,每个核可额外地具有软队列,该软队列由特定核上的软件管理。相对于硬件工作队列(其覆盖了多个核并且不准许指定对其分配特定帧或事件的特定核),这允许对特定核的直接访问。这些软队列可驻留在共享的存储器中,从而当任何核希望将帧/事件分派至特定核时,它可将帧/事件入队。在本发明的一个实施例中,仅仅队列的拥有者(核)才能使帧/事件出队和对其进行处理。在此实施例中,硬件在管理这些队列方面未起作用。调度器可从软件工作队列以及核所提供的硬件工作队列轮询事件。此调度器仅在确信软件工作队列对那个核而言为空之后才可从硬件工作队列轮询事件。这确保了跨核的适当的负载平衡,并且给予了软件事件适当的权限。显式锁定模型通过使得将跨核共享的所有数据结构被显式地锁定而实现。可在两个阶段中处理帧。
第一阶段可通过执行帧级错误检验而开始。这可包括诸如循环冗余检验之类的检验。然后该阶段可进至判断帧的类型。可执行查找以判断帧是否是例如命令帧、数据帧、传送帧或响应帧。对于命令帧,可利用使用队列指针(诸如启动器目标LUN)的硬件工作队列来执行标签交换。对于数据帧、传送帧或响应帧,可针对指针执行交换表查找以获得正在处理该交换的核的核标识。标签然后可被利用指针而交换为帧的新标签。这将帧分配至特定核群,而不是特定的核。帧然后可被利用相应的软件工作队列而分派至特定核。针对主机/磁盘交换的交换表项可以已在主机命令处理期间、在第二阶段的事先操作期间被编程。可替代地,可以已在一些其他时间创建了该表。
第二阶段可涉及全部帧处理。对于命令帧,可针对主机交换而创建交换表项,并且可将它的核标识分配为正在处理该命令的核。然后可执行命令级处理,诸如区地图(Extent Map,XMAP)或虚拟到物理(V2P)查找、向目标发送命令等。对于数据帧、传送帧或响应帧,上下文将最有可能处于数据高速缓存中,因此热高速缓存可被使用,而无需进行频繁的转储清除或搜索数据。
因此,当命令帧被接收到时,硬件可选择负载最小的处理器来处理命令帧。一旦硬件将命令帧分派至特定的核,此命令就立即被分配至交换表中的核。从此以后,与命令帧相关的所有事件都由该核处理。这通过组合软件工作队列、在标签交换中按照需要和当需要时对数据结构访问串行化以及逻辑地将全部虚拟化任务划分为两个阶段而发生。因此,通过将交换限制到特定核,可获得以下益处:
最小化了高费用的查找——因为核标识存储在交换本身中,所以针对交换的各种事件可在第一时间(first order time)被确定地分配至负责交换的特定核。
可使用本地高速缓存中的热数据——因为仅仅一个核处理交换,所以与交换有关的各种对象驻留在特定核的数据高速缓存中的概率非常高。
通过调节硬件功能,新的输入/输出可被重定向至负载最小的核。每次新的命令帧被接收到时,此硬件可选择负载最小的核。
可更高效地管理交换中的资源——因为交换被限制于一个特定核,所以完成交换所需要的各种对象可从它的池中被拨出并且随后被放入同一池。
减少了对锁的争用——因为特定上下文由单个核“拥有”,所以为了排他性访问而必须锁定上下文的次数大大减少。
在本发明的另一实施例中,帧类型的粒度(granularity)可被设置为极细的级别。例如,这使处理交换的不同阶段能由不同核来处理,每次进入负载最小的处理器。这是由于存在在交换中某些类型的帧确实不需要与先前的帧共享同一高速缓存的事实,并且因此相对于可能将这些帧发送到过载的处理器,这将更高效地实时将这些帧转发到负载最小的处理器。实行此策略还消除了对于用于获得对完全处理帧所必需的各种上下文状态的排他性访问的集中式锁定措施(centralized lock measure)或其他抢先措施(preemptive measure)的需要。
随着帧类型的粒度被设置为越来越细的级别而变得更加普遍的另一问题是“跟踪(chase)”交换的需要。即,如下情形是可能的:特定帧可被分配至针对特定核的软件工作队列,但是到帧准备被处理的时候(例如,它在线路的头处),拥有交换的核可能已改变。为了处理这样的实例,在本发明的一个实施例中,处理器在实际处理帧之前将会进行两次检验以确信它仍是拥有者,并且如果不是,则帧将会被置于与交换的新拥有者相对应的软件工作队列中。
图7示出用于在存储区域网中具有多个处理器或核的设备处处理帧的示例方法。帧可与特定交换相对应。这可通过例如帧中的交换标识来指示,虽然本领域的普通技术人员将会意识到可能存在其他方式来追踪哪个交换与帧相对应。在700,可对帧执行帧级错误检验。在702,可判断帧是否是命令帧。如果帧是命令帧,则在704,可确定针对负载最小的处理器或核的核标识。这可通过将帧置于与核群相对应的硬件工作队列中来实现。硬件工作队列可将启动器目标逻辑单元号(ITL)指针用作标签以执行标签交换。然后在706,可在将交换映射到核标识的交换查找数据结构中创建项。如果帧不是命令帧,则在708,可在交换查找数据结构中执行查找以确定与交换相对应的核标识。然后,在710,帧可被转发至通过核标识而识别的处理器或核。这可通过将帧置于与通过核标识而识别的处理器或核相对应的软件工作队列中来实现。在712,可运行队列调度器,其中队列调度器从与特定核群相对应的硬件工作队列以及与该核群内的每个核相对应的软件工作队列轮询事件,并且其中所述队列调度器仅在所述软件工作队列为空之后才从所述硬件工作队列轮询事件。
图8示出用于在存储区域网中具有多个处理器或核的设备处处理帧的另一示例方法。与先前的实施例一样,帧可与特定交换相对应。在第一阶段,在800,可对帧执行帧级错误检验。然后在802,可判断帧是否是命令帧。如果帧是命令帧,则在804,命令帧可分配至负载最小的处理器。这可通过将帧置于与核群相对应的硬件工作队列中来实现。硬件工作队列可将启动器目标逻辑单元号(ITL)指针用作标签以执行标签交换。如果帧不是命令帧,则在806,帧可分配至与交换相对应的交换查找数据结构所指示的处理器。这可通过将帧置于与通过核标识而识别的处理器或核相对应的软件工作队列中来实现。在808,可运行队列调度器,其中队列调度器从与特定核群相对应的硬件工作队列以及与该核群内的每个核相对应的软件工作队列轮询事件,并且其中所述队列调度器仅在所述软件工作队列为空之后才从所述硬件工作队列轮询事件。
图9示出存储用于在区域网中具有多个处理器或核的设备处处理帧的另一示例方法。再一次地,帧可与特定交换相对应。在900,可对帧执行帧级错误检验。在902,可确定帧的类型。如果帧是命令帧,则在904,可确定针对负载最小的处理器或核的核标识。这可通过将帧置于与核群相对应的硬件工作队列中来实现。硬件工作队列可将启动器目标逻辑单元号(ITL)指针用作标签以执行标签交换。然后在906,可在将交换映射到核标识的交换查找数据结构中创建项。然后在908,可以在交换查找数据结构中的项中指示将被分配的用于处理器的一个或多个帧的类型。如果帧不是命令帧,则在910,可在交换查找数据结构中执行查找以确定与交换相对应并且与非命令帧的类型相对应的核标识。如果帧是命令帧或者如果与交换相对应并且与非命令帧的类型相对应的核标识被找到,则在912,帧可被转发至通过核标识而识别的处理器或核。这可通过将帧置于与通过核标识而识别的处理器或核相对应的软件工作队列中来实现。如果帧不是命令帧以及与交换相对应并且与非命令帧的类型相对应的核标识未被找到,则在914,帧可被转发至负载最小的处理器或核。如上所述,这可通过将帧置于与核群相对应的硬件工作队列中来实现。在916,可运行队列调度器,其中队列调度器从硬件以及软件工作队列轮询事件。在一些实现方式中,队列调度器仅在与特定核群内的每个核相对应的软件工作队列为空之后才可从与该核群相对应的硬件工作队列轮询事件。
图10示出用于在存储区域网中具有多个处理器或核的设备处处理帧的另一示例方法。与先前的实施例一样,帧可与特定交换相对应。在第一阶段,在1000,可对帧执行帧级错误检验。然后在1002,可确定帧的类型。如果帧是命令帧,则在1004,命令帧可分配至负载最小的处理器。这可通过将帧置于与核群相对应的硬件工作队列中来实现。硬件工作队列可将启动器目标逻辑单元号(ITL)指针用作标签以执行标签交换。如果帧不是命令帧,则在1006,帧可分配至与交换相对应并且与非命令帧的类型相对应的交换查找数据结构所指示的处理器。这可通过将帧置于与通过核标识而识别的处理器或核相对应的软件工作队列中来实现。在1008,可运行队列调度器,其中队列调度器从硬件以及软件工作队列轮询事件,并且仅在与特定核群内的每个核相对应的软件工作队列为空之后才从与该核群相对应的硬件工作队列轮询事件。在第二阶段,在1010,可确定帧的类型。如果帧是命令帧,则在1012,可在与负载最小处理器相对应的交换查找数据结构中创建项。然后在1014,可以在交换查找数据结构中的项中指示将被分配的用于处理器的帧的一种或多种类型。如果帧不是命令帧,则在1016,可利用与如下的处理器相对应的数据高速缓存来处理帧:该处理器由与交换相对应并且与非命令帧的类型相对应的交换查找数据结构所指示。
图11示出用于在存储区域网中具有多个处理器或核的设备处处理帧的示例装置。帧可与特定交换相对应。这可通过例如帧中的交换标识来指示,虽然本领域的普通技术人员将会意识到可能存在其他方式来追踪哪个交换与帧相对应。帧级错误检验器1100可对帧执行帧级错误检验。耦合至帧级错误检验器1100的帧类型确定器1102可判断帧是否是命令帧。如果帧是命令帧,则耦合至帧类型确定器1102的负载最小处理器核标识确定器1104可确定针对负载最小的处理器或核的核标识。这可通过将帧置于与核群相对应的硬件工作队列1106中来实现。硬件工作队列1106可将启动器目标逻辑单元号(ITL)指针用作标签以执行标签交换。耦合至负载最小处理器核标识确定器1104的交换查找数据结构项创建器1108可在将交换映射到核标识的存储器1110中的交换查找数据结构中创建项。如果帧不是命令帧,则耦合至帧类型确定器1102的交换查找数据结构搜索器1112可在存储器1110中的交换查找数据结构中执行查找以确定与交换相对应的核标识。然后,耦合至交换查找数据结构搜索器1112的帧转发器1114可将帧转发至通过核标识而识别的处理器或核。这可通过将帧置于与通过核标识而识别的处理器或核相对应的软件工作队列1116中来实现。软件工作队列1116可配置为存储将由相应处理器基于相应处理器是帧作为其一部分的交换的拥有者的确定而被执行的帧。可运行耦合至软件工作队列1116和硬件工作队列1106的队列调度器1118,其中队列调度器配置为从硬件以及软件工作队列轮询事件,并且仅在与特定核群内的每个核相对应的软件工作队列为空之后才从与该核群相对应的硬件工作队列轮询事件。
图12示出用于在存储区域网中具有多个处理器或核的设备处处理帧的另一示例装置。再一次地,帧可与特定交换相对应。帧级错误检验器1200可对帧执行帧级错误检验。耦合至帧级错误检验器1200的帧类型确定器1202可确定帧的类型。如果帧是命令帧,则耦合至帧类型确定器1202的负载最小处理器核标识确定器1204可确定针对负载最小的处理器或核的核标识。这可通过将帧置于与核群相对应的硬件工作队列1206中来实现。硬件工作队列1206可将启动器目标逻辑单元号(ITL)指针用作标签以执行标签交换。耦合至负载最小处理器核标识确定器1204的交换查找数据结构项创建器1208可在将交换映射到核标识的存储器1210中的交换查找数据结构中创建项。然后,耦合至交换查找数据结构项创建器1208的帧类型指示器1212可以在交换查找数据结构中的项中指示将被分配的用于处理器的一个或多个帧的类型。如果帧不是命令帧,则耦合至帧类型确定器1202以及存储器1210的帧类型交换查找数据结构搜索器1214可在交换查找数据结构中执行查找以确定与交换相对应并且与非命令帧的类型相对应的核标识。如果帧是命令帧或者如果与交换相对应并且与非命令帧的类型相对应的核标识被找到,则耦合至交换查找数据结构搜索器1214的帧转发器1216、帧类型确定器1202以及负载最小处理器核标识确定器1204可将帧转发至通过核标识而识别的处理器或核。这可通过将帧置于与通过核标识而识别的处理器或核相对应的软件工作队列1218中来实现。如果帧不是命令帧以及与交换相对应并且与非命令帧的类型相对应的核标识未被找到,则帧转发器1216可将帧转发至负载最小的处理器。如上所述,这可通过将帧置于与核群相对应的硬件工作队列1206中来实现。耦合至软件工作队列1218和硬件工作队列1206的队列调度器1220可从硬件以及软件工作队列轮询事件,并且仅在与特定核群内的每个核相对应的软件工作队列为空之后才从与该核群相对应的硬件工作队列轮询事件。
虽然这里示出并且描述了本发明的例示性的实施例和应用,但是保持在本发明的概念、范围和精神内的很多变化和修改是可以的,并且在研读了本申请之后,对本领域的普通技术人员而言,这些变化将会变得很清楚。因此,所描述的实施例将被认为是例示性的而非限制性的,并且本发明将不限于这里给出的细节,而是可以在所附权利要求的范围和等同物内被修改。
Claims (20)
1.一种在存储区域网中处理锁定请求的方法,所述方法包括:
在具有多个处理器或核的设备处接收锁定请求,其中所述处理器或核中的一个先前已被选中用来处理锁定请求,所述设备位于存储区域网的主机和存储区域网的存储装置之间;
判断是否已达到针对先前已被选中的处理器的锁定请求的预定阈值;以及
根据是否已达到所述预定阈值来分配所述锁定请求到所述多个处理器或核中的一个处理器或核。
2.根据权利要求1所述的方法,其中,所述分配还包括当确定还未达到所述预定阈值时,将所述锁定请求分配至所述先前已被选中的处理器。
3.根据权利要求1所述的方法,其中,所述分配还包括,当确定已达到所述预定阈值时:
重新选择用来处理锁定请求的所述多个处理器或核中的一个处理器或核;以及
将所述锁定请求分配至重新选中的处理器或核。
4.根据权利要求1所述的方法,还包括:
针对所述锁定请求生成工作队列项;以及
标注所述工作队列项以表明它表示锁定请求。
5.根据权利要求1所述的方法,还包括:
如果还未达到所述预定阈值,则递增计数器;以及
如果已达到所述预定阈值,则复位所述计数器。
6.根据权利要求5所述的方法,其中所述判断包括将所述计数器与所述预定阈值进行比较。
7.根据权利要求3所述的方法,其中所述重新选择包括选择所述多个处理器或核中的负载最小的处理器或核。
8.一种在存储区域网中处理锁定请求的方法,所述方法包括:
在具有多个处理器或核的设备处接收锁定请求,其中所述处理器或核中的一个先前已被选中用来处理锁定请求,所述设备位于存储区域网的主机和存储区域网的存储装置之间;
判断针对先前已被选中的处理器的计时器是否已达到预定时间;以及
根据是否已达到所述预定时间来分配所述锁定请求到所述多个处理器或核中的一个处理器或核。
9.根据权利要求8所述的方法,其中,所述分配还包括:
当确定所述计时器还未达到所述预定时间时,将所述锁定请求分配至所述先前已被选中的处理器。
10.根据权利要求8所述的方法,其中,所述分配还包括,当确定所述计时器已经达到所述预定时间时:
重新选择用来处理锁定请求的所述多个处理器或核中的一个处理器或核;以及
将所述锁定请求分配至重新选中的处理器或核。
11.根据权利要求8所述的方法,还包括:
针对所述锁定请求生成工作队列项;以及
标注所述工作队列项以表明它表示锁定请求。
12.根据权利要求10所述的方法,其中,所述重新选择包括选择所述多个处理器或核中的负载最小的处理器或核。
13.一种在存储区域网中用于处理锁定请求的装置,所述装置包括具有多个处理器或核,其中所述处理器或核中的一个先前已被选中用来处理锁定请求,所述装置位于存储区域网的主机和存储区域网的存储装置之间,所述装置包括:
锁定请求接收器,用于接收锁定请求;
耦合至所述锁定请求接收器的锁定请求处理器预定阈值确定器,用于判断是否已达到针对先前已被选中的处理器的锁定请求的预定阈值;
耦合至所述锁定请求处理器预定阈值确定器的先前选中处理器锁定请求分配器,用于当确定还未达到所述预定阈值时将所述锁定请求分配至所述先前已被选中的处理器;
耦合至所述锁定请求处理器预定阈值确定器的锁定请求处理器重新选择器,用于当确定已达到所述预定阈值时重新选择用来处理锁定请求的所述多个处理器或核中的一个处理器或核;以及
耦合至所述锁定请求处理器重新选择器的重新选中处理器锁定请求分配器,用于将所述锁定请求接收器所接收的锁定请求分配至重新选中的处理器或核。
14.根据权利要求13所述的装置,还包括:
耦合至所述锁定请求接收器的第一互锁请求确定器,用于确定所述锁定请求接收器所接收的锁定请求是否是第一互锁请求。
15.根据权利要求13所述的装置,其中,所述锁定请求处理器重新选择器还包括负载最小处理器选择器,所述负载最小处理器选择器用于选择所述多个处理器或核中的负载最小的处理器或核,并且当所述锁定请求接收器所接收的锁定请求被确定是第一互锁请求时,所述负载最小处理器被选择。
16.根据权利要求13所述的装置,还包括:
耦合至所述锁定请求处理器预定阈值确定器的计数器,所述计数器用于对锁定请求的数目进行计数,如果还未达到所述预定阈值,则所述计数器递增,并且如果已经达到所述预定阈值,则所述计数器被复位。
17.一种在存储区域网中用于处理锁定请求的装置,所述装置具有多个处理器或核,其中所述处理器或核中的一个先前已被选中用来处理锁定请求,所述装置位于存储区域网的主机和存储区域网的存储装置之间,所述装置包括:
锁定请求接收器,用于接收锁定请求;
耦合至所述锁定请求接收器的处理器预定时间确定器,用于判断针对先前已被选中的处理器的计时器是否已达到的预定时间;
耦合至所述处理器预定时间确定器的先前选中处理器锁定请求分配器,用于当确定还未达到所述预定时间时将所述锁定请求分配至所述先前已被选中的处理器;
耦合至所述处理器预定时间确定器的锁定请求处理器重新选择器,用于当确定已达到所述预定时间时重新选择用来处理锁定请求的所述多个处理器或核中的一个处理器或核;以及
耦合至所述锁定请求处理器重新选择器的重新选中处理器锁定请求分配器,用于将所述锁定请求接收器所接收的锁定请求分配至重新选中的处理器或核。
18.根据权利要求19所述的装置,还包括:
耦合至所述锁定请求接收器的第一互锁请求确定器,用于确定所述锁定请求接收器所接收的锁定请求是否是第一互锁请求。
19.根据权利要求19所述的装置,其中,所述锁定请求处理器重新选择器还包括负载最小处理器选择器,所述负载最小处理器选择器用于选择所述多个处理器或核中的负载最小的处理器或核,并且当所述锁定请求接收器所接收的锁定请求被确定是第一互锁请求时,所述负载最小处理器被选择。
20.一种在存储区域网中用于处理锁定请求的装置,所述装置包括:
用于在具有多个处理器或核的设备处接收锁定请求的装置,其中所述处理器或核中的一个先前已被选中用来处理锁定请求,所述设备位于存储区域网的主机和存储区域网的存储装置之间;
用于判断是否已达到针对先前已被选中的处理器的计时器的预定时间的装置;以及
用于根据是否已达到所述预定时间来分配所述锁定请求到所述多个处理器或核中的一个处理器或核的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/605,614 US7844784B2 (en) | 2006-11-27 | 2006-11-27 | Lock manager rotation in a multiprocessor storage area network |
US11/605,614 | 2006-11-27 | ||
PCT/US2007/085153 WO2008067216A2 (en) | 2006-11-27 | 2007-11-20 | Lock manager rotation in a multiprocessor storage area network |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101542448A CN101542448A (zh) | 2009-09-23 |
CN101542448B true CN101542448B (zh) | 2013-01-23 |
Family
ID=39465158
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200780043455XA Expired - Fee Related CN101542448B (zh) | 2006-11-27 | 2007-11-20 | 多处理器存储区域网中锁定管理器的轮换 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7844784B2 (zh) |
EP (1) | EP2087430B1 (zh) |
CN (1) | CN101542448B (zh) |
WO (1) | WO2008067216A2 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7844784B2 (en) | 2006-11-27 | 2010-11-30 | Cisco Technology, Inc. | Lock manager rotation in a multiprocessor storage area network |
US8677014B2 (en) * | 2006-11-27 | 2014-03-18 | Cisco Technology, Inc. | Fine granularity exchange level load balancing in a multiprocessor storage area network |
US7882283B2 (en) * | 2006-11-27 | 2011-02-01 | Cisco Technology, Inc. | Virtualization support in a multiprocessor storage area network |
US7783805B2 (en) * | 2006-11-29 | 2010-08-24 | Cisco Technology, Inc. | Interlocking input/outputs on a virtual logic unit number |
US9141437B2 (en) * | 2008-01-29 | 2015-09-22 | International Business Machines Corporation | Methods and systems for migrating network resources to improve network utilization |
CN102103523A (zh) * | 2009-12-22 | 2011-06-22 | 国际商业机器公司 | 锁分配控制的方法和装置 |
CN110109755B (zh) * | 2016-05-17 | 2023-07-07 | 青岛海信移动通信技术有限公司 | 进程的调度方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6412034B1 (en) * | 1999-04-16 | 2002-06-25 | Oracle Corporation | Transaction-based locking approach |
US6480918B1 (en) * | 1998-12-22 | 2002-11-12 | International Business Machines Corporation | Lingering locks with fairness control for multi-node computer systems |
US6697901B1 (en) * | 2000-10-24 | 2004-02-24 | Oracle International Corporation | Using secondary resource masters in conjunction with a primary resource master for managing resources that are accessible to a plurality of entities |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5155858A (en) * | 1988-10-27 | 1992-10-13 | At&T Bell Laboratories | Twin-threshold load-sharing system with each processor in a multiprocessor ring adjusting its own assigned task list based on workload threshold |
CA2123447C (en) | 1993-09-20 | 1999-02-16 | Richard L. Arndt | Scalable system interrupt structure for a multiprocessing system |
JP2684993B2 (ja) * | 1994-08-10 | 1997-12-03 | 日本電気株式会社 | プロセッサシステムとその制御方法 |
US7480653B2 (en) * | 1996-10-22 | 2009-01-20 | International Business Machines Corporation | System and method for selective partition locking |
US6192408B1 (en) * | 1997-09-26 | 2001-02-20 | Emc Corporation | Network file server sharing local caches of file access information in data processors assigned to respective file systems |
US6321238B1 (en) * | 1998-12-28 | 2001-11-20 | Oracle Corporation | Hybrid shared nothing/shared disk database system |
US6658802B2 (en) | 2000-10-24 | 2003-12-09 | Northwest Rubber Extruders, Inc. | Seal for fixed window of motor vehicle with curved concave corners |
US7089293B2 (en) | 2000-11-02 | 2006-08-08 | Sun Microsystems, Inc. | Switching system method for discovering and accessing SCSI devices in response to query |
US20020157113A1 (en) | 2001-04-20 | 2002-10-24 | Fred Allegrezza | System and method for retrieving and storing multimedia data |
GB2366891B (en) * | 2001-12-06 | 2002-11-20 | Appsense Ltd | Improvements in and relating to computer apparatus terminal server apparatus & performance management methods therefor |
JP2005165702A (ja) | 2003-12-03 | 2005-06-23 | Hitachi Ltd | クラスタストレージのデバイス連結方法 |
US7197588B2 (en) | 2004-03-31 | 2007-03-27 | Intel Corporation | Interrupt scheme for an Input/Output device |
US7689794B2 (en) | 2004-10-22 | 2010-03-30 | Scientific-Atlanta, Llc | System and method for handling memory allocation failures through reserve allocation of event data |
US7735089B2 (en) * | 2005-03-08 | 2010-06-08 | Oracle International Corporation | Method and system for deadlock detection in a distributed environment |
US7937435B2 (en) | 2006-02-21 | 2011-05-03 | Strangeloop Networks, Inc. | Identifying, storing, and retrieving context data for a network message |
US8255910B2 (en) | 2006-07-18 | 2012-08-28 | Hewlett-Packard Development Company, L.P. | Fair weighted proportional-share virtual time scheduler |
US7882283B2 (en) | 2006-11-27 | 2011-02-01 | Cisco Technology, Inc. | Virtualization support in a multiprocessor storage area network |
US7844784B2 (en) | 2006-11-27 | 2010-11-30 | Cisco Technology, Inc. | Lock manager rotation in a multiprocessor storage area network |
-
2006
- 2006-11-27 US US11/605,614 patent/US7844784B2/en active Active
-
2007
- 2007-11-20 WO PCT/US2007/085153 patent/WO2008067216A2/en active Application Filing
- 2007-11-20 CN CN200780043455XA patent/CN101542448B/zh not_active Expired - Fee Related
- 2007-11-20 EP EP07864619.7A patent/EP2087430B1/en not_active Not-in-force
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6480918B1 (en) * | 1998-12-22 | 2002-11-12 | International Business Machines Corporation | Lingering locks with fairness control for multi-node computer systems |
US6412034B1 (en) * | 1999-04-16 | 2002-06-25 | Oracle Corporation | Transaction-based locking approach |
US6697901B1 (en) * | 2000-10-24 | 2004-02-24 | Oracle International Corporation | Using secondary resource masters in conjunction with a primary resource master for managing resources that are accessible to a plurality of entities |
Also Published As
Publication number | Publication date |
---|---|
WO2008067216A2 (en) | 2008-06-05 |
WO2008067216A3 (en) | 2009-01-15 |
EP2087430A4 (en) | 2010-10-27 |
EP2087430A2 (en) | 2009-08-12 |
US7844784B2 (en) | 2010-11-30 |
EP2087430B1 (en) | 2018-08-08 |
US20080126726A1 (en) | 2008-05-29 |
CN101542448A (zh) | 2009-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101542448B (zh) | 多处理器存储区域网中锁定管理器的轮换 | |
US9671967B2 (en) | Method and system for implementing a distributed operations log | |
US20200334117A1 (en) | Implementing availability domain aware replication policies | |
US8706959B1 (en) | Virtual storage machine | |
Balegas et al. | Extending eventually consistent cloud databases for enforcing numeric invariants | |
CN101617297B (zh) | 多处理器存储区域网络中的虚拟化支持 | |
WO2016145091A1 (en) | Opportunistic resource migration to optimize resource placement | |
US20180004777A1 (en) | Data distribution across nodes of a distributed database base system | |
US8677014B2 (en) | Fine granularity exchange level load balancing in a multiprocessor storage area network | |
CN102597958A (zh) | 虚拟机的对称实时迁移 | |
US10802749B2 (en) | Implementing hierarchical availability domain aware replication policies | |
US10616134B1 (en) | Prioritizing resource hosts for resource placement | |
US11334257B2 (en) | Database management system and methods for use therewith | |
Wang et al. | Provision of storage QoS in distributed file systems for clouds | |
US9852221B1 (en) | Distributed state manager jury selection | |
CN101136775B (zh) | 基于出生地管理的虚拟对象所有权组织方法 | |
Dong et al. | Self-acting load balancing with parallel sub file migration for parallel file system | |
US10721181B1 (en) | Network locality-based throttling for automated resource migration | |
Limam et al. | A self-adaptive conflict resolution with flexible consistency guarantee in the cloud computing | |
Charapko et al. | Fleetdb: Follow-the-workload data migration for globe-spanning databases | |
Chockler et al. | Aquarius: A data-centric approach to corba fault-tolerance | |
Han et al. | PTRE: a probabilistic two-phase replication elimination policy in large-scale distributed storage platforms | |
Ross | Cluster storage for commodity computation | |
Li et al. | The Study of Key Technology for Dynamic Resource Management in the Cloud Computing Environments | |
MapReduce et al. | Project Horcrux: MapReduce on the Voldemort Distributed KVS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130123 Termination date: 20201120 |