存储区域网络设备中的输入/输出端口轮换的利记博彩app
【技术领域】
[0001]本描述涉及一种用于在存储区域网络中指派输入/输出端口的方法、系统和计算机程序。
【背景技术】
[0002]存储区域网络(SAN)被频繁使用以允许存储设备对主机的操作系统表现为就像其在本地接合至主机那样的方式将诸如磁盘阵列、磁带库、光盘库或其它存储设备的远程计算机存储设备耦合至主机。光纤信道(FC)是一种高速联网技术,其中信号可以通过例如包括光纤线缆或双绞铜线线缆的各种传输媒体进行传送。
[0003]存储控制器可以具有被主机指派以输入/输出(I/O)任务的多个服务器。I/O可以是针对存储中的具体卷。存储控制器可以进一步具有多个输入/输出(I/o)适配器,诸如使得服务器能够与主机进行通信的主机适配器,使得存储控制器的服务器能够与存储设备进行通信的设备适配器。I/o适配器可以具有多个CPU,其从存储控制器的一个或多个服务器接收输入/输出请求以执行输入/输出操作,其中数据通过I/o适配器的各个I/O端口而往来于存储进行读取或写入。I/o适配器经常具有共享资源环境,例如,在上述共享资源环境中,诸如硬件资源和存储器资源的资源可以被多个CPU所共享,上述硬件资源诸如I/O端口,而上述存储器资源则诸如存储器中的数据结构。I/O适配器中所使用的共享资源环境的示例例如是对称多处理(SMP)环境。
[0004]例如,对共享资源的访问可以使用诸如单一所有权或共享所有权规则之类的适当规则进行控制。在一种典型的共享资源环境中,对共享资源的访问可以通过使用控制针对所访问资源的访问的共享存储器数据结构中的锁定字(lock word)来完成。本领域已知的另一种方法是将各种资源的相关联数据结构在任务控制模块中分组在一起,该任务控制模块在任务每次开始时进行指派并且由每个CPU作为所执行任务的操作进行锁定和解锁。
[0005]在典型的共享资源环境中,每个I/O端口将使得其工作几乎完全在单个CPU的控制下执行,直至该I/o端口的任务完成。这样的指派被认为例如通过减少高速缓存置换而提高了多CPU适配器的性能。
[0006]被指派给特定CPU的I/O端口或多个端口的列表可以存储在该CPU的数据结构的元素中。指派给特定I/o端口的特定CPU也可以由存储在指派给该特定I/O端口的数据结构的元素中的适当CPU所有者ID进行识别。
[0007]指派特定I/O端口的CPU可以通过在指派给该特定I/O端口的数据结构的元素中设置锁定而防止其它CPU访问该特定I/O端口。一旦I/O端口不再被特定CPU所有,则该锁定元素可以被清除。
[0008]要结合特定I/O端口执行的I/O任务可以在指派给特定I/O端口的数据结构的元素中进行识别。结合I/o端口执行的I/O工作指派例如包括与诸如光纤信道光学硬件的特定通信端口硬件进行通信例如向诸如ASIC的逻辑硬件中的直接存储器访问(DMA)引擎提交工作,例如在I/O适配器中将数据移入或移出一个或多个高速缓存,等等。
【发明内容】
[0009]过程、硬件、软件、固件及其组合可以执行操作,包括:向输入/输出(I/O)适配器的多个中央处理单元(CPU)以及针对每个CPU指派I/O端口,并且在CPU和指派至该CPU的每个I/O端口之间传输数据。在本描述的一个方面,以上所提到的操作可以与I/O端口轮换的循环相结合,其中一个循环的每次端口轮换包括将至少一个I/o端口的指派从一个CPU轮换至该多个CPU中的不同CPU。此外,针对多个CPU中的每个CPU的I/O指派可以在该循环的至少一部分内进行轮换。
[0010]在另一方面,数据传输可以包括在一个CPU的控制下在至少一个I/O端口发起传输数据的任务,并且在对该至少一个I/o端口的指派从一个CPU轮换至不同CPU之后,在该不同CPU的控制下在该至少一个I/O端口继续该数据传输的任务。而且,确定是否发起I/O端口轮换的循环可以包括确定多个CPU中的CPU数量是否大于或等于I/O适配器的I/O端口的数量。
[0011]在另一个方面,确定是否发起I/O端口轮换的循环可以包括确定预定的时间段是否已经到期。此外,发起I/O端口轮换的循环可以包括由一个CPU针对多个CPU中的其余CPU设置轮换标志,以针对多个CPU中的其余CPU发起端口轮换。
[0012]在又另一个方面,I/O端口轮换的循环中的每次端口轮换可以包括针对每个CPU确定是否将特定CPU的端口指派轮换至多个CPU中的不同CPU。此外,发起I/O端口轮换的循环可以包括由一个CPU针对多个CPU中的其余CPU设置轮换标志以针对多个CPU中的其余CPU发起端口轮换,并且针对每个CPU确定是否轮换端口指派可以包括检查是否已经针对该特定CPU设置了轮换标志。
[0013]在另外的方面,针对每个CPU确定是否轮换端口指派可以包括确定该特定CPU是否具有任何活跃的I/O端口。而且,针对每个CPU确定是否轮换端口指派可以包括确定该CPU是否具有比该多个CPU中的任意其它CPU更少的活跃I/O端口。
[0014]在又另一个方面,针对每个CPU确定是否轮换端口指派可以包括选择特定CPU所拥有的I/o端口以便将其端口指派轮换至另一个CPU。而且,选择特定CPU所拥有的I/O端口以便将其端口指派轮换至另一个(PU可以包括选择已经被该特定CPU拥有最久的活跃I/O端口。
[0015]在又另一个方面,该多个CPU中的CPU可以在序列中按顺序进行编号并且将对至少一个I/O端口的指派从一个CPU轮换至该多个CPU中的不同CPU可以包括将对至少一个端口的指派从一个CPU轮换至顺序编号的CPU的序列中的下一个顺序编号的CPU。
[0016]其它的特征和方面将取决于特定应用而实现。
【附图说明】
[0017]现在将参考附图仅通过示例而对本发明的实施例进行描述,其中:
[0018]图1图示了其中可以采用本描述的一个方面的计算环境的实施例。
[0019]图2图示了依据本描述的其中I/O端口指派进行轮换的I/O适配器的实施例。
[0020]图3A-3C描绘了图2的I/O适配器的数据结构的示例。
[0021]图4和4A描绘了依据本描述的一个方面的用于执行I/O端口指派轮换的操作示例。
[0022]图5描绘了图示依据本描述的一个方面的I/O端口指派轮换的一个示例的流程图。
[0023]图6描绘了依据该描述的一个方面的I/O端口指派轮换的操作的另一个示例。
[0024]图7描绘了图示依据该描述的一个方面的I/O端口指派轮换的另一个示例的另一图表。
【具体实施方式】
[0025]图1图示了采用本描述的一个方面的计算环境的一个示例。依据本描述,在具有多个CPU和多个输入/输出(I/O)端口的I/O设备中,发起I/O端口轮换的循环。该循环的每个端口轮换包括将至少一个I/o端口的指派从一个CPU轮换至多个CPU中的不同CPU。在所图示的实施例中,针对多个CPU中的每个CPU的I/O端口指派在该循环的至少一部分内进行轮换。这样的指派被认为例如改进了 I/o端口之间的工作负载平衡。然而,其它特征或方面可以根据特定应用而实现。
[0026]在图1的环境中,一个或多个主机122通过存储区域网络126传输针对存储124的输入/输出(I/o)任务或其它处理请求,该存储区域网络126管理对存储124的访问。在一个实施例中,存储区域网络126包括多个服务器128a、128b、128c、128d,它们均包括处理器和存储器。每个处理器可以包括一个或多个可被相关联的服务器128a-128d用作处理资源的中央处理单元(CPU)。虽然存储区域网络126出于图示的目的而被描绘为包括四个服务器128a-128d,但是要理解的是,服务器的数量可以根据特定应用而更大或更小。
[0027]每个128a_128d可以具有在服务器128a_128d中执行的一个或多个逻辑分区。每个逻辑分区单独执行操作系统和设备驱动器。该逻辑分区包括处理器到逻辑上独立但是协同操作的处理系统的划分,每个处理系统具有其自己的操作系统和设备驱动器。多个逻辑分区可以在每个服务器128a-128d中执行,由该服务器128a_128d的监管模块进行管理。
[0028]每个设备驱动器提供其中执行设备驱动器的逻辑分区中的操作系统与诸如I/O适配器的设备之间的接口,上述I/o适配器包括主机适配器132a,132b…132η和设备适配器144a, 144b…144η。主机适配器132a, 132b…132η使得服务器128a_128d能够与主机122进行通信。设备适配器144a,144b…144η使得服务器128a_128d能够与存储124进行通信。因此,服务器128a-128d共享诸如适配器132a, 132b…132n、144a,144b...144η之类的设备。变量“η”被用来表示元素的整数实例,并且可以在随不同元素使用时可以指示不同或相同的整数值。例如,132η、144η可以指示相同或不同数量的主机适配器132η和设备适配器144η。
[0029]服务器128a-128d通过交换结构(fabric) 150与主机适配器132a,132b…132η和设备适配器144a, 144b…144η进行通信。结构150可以包括在服务器128a_128d和适配器之间提供通信路径的一个或多个接口。路径包括结构150中使得能够通过该结构与共享适配器进行通信的硬件。该结构例如可以包括光纤信道仲裁回路配置、串行回路架构或者诸如外部组件互连(PCI)接口的总线接口,上述PCK接口诸如PC1-Express接口。每个服务器128a-128d可以在初始化期间被指派以适配器132a,132b…132n、144a,144b…144η中的一部分。
[0030]在图1的示例中,结构150可以包括有助于适配器132a,132b…132n、144a,144b…144n被每个服务器128a-128d所共享的交换机160。服务器128a_128d可以被指派以处理针对存储124中所配置的具体卷的I/O请求。服务器128a-128d通过连接168进行通信,该连接168使得能够进行处理器间的通信,以对关于诸如共享适配器132a,132b…132η、144a, 144b…144n之类的适配器共享设备所执行的配置操作进行管理。
[0031]图2示出了 I/O适配器200,其可以与图1的适配器132a,132b…132η、144a, 144b…144η相同或相似。在所图示的实施例中,I/O适配器200例如可以是光纤信道适配器。根据特定应用,I/O适配器200可以利用其它通信协议。
[0032]适配器200具有多个CPU (也就是CPUO,CPU I, CPU2...CPUn,它们从一个或多个服务器128a-128d接收输入/输出请求)以执行其中数据通过I/O端口 PO,Pl,P2,...Pn而往来于存储进行读取和写入的输入/输出操作。如这里所使用的,术语CPU是指可以利用一个或多个物理处理核实施的处理资源,该物理处理核可以被指派到与每个处理核相关联的一个或多个处理资源中。因此,如这里所使用的,术语CPU可以用来指代一个或多个物理处理单元或核或者这样提供处理资源的一部分。
[0033]适配器200具有诸如1/0端口?0汁1,?2,...?11所提供的I/O端口资源的其它资源。因此,如这里所使用的,术语I/O端口可以被用来指代物理I/O端口或者这样向一个或多个CPU提供I/O端口资源的一部分。
[0034]适配器200的其它资源包括存储器210所提供的存储器资源。这些存储器资源包括其可以临时存储诸如CPU—一CPUO, CPU1, CPU2...CPUn一一的I/O数据的数据的高速缓存212。每个CPU——CPUO, CPU I, CPU2...CPUn——可以对适配器200的一个或多个高速缓存进行访问。
[0035]存储器资源进一步包括编程资源214,其可以包括例如用于多个CPU—一CPUO, CPU I, CPU2...CPUn——的操作系统、程序