提供两级服务器虚拟化的方法和系统的制作方法

文档序号:6609142阅读:349来源:国知局
专利名称:提供两级服务器虚拟化的方法和系统的制作方法
技术领域
本发明涉及在逻辑分区的数据处理系统中发送中断请求,并且特别涉及添加第二虚拟化事件通告级,其用于在逻辑分区的数据处理系统内向逻辑分区中运行的虚拟机或客户发送中断请求。
背景技术
InfiniBand(无限带宽网络)规范描述了工作队列对(QP)和完成队列(CQ)的概念。为了增强对大量逻辑分区和虚拟机资源的可扩展性,添加了事件队列(EQ),其被主机通道适配器(HCA)用于记录与QP和CQ资源相关联的事件的总和。图1说明了现有技术的InfiniBand系统10,其具有通过构造网络102与例如存储子系统104、RAID子系统106、控制台108互连的多个处理器节点100;以及通过其连接SCSI设备、以太网连接、光纤通道(FC)集线器和FC设备、图形和视频设备的多个I/O机架110。该构造102包括多个交换机112和路由器114,从而消息和数据可以在该InfiniBand系统10上进行交换。每个处理器节点100包括一个或多个中央处理单元(CPU)116、存储器118和主机通道适配器(HCA)120。InfiniBand系统10和HCA 120是公知的并且在InfiniBand商业联盟的InfiniBand体系结构规范,版本1.0.a,(2001)中进行了完整的解释。
Rogers等人的“ABCs OF z/OS SYSTEM PROGRAMMINGVOLUME 10”(IBM Redbook,SG24-6990-00(2004年6月))中讨论了逻辑分区(LPAR)的概念。
在2005年9月13日签发给Desai等人的美国专利No.6,944,847 B2,VIRTUALIZATION OF INPUT/OUTPUT DEVICES IN A LOGICALLYPARTITIONED DATA PROCESSING SYSTEM,公开了一种管理程序层,该管理程序层通过使虚拟化输入/输出设备可被任何系统分区调用而将对虚拟化输入/输出设备的使用同步到该管理程序层,其中该虚拟化输入/输出设备可由逻辑分区的数据处理系统的多个分区有规律地使用。
在2004年6月8日签发给Brice,Jr.等人的美国专利No.6,748,460B2,“INITIATIVE PASSING IN AN I/O OPERATION WITHOUT THEOVERHEAD OF AN INTERRUPT”,公开了将主动权交给处理器以处理对I/O操作的I/O请求,该I/O操作用于在主存储器与一个或多个设备之间发送数据。
在2004年6月22日签发给Brice,Jr.等人的美国专利No.6,754,738B2,“LOW OVERHEAD I/O INTERRUPT”,公开了在I/O操作中将数据发送给一个或多个I/O设备或者从一个或多个I/O设备接收数据,其中在数据处理系统中主存储器由处理器来控制。
在2005年4月12日签发给Easton等人的美国专利No.6,889,021 B2,“INTELLIGENT INTERRUPT WITH HYPERVISORCOLLABORATION”,公开了在数据处理系统中对数据的转移进行控制,其中该数据处理系统具有处理I/O操作中的I/O请求的处理器、由该处理器控制的用于存储数据的主存储器、以及用于将数据发送给该主存储器或从该主存储器接收数据的一个或多个I/O设备。
在2001年12月6日公开的Skene等人的美国专利申请公开US2001/0049741 A1,“METHOD AND SYSTEM FOR BALANCING LOADDISTRIBUTION ON A WIDE AREA NETWORK”,公开了一种系统和方法,其用于平衡由在分开的数据中心处的服务器阵列控制器管理的虚拟服务器上的负载,其中分开的数据中心地理上分布在诸如互联网之类的广域网上。
在2002年11月21日公开的Imada等人的美国专利申请公开US2002/0173863A1,“VIRTUAL MACHINE SYSTEM AND VIRTUALMACHINE CONTROL METHOD”,公开了一种用于虚拟机系统的用户接口函数,该虚拟机系统通过应用软件建立在服务器或PC基础上而无需使用服务处理器等。
在2003年7月3日公开的Aziz等人的美国专利申请公开US2003/0126265A1,“REQUEST QUEUE MANAGEMENT”,公开了用于管理具有动态大小、高可扩展性和可用性的服务器中心(server farm)的方法和装置。
在2003年7月17日公开的Fitzpatrick等人的美国专利申请公开2003/0133449A1,“FAST PATH ROUTING IN A LARGE-SCALEVIRTUAL SERVER COMPUTING ENVIRONMENT”,公开了用于在复杂计算环境中改善数据转移的方法、系统和计算机程序产品。定义了内部路由增强,其能够实现更高效地处理虚拟服务器的业务,由此改善总的数据转移速率。
在2003年8月14日公开的Dar等人的美国专利申请公开US2003/0154236A1,“DATABASE SWITCH ENABLING A DATABASEAREA NETWORK”,公开了一种用于改善对典型DBMS客户端-服务器配置的利用的方法和系统,并且包括在能够使用标准数据库服务器和标准协议动态且透明地将应用程序连接到数据库的网络中位于应用程序和数据库服务器之间的数据库交换机。
在2004年6月22日公开的Usa等人的美国专利申请公开US2004/0143664A1,“METHOD FOR ALLOCATING COMPUTERRESOURCE”,公开了动态地将计算机资源重新分配给多个虚拟机LPAR,其中最优数量的资源分配被确定,从而这些虚拟机LPAR在近期将几乎不会出现资源短缺。
在2004年8月5日公开的Bitner等人的美国专利申请公开US2004/0153614A1,“TAPE STORAGE EMULATION FOR OPEN SYSTEMSENVIRONMENTS”,公开了一种驻留在网络上的虚拟磁带服务器,该网络在其前端可以连接到多个异类的具有不同操作系统和/或备份应用程序的备份主机,并且在其后端可以连接到开放系统环境中的一个或多个磁盘存储器设备。
在2004年12月9日公开的Frank等人的美国专利申请公开US2004/0250254A1,“VIRTUAL PROCESSOR METHODS ANDAPPARATUS WITH UNIFIED EVENT NOTIFICATION ANDCONSUMER-PRODUCER MEMORY OPERATIONS”,公开了一种虚拟处理器,其包括在一个或多个处理器上执行的一个或多个虚拟处理单元,其中每个虚拟处理单元执行一个或多个进程或线程。
在2005年2月24日公开的Vasilevsky等人的美国专利申请公开US2005/0044301A1,“METHOD AND APPARATUS FOR PROVIDINGVIRTUAL COMPUTING SERVICES”,公开了一种在一组物理处理器与一组虚拟多处理器之间创建的以形成虚拟化数据中心的抽象级别。
在2004年11月18日公开的Belmar等人的美国专利申请公开US2004/0230712,“MANAGING INPUT/OUTPUT INTERRUPTIONS INNON-DEDICATED INTERRUPTION HARDWARE ENVIRONMENTS”,公开了在计算环境中管理的输入/输出中断,其不使用专用的基于每个客户的中断硬件来提出中断。在该环境中可调度的客户程序直接接收I/O中断,而无需管理程序的干预。
回到图1,在用于与由IBM提供的InfiniBand系统一起使用的HCA120中,在EQ中所记录的事件被分成完成事件或未完成事件这两类。完成事件包括该HCA何时完成程序发起的工作请求,该工作请求由QP中的工作队列条目(WQE)来标识。完成事件可以被识别,并且完成队列条目(CQE)被记录在与QP相关联的CQ中。如果与CQ相关联的EQ还没有包含针对完成事件的挂起(pending)的EQE,则在该EQ中使针对完成事件的EQE挂起。未完成事件包括与HCA资源相关联的错误何时发生或者HCA资源的状态或配置何时改变。未完成可以被识别,并且如果与资源相关联的EQ还未包含针对被识别的未完成事件类型的挂起的EQE,则在该EQ中使针对该未完成事件类型的EQE挂起。
对于HCA,处理器节点100的操作系统分配一个或多个QP或CQ,分配单个EQ,并且使该QP和CQ与该EQ相关联。这形成一种层级,在该层级中QP和CQ处在底部而单个EQ(及其相关联的I/O中断)处在顶部。因此,可以将单个HCA的完成事件和未完成事件映射到针对每个操作系统的单个EQ。
该分层设计允许操作系统有效地根据需要将HCA事件解复用回至各个QP和CQ。其他IBM专利描述了如何虚拟化给定的物理HCA,以通过让每个分区均拥有并管理其自己的单独的QP、CQ和EQ来同时支持多个单独的逻辑分区(在单个中央处理装置(PC)内)。在这种情况下,HCA硬件通过将HCA事件定向(vectoring)到分区的EQ来完成解复用的形式,该分区拥有用于被识别的事件的资源(也即QP或CQ)。

发明内容
被解决的问题是,诸如IBM zSeries平台之类的平台提供两级服务器虚拟化。第一级由LPAR管理程序来提供,使得多个逻辑分区能够共享HCA资源。第二级由诸如z/VM管理程序之类的虚拟机管理程序来提供,使得多个独立的虚拟机能够共享被指定给单个逻辑分区的HCA资源。该环境具有高的扩展需求,因为它必须支持在多个逻辑分区中的每个逻辑分区内同时执行的成千上万的虚拟机之间共享HCA资源。
本发明解决了这样的可扩展性需要。本发明是HCA硬件和固件、zSeries平台固件以及z/VM管理程序的协作,该协作提供这样一种外部特性,即在逻辑分区和虚拟机上执行的潜在的数千个操作系统中的每个操作系统均拥有其自己的单独的EQ以从所共享的HCA硬件接收HCA事件通告。这是通过在背景技术部分所描述的EQ级上添加第二虚拟化EQ级来实现的。
特别地,该HCA硬件将针对单个逻辑分区内的所有虚拟机的所有事件归类为“单个”分区所拥有的EQ,并且接着发送中断请求,其使得zSeries固件获得控制。该固件在z/VM管理程序的帮助下将来自分区所拥有的EQ的归类事件解复用到基于每个虚拟机分配的各个虚拟化EQ,并且恰当地生成相关联的虚拟机EQ条目和相关联的中断。虚拟机和HCA都不知晓这个附加级别的EQ虚拟化。
本发明的一个目的是通过提供一种用于在数千个消费服务器镜像之间共享HCA资源的有成本效益的又非常有效的机制而为zSeries平台提供重要的竞争优势。
这里还描述了与上面概述的方法相对应的系统和计算机程序产品,并要求其权利。
通过本发明的技术实现了另外的特征和优点。这里详细描述了本发明的其他实施例和方面,并且认为它们是所主张的发明的一部分。参考该描述和附图可以更好地理解本发明的优点和特征。


在本说明书的总结部分的权利要求书中,具体指出并清楚地主张了本发明的主题。根据下面结合附图所进行的详细描述,本发明前述的以及其他的目标、特征和优点变得显而易见。
图1是对可与本发明一起使用的现有技术的InfiniBand系统的说明,并且该InfiniBand系统包括每个均有主机通道适配器(HCA)的多个处理器节点;图2是对图1中的处理器节点之一的中央处理器装置(CPC)的说明,并且包括具有提供第一级虚拟化的逻辑分区(LPAR)管理程序层的主存储器表示,并且包括逻辑分区和逻辑分区的存储器中的数据结构;图3是对图2中的CPC的进一步说明,并且包括管理着图2中的单个分区内的资源的虚拟机(VM)管理程序层,而其提供第二层虚拟化;图4、图5和图6放到一起时形成了用于逻辑分区的主机通道适配器中断的流程图;图7是对客户事件队列联系文件(GEQA)的主机结构的说明;图8是对客户事件队列控制块(GEQCB)的主机结构的说明;图9说明了GEQA、GEQCB以及客户和主机HCA资源之间的关系;图10至图15放到一起时形成了由主机完成的用于进行资源分配和结构初始化的函数的流程图;以及图16和图17放到一起时形成了针对可分页虚拟机的主机通道适配器事件通告的函数的流程图。
通过参考附图所举的例子,该详细的描述解释了本发明的优选的实施例,以及本发明的优点和特征。
具体实施例方式
如在这里所使用的,术语“客户”是指可分页的虚拟机而术语“主机”是指使用解释执行来实现客户的管理程序。这样的管理程序的一个例子是可以从纽约Armonk的国际商业机器公司获得的IBM z/VM。应该理解,类似于解释执行的其他设备实现可被用于实现主机和客户。术语“虚拟机”和“客户”在这里可被互换地使用。
如在这里所使用的,术语“锁定(pinning)”用于指主机使正常情况下可分页的主机页变为不可分页。
如在这里所使用的,“机器”用于指程序所看到的CPU。于是,机器同时包括CPU硬件和任何固件实现。
如在这里所使用,提供了以下定义使用恰当的ALLOCATE指令来分配诸如QP、CQ和EQ之类的HCA资源。
分配指令是虚拟化的,从而当被客户发送时,它被截取,并且主机对HCA的资源分配进行调节。
针对HCA QP、CQ和EQ资源的控制驻留在适配器存储器中并且可以通过恰当的LOAD(加载)和STORE(存储)指令来访问。
该STORE和LOAD指令是虚拟化的,从而当被客户发送时,它们可被主机截取并处理,或者可在没有截取的情况下被客户解释执行。
当配置HCA资源时,以下情况可能是正确的QP最多可以与两个CQ相关联,其中一个CQ针对完成的发送请求而一个CQ针对完成的接收请求。或者QP可以与同时针对完成的发送请求和完成的接收请求的单个CQ相关联。
多于一个的QP可以与单个CQ相关联。
QP可以与单个EQ相关联。与该QP相关联的未完成事件被记录在该EQ中。
多于一个的QP可以与单个EQ相关联。
CQ可以仅与一个EQ相关联。与该CQ相关联的完成事件及其相关联的QP被记录在该EQ中。
多于一个的CQ可以与单个EQ相关联。
适配器概要字节(ASB)可以与EQ相关联。(ASB是程序存储器中的一个字节,程序通常将其初始化为零。当将EQE加到与ASB相关联的EQ时,适配器将ASB的值设置成非零值)。
主概要字节(PSB)可以与EQ相关联。(PSB是硬件存储区(HAS)中的一个字节,机器通常将其初始化为零。当将EQE加到与PSB相关联的EQ时,适配器将PSB的值设置成非零值)。PSB仅对于机器固件是可见的。
多于一个的EQ可以与单个ASB相关联。
多于一个的EQ可以与单个PSB相关联。
适配器中断是I/O类中断,其不与任何子信道相关联。适配器中断与中断区(IZone)和中断子类(ISC)相关联。IZone标识哪个逻辑分区将接收中断。在分区或虚拟机内,ISC定义中断优先级并且还允许对中断进行屏蔽。
图2是对图1的处理器节点100之一的中央处理器装置(CPC)200的说明。该CPC 200包括存储器118和图1的CPU 116中的至少之一。该CPC 200与HCA 120相连。该CPC 200包括逻辑分区管理程序220,如所公知的那样其将该存储器分成多个逻辑分区198。每个逻辑分区198具有作为存储器118的一部分的存储器199。用于该逻辑分区198的每个存储器199包括队列对(QP)202、完成队列(CQ)204和事件队列(EQ)206。应该理解,该CQ 204包括完成队列条目(COE)205,而EQ 206包括事件队列事件(EQE)207,其中每个完成和事件被记录,如将讨论的那样。该EQ 206包括类型1EQ 206a和类型2EQ 206b。该QP 202控制I/O请求,一个队列用于发送请求,且一个队列用于接收请求。该CQ204用于记录I/O完成状态。该EQ 206记录事件通告,其包括事件的完成和未完成。同样,在每个逻辑分区存储器199中存在也称为辅助概要字节(SSB)的适配器概要字节(ASB)208,其可以与EQ 206a相关联。在存储器118中包括了主概要字节(PSB)210,其可以与EQ 206b相关联。可以将该PSB 210保存在存储器中被称为硬件存储区(HSA)212的那部分中,HAS 212是存储器118中的受限部分,并且其对于运行在该处理器上的应用程序不可用,而是用于机器固件。
如所提及的,该CPC 200中的一个层是被称为LPAR管理程序的逻辑分区管理程序220,其是控制程序,该控制程序与下面的固件一起管理该CPC 200中的LPAR 198。例如,在用于zSeries z990平台的LPAR管理程序中,CPC 200可以具有一到三十个逻辑分区,其中每个分区具有其自己的操作系统,如图2所示。这是第一级虚拟化。
图3是对CPC 200的附加层的说明,其中虚拟机管理程序层300共享被指定给其逻辑分区的资源,该资源诸如在虚拟机之间的物理的中央处理器单元或中央处理器(CP)116和存储器118。该虚拟机管理程序管理单个分区198内的资源。所示出的CP 116和存储器118仅是被指定给虚拟机管理程序300正在其中运行的那个分区的那些CP和存储器。图3说明了具有被指定给虚拟机管理程序正在其中执行的那个逻辑分区的多个处理器116的处理器。在这个例子中,分区的处理器116中的两个处理器被该VM管理程序唯一地指定给标识为MVS1的虚拟机,而处理器116中的八个处理器在标识为MVS2到MVS5的虚拟机之间共享。在图3中,虚拟机管理程序300可以是例如z/VM管理程序。同样,被指定给单个逻辑分区的HCA资源可以在由在该逻辑分区中执行的虚拟机管理程序所管理的多个独立的虚拟机之间共享。这是第二级虚拟化。
为了减轻与EQ轮询相关联的开销,利用了这样一种机制,其中HCA120可以发送I/O类中断请求,其被称为适配器中断。当EQ 206从空状态转换到非空状态时,可以请求这样的中断。适配器中断将主动权提供给该程序以处理所有的完成事件(记录在相关联的CQ 204的CQE 205中)和/或记录在EQ 206中的未完成事件。
该程序将继续处理所记录的事件直到处理完所有事件,并且该程序将该EQ 206放置回空状态。注意,当EQ 206处于非空状态时,假设该程序具有主动权。当该程序具有主动权时,期望该程序识别EQ 206中任何新的EQE 207的到来。因此,适配器可以识别新的事件完成并且添加新的EQE 207,同时禁止生成新的适配器中断。
概要指示符ASB 208和PSB 210还可以与EQ 206或EQ组相关联以方便该程序和机器识别需要处理哪些EQ。无论何时该HCA将EQE 207记录在与概要指示符ASB 208或PSB 210相关联的EQ 206中,该指示符都被设置成非零值。当该程序获得开始消费EQE 207的主动权时,它首先将概要指示符ASB 208设置成零值,从而不会丢失主动权。
通过利用包括所讨论的附加虚拟化EQ 206级的这种HCA资源层级,用于客户完成事件的EQE 207被直接记录在拥有该事件的客户所拥有的EQ 206中,提供了在大量客户间的非常有效的EQE 207递送。这涉及在HCA 120、zSeries固件以及z/VM管理程序300之间的协作。
虚拟机管理程序300针对它正在其中执行的逻辑分区,给每个HCA120分配两个EQ 206。第一(或类型-1)EQ 206a用于记录客户的正常(也即完成)事件,而第二(也即类型-2)EQ 206b用于记录客户的例外(也即未完成事件)。虚拟机管理程序300还使唯一的ASB 208与每个类型-2EQ 206b相关联。通过由z/VM管理程序300初始化的一组控制块,其中为每个客户EQ 206设置一个控制块,被分配给一个HCA 120的所有客户EQ 206都与该HCA的类型-1 EQ 206a相关联。
当分配类型-1 EQ 206a时,该固件确保唯一的PSB 210与该逻辑分区的类型-1 EQ 206a中的每一个相关联。当分配类型-2 EQ 206b时,该固件确保单个PSB 210与该逻辑分区的所有类型-2 EQ 206b相关联。
当在类型-1 EQ 206a中记录EQE 207时,该HCA 120将与该类型-1EQ 206a相关联的所有PSB 210设置成非零值,并且发送适配器中断请求。该固件对适配器中断请求的响应是将EQE 207转发给拥有该事件的客户的EQ 206,并且基于该客户的EQ 206和中断控制来设置客户ASB208,并且将适配器中断提交给该客户。固件使用PSB 210来标识哪些类型-1 EQ 206a包含需要转发的EQE 207,并且使用那些EQE 207中的信息来标识该转发应该发生到哪个客户EQ 206。该固件还使用使客户EQ206与主机类型-1 EQ 206a相关联的虚拟机管理程序存储器中的控制块来确定客户EQ 206a的位置。该固件还使用z/VM控制块来使客户适配器中断挂起。
当在类型-2 EQ 206b中记录EQE 207时,HCA 120将与类型-2 EQ206b相关联的所有PSB 210设置成非零值,将与类型-2 EQ 206b相关联的唯一的ASB 208设置成非零值,并且发送适配器中断请求。该固件对适配器中断请求的响应是生成针对该分区的适配器中断,其驱动z/VM管理程序300处理该事件(其可以包括在拥有该事件的客户的EQ 206中生成EQE 207,并且设置该客户ASB,并且使客户适配器中断挂起)。虚拟机管理程序300使用ASB 208来标识哪些类型-2 EQ 206b包含需要转发的EQE 207。
在LPAR和可分页虚拟机(z/VM)环境中,用于HCA的QDIO适配器中断可以进行非常有效的扩展。由IBM提供的QDIO适配器为大家所公知,并且将不再进一步讨论它。与逻辑分区所拥有的HCA资源相关联的适配器中断可以被直接路由给那个逻辑分区,而无需LPAR管理程序220的干预。类似地,与客户所拥有的HCA资源相关联的适配器中断可以被直接路由给那个虚拟机,而无需LPAR管理程序220和虚拟机管理程序300的干预。与其说排队是关于客户是否在运行的函数,倒不如说中断到客户的提交是关于客户是否在运行的函数。
在图4、图5和图6中说明了用于逻辑分区的InfiniBand主机通道适配器中断,这些图放到一起时形成了用于逻辑分区的主机通道适配器中断的流程图,其在包括HCA事件通告的事件序列的上下文中被最佳地理解。在图4中开始,在401处,适配器-事件描述记录函数开始。在402处,针对完成事件进行检查。当在402处HCA识别出完成事件时,在404处进行检查以检查该完成事件是否与发送CQ相关联,并且在408处进行检查以确定该完成事件是否与接收CQ相关联。在与包含工作请求的QP相关联的CQ(406用于发送CQ而410用于接收CQ)中记录CQE。在412处进行检查以确定与该CQ相关联的EQ是否已经包含针对那个CQ的完成事件的EQE。如果在412处的检查结果为“是”,则不采取任何动作。如果在412处的检查结果为“否”,则在414中将这样的EQE加到EQ,并且该程序进行到图5。
在416处进行检查以确定是否识别出针对QP或CQ资源的未完成事件。如果在416处的检查结果为“否”,则不采取任何动作。如果在416处的检查结果为“是”,则在418处进行检查以确定与该资源相关联的EQ是否已经包含用于针对该QP或CQ资源的未完成事件的EQE。如果在418处的检查结果为“是”,则不采取任何动作。如果在418处的检查结果为“否”,则在420处将这样的EQE加到EQ。该程序接着进行到图5。
图5说明用于给出适配器概要指示的程序,并且始于500处。在502处进行检查以确定ASB是否与该EQ相关联。如果在502处的检查结果为“是”,则在504处将该ASB设置为非零值。在506处进行检查以确定PSB是否与该EQ相关联。如果检查结果为“是”,则在508处将与该EQ相关联的PSB设置成非零值。该程序接着进行到图6。
图6说明适配器中断,并且始于600处。在602处进行检查以确定,在记录EQE时该EQ中是否存在针对完成事件的EQE。如果在602处的检查结果为“是”,则在604处进行检查以确定该EQ控制是否规定立即中断。如果在604处的检查结果为“否”,则不使任何适配器中断挂起,并且在612处HCA继续。如果在602处在记录EQE时该EQ中存在针对完成事件的EQE,则基于在608处确定的中断延迟定时器的状态可能使适配器中断挂起或者可能不使适配器中断挂起。如果在608处的中断定时器未准备好用于中断,则在612处HCA继续。如果在608处的检查结果指示中断定时器时间准备好用于中断,则在610处使该适配器中断挂起。如果在602处在记录EQE时该EQ中不存在针对完成事件的EQE并且在604处该EQ控制规定了立即中断,则在610处发送适配器中断请求并且在与该EQ相关联的Izone和ISC上使该适配器中断请求挂起。在612处,HCA接着继续。
应该理解,当识别出适配器中断时或者当程序具有主动权时,程序可以使用相关联的ASB来确定哪些EQ包含需要处理的EQE。这可能导致当中断被提交时不会产生新的工作,但是这是所期望的。
现在将描述用于可分页虚拟机的InfiniBand主机通道适配器中断。回到图2,用于可分页虚拟机的适配器中断利用类型-1 EQ 206a和类型-2EQ 206b。由主机程序(处于主机存储器中)代表该通告的一个或多个客户将类型-1 EQ 206a分配给这种与客户CQ 204相关联的完成事件和未完成事件的客户。类型-1 EQ 206a被机器使用来将HCA 120记录的EQE 207转发给相应的客户EQ 206。如果客户ASB 208与客户EQ 206相关联,则在将EQE 207从类型-1 EQ 206a转发到客户EQ 206时,机器设置ASB208。
由主机程序(位于主机存储器中)代表不与客户CQ 204相关联的未完成事件的通告的一个或多个客户来分配类型-2 EQ 206b,。无论何时HCA 120在类型-2 EQ 206b中记录EQE 207,都立即在与该EQ 206相关联的Izone和ISC上使适配器中断挂起。当识别出适配器中断时,主机负责处理类型-2 EQ 206b中的EQE 207。这种处理可以包括将EQE 207转发给客户EQ 206。在前面所解释的,Izone标识哪个逻辑分区将接收中断,并且ISC定义中断优先权。
图7和图8说明两种主机结构,用于将客户CQ 204上下文与位于客户存储器中的客户EQ 206和客户ASB 208相关联,并且与位于主机存储器中的客户中断状态区域(GISA)900(见图9)相关联。图7说明客户EQ联系文件(GEQA)700,并且图8说明客户EQ控制块(GEQCB)800。该GEQA 700包括指向GEQCB 800的指针702和原始客户CQ令牌704。该GEQCB 800包括指向GISA的指针802、GISC804、指向客户ASB的指针806、以及指向下一个要使用的客户EQE的指针808。在图9中示出了GEQA、GEQCB以及客户和主机HCA资源之间的关系。
现在将描述分配和构建图9的关系的方式以及资源分配和结构初始化。当客户发出ALLOCATE指令来分配HCA资源时,该指令被主机截取。这允许主机将客户资源锁定在主机存储器中,并且在适配器资源上下文、主机结构以及类型-1 EQ 206a和类型-2 EQ 206b之间建立如下所述的附加关联。
图10和11放在一起形成了由主机完成的函数的流程图。当截取到标明EQ分配的客户ALLOCATE指令时,主机完成以下作为模拟客户ALLOCATE的一部分的始于1100处的任务。在1000处,主机分配GEQCB 800,在1002处初始化GISA指针802以指向用于该客户的GISA900,以及在1004处根据客户原先规定的值来初始化规定的GISC值804。在1006处进行检查以确定该客户是否是为该规定的适配器分配EQ的第一客户。如果在1006处的检查结果为“是”,则主机发出两次ALLOCATE,以在1008处为适配器分配类型-1 EQ 206a以及在1010处为适配器分配类型-2 EQ 206b。在图11的1102处,主机还规定用于这些EQ的主机ISC,并且在1104处发出STORE指令以将唯一的主机ASB 208与类型-2 EQ206b相关联。(没有主机ASB与类型-1 EQ相关联)。当在1008处主机发出ALLOCATE以分配类型-1 EQ时,在1012处机器将唯一的PSB 210与类型-1 EQ 206a相关联。当在1010处主机发出ALLOCATE以分配类型-2 EQ时,在1014处机器将对于所有类型-2 EQ是公共的单个PSB 210与类型-2 EQ 206b相关联。在1106处,主机给客户指定用于客户EQ 206的资源标识符值,该值大于HCA 120中应用的任何标识符值。这将保证由客户所执行的标明EQ 206的未来的STORE和LOAD指令将被截取到主机。
图12形成这样的程序的流程图,该程序当截取到标明CQ分配的客户ALLOCATE指令时,主机完成作为模拟客户ALLOCATE的一部分的图12的函数。在1200处,主机分配GEQA。在1202处,主机代表客户重新发出ALLOCATE,并且规定解释执行控制,其导致对规定实际存储区类型的客户STORE和LOAD指令的截取。在1204处,主机发出STORE指令以将CQ令牌设置成该CQ的GEQA的地址。在1206处,进行检查以确定客户是否发出STORE指令来设置CQ令牌值。如果检查结果为“是”,则在1208处截取指令并且在GEQA 700中存储客户CQ令牌值702。在1210处,进行检查以确定客户是否发送STORE指令以使EQ与CQ相关联。如果检查结果为“是”,则在1212处截取指令并且在GEQA 700中存储指向EQ 702的GEQCB的指针。
图13是提供这样的函数的流程图,该函数当客户发出STORE指令以使ASB与其EQ相关联时,截取指令,并且在1330处主机锁定包含客户ASB的页,并且在1302处将ASB 208的主机地址放置在804处的GEQCB 800。
图14是提供这样的函数的流程图,该函数当截取到标明QP分配的客户ALLOCATE指令时,在1400处主机代表客户重新发出ALLOCATE,并且规定解释执行控制,其导致对规定实际存储区域类型的客户存储和装载指令的截取。
图15是提供这样的函数的流程图,该函数当客户发出STORE以使EQ与QP相关联时,截取指令,并且主机代表客户重新发出STORE,规定针对适配器的类型-2 EQ 206到客户QP 202的关联。现在将描述针对可分页虚拟机的主机通道适配器事件通告。在包括客户HCA事件通告的事件序列的上下文环境中,可以最佳地理解针对可分页虚拟机的主机通道适配器中断。
图16形成针对逻辑分区的虚拟机(也即客户)HCA事件通告的流程图。在1600处,HCA完成检查以确定是否由HCA识别完成事件。如果在1600处的检查结果为“是”,则在1602处将CQE 205记录在与包含工作请求的客户QP 202相关联的客户(发送或接收)CQ 204中。在1604处进行检查以确定与CQ 204相关联的类型-1 EQ 206a是否已经包含针对该CQ的完成事件的EQE 207。如果在1604处的检查结果为“是”,则HCA不采取任何动作。如果在1604处的检查结果为“否”,则在1606处将EQE 207添加到类型-1 EQ 206a。在1608处,将相关联的PSB设置成非零值。在1610处,针对主机发送适配器中断请求,并且在1612处,在EQ中分配ISC。接着HAS前往图17。
如果在1600处的检查结果为“否”,则在1616处进行检查以确定与资源相关联的类型-2 EQ 206b是否已经包含针对QP 202或CQ 204资源的未完成事件的EQE 207。如果在1616处的检查结果为“是”,则HCA不采取任何动作。如果在1616处的检查结果为“否”,则在1618处将EQE207添加到EQ 206。
如果在1618处将针对未完成事件的EQE 207添加到类型-2 EQ206b,则在1620处将与EQ 206相关联的ASB 208设置成非零值。(类型-1 EQ没有相关联的ASB)。当将EQE 207添加到类型-2 EQ 206b时,在1622处将相关联的PSB设置成非零值,并且前往图17。
现在将讨论主机适配器中断。如果将EQE 207添加到类型-1 EQ206a,则在1610处针对主机发送适配器中断请求,并且在1612处将ISC分配给EQ 206,并且HCA前往图17。当在1618处将EQE 207添加到类型-2 EQ 206b时,在1624处基于分配给该类型-2 EQ 206b的主机ISC发送中断请求并使该中断请求挂起,并且HCA继续。
图17形成由机器针对来自图16的完成事件所执行的附加动作的流程图。客户适配器-事件描述记录如下所示。使用在类型-1 EQ 206a中的下一个EQE 207,将EQ 206转发给(被记录在)客户EQ 206。在1700处,被记录在EQE 207中的CQ令牌704是主机存储器中的GEQA 700的地址。在1702处,GEQA 700包含指向客户EQ 206的GEQCB 702的指针。在1704处,GEQCB 800包括指向下一个待使用的客户EQE的指针808。这个指针的值被保留并且指针前进指向下一个EQE 207以阻止其他CPU同时使用相同的EQE。在1708处,将类型-1 EQ 206a复制到客户EQE 207并且将GEQA 700中的原始客户CQ令牌值704复制到客户EQE 207中的CQ令牌域704。
现在将讨论客户适配器-概要指示记录。在1710处进行检查以确定客户ASB是否与客户EQ相关联。如果在1710处的检查结果为“是”,(指向GEQCB 800中的客户ASB 806的指针是非零),则在1712处将客户ASB设置成非零值。
现在将讨论客户适配器中断。在1714处,针对图9中所示出的GISA900中的客户,使适配器中断挂起,在图9中所示出的GISA 900针对由GEQCB 800中的GISA指针802所标识的客户。这是通过对GISA 900中的客户中断子类(GISC)比特进行设置来实现的,该GISA 900对应于与客户EQ 206相关联的GISC。当在GISA 900中已经使中断挂起之后,在1716处由机器基于每个客户I/O和中断子类使能(enablement)将中断提交给客户。如果在GISA中的相应的告警屏蔽比特是“1”,则对主机做出告警中断。
本发明的性能可以以软件、固件、硬件或它们的某些组合来实现。
作为一个例子,本发明的一个或多个方面可以被包括在制造品中(例如,一个或多个计算机程序产品),其具有例如计算机可用的介质。该介质具有在其中包含的例如计算机可读程序代码工具,该工具用于提供并促进本发明的各性能。该制造品可以作为计算机系统的一部分被包括或者可被单独出售。
此外,可以提供至少一个机器可读的程序存储设备,该程序存储设备具体包含至少一个可由机器执行以完成本发明的性能的指令程序。
这里所描绘的流程图仅作示例。在不偏离本发明的精神的条件下,可以对这里所描述的这些图或步骤(或操作)做出许多改变。例如,可以以不同的顺序来执行各步骤,或者可以添加、删除或修改步骤。所有这些变型都被认为是所主张的本发明的一部分。
尽管已经描述了本发明的优选实施例,但是应当理解,现在和将来,本领域的普通技术人员可以做出各种各样的改进和增强,其属于后续权利要求书的范围。这些权利要求应该被理解成用于对首次描述的本发明维持合适的保护。
权利要求
1.一种提供两级服务器虚拟化的方法,其包括通过第一管理程序提供第一级虚拟化,使得多个逻辑分区能够共享一组资源;通过第二管理程序提供第二级虚拟化,使得多个独立的虚拟机能够共享所述被指定给单个逻辑分区的资源;将针对所述单个逻辑分区中的所有虚拟机的所有事件归类为单个分区所拥有的事件队列,以便从该单个逻辑分区的共享的资源接收事件通告;以及针对来自所述分区所拥有的事件队列的归类事件,发送中断请求,用于将来自所述分区所拥有的事件队列的归类事件解复用到基于每个虚拟机分配的各个虚拟化事件队列。
2.根据权利要求1所述的方法,还包括将在所述分区所拥有的事件队列中的事件归类为完成事件和未完成事件。
3.根据权利要求2所述的方法,还包括使在所述事件队列中的事件与存储在所述逻辑分区中的适配器概要字节相关联。
4.根据权利要求2所述的方法,还包括使在所述事件队列中的事件与存储在所述服务器的主存储器的硬件存储区中的唯一的主概要字节相关联。
5.根据权利要求3所述的方法,还包括将所述事件队列中的条目转发给拥有所述事件的客户;紧随所述客户已经配置了所述适配器概要字节之后,设置所述客户的相关联的适配器概要字节;以及当所述客户已经请求客户适配器中断时,使所述客户适配器中断挂起。
6.一种提供两级服务器虚拟化的系统,其包括第一管理程序,其提供第一级虚拟化,使得多个逻辑分区能够共享一组资源;第二管理程序,其提供第二级虚拟化,使得多个独立的虚拟机能够共享所述被指定给单个逻辑分区的资源;在单个逻辑分区中的单个分区所拥有的事件队列,用于将针对所述单个逻辑分区中的所有虚拟机的所有事件归类起来,以便从该单个逻辑分区的共享的资源接收事件通告;以及中断信号生成器,其生成针对来自所述分区所拥有的事件队列的归类事件的中断请求,用于将来自所述分区所拥有的事件队列的归类事件解复用到基于每个虚拟机分配的各个虚拟化事件队列。
7.根据权利要求6所述的系统,还包括在所述分区所拥有的事件队列中的完成队列和未完成队列,用于将事件分类为完成事件和未完成事件。
8.根据权利要求7所述的系统,还包括存储在所述逻辑分区中的适配器概要字节,其与所述事件队列中的事件相关联。
9.根据权利要求7所述的系统,还包括存储在所述服务器的主存储器的硬件存储区中的唯一的主概要字节,其与所述事件队列中的事件相关联。
10.根据权利要求8所述的系统,还包括转发函数,其响应于所述中断请求将所述事件队列中的条目转发给拥有所述事件的客户;设置函数,其紧随所述客户已经配置了所述适配器概要字节之后,设置所述客户的相关联的适配器概要字节;以及中断函数,其在所述客户已经请求客户适配器中断时,使所述客户适配器中断挂起。
11.一种计算机数据结构,其包括计算机可读取的介质,其具有记录在其上的计算机可读取数据结构,所述数据结构包括由提供第一级虚拟化的第一管理程序建立的多个逻辑分区,所述多个逻辑分区用于共享一组资源;由提供第二级虚拟化的第二管理程序指定给单个逻辑分区的多个独立的虚拟机,所述虚拟机用于共享所述的那组资源;以及单个分区所拥有的事件队列,用于从该单个逻辑分区的共享资源接收事件通告,由此对针对所述单个逻辑分区中的所有虚拟机的所有事件进行归类,其中针对来自所述分区所拥有的事件队列的归类事件发送中断请求,提供将来自所述分区所拥有的事件队列的归类事件解复用到基于每个虚拟机分配的各个虚拟化队列。
12.根据权利要求11所述的数据结构,其中所述分区所拥有的事件队列被分为针对完成事件的第一类队列和针对未完成事件的第二类队列。
13.根据权利要求12所述的数据结构,还包括存储在所述逻辑分区中的适配器概要字节,所述适配器概要字节与所述事件队列中的事件相关联。
14.根据权利要求11所述的数据结构,还包括存储在所述服务器的主存储器的硬件存储区中的唯一的主概要字节,所述主概要字节与所述事件队列中的事件相关联。
15.根据权利要求13所述的数据结构,还包括在拥有所述事件的客户的事件队列中且响应于所述中断请求被转发给所述客户的条目;所述客户的相关联的适配器概要字节,其紧随所述客户已经配置了所述适配器概要字节之后进行设置。
全文摘要
一种用于提供两级服务器虚拟化的方法、系统、程序产品和计算机数据结构。第一管理程序使多个逻辑分区能够共享一组资源并且提供第一级虚拟化。第二管理程序使多个独立的虚拟机能够共享被指定给单个逻辑分区的资源并且提供第二级虚拟化。针对在所述单个逻辑分区内的所有虚拟机的所有事件被归类为单个分区所拥有的事件队列,以便从该单个逻辑分区的共享的资源接收事件通告。针对来自分区所拥有的事件队列的归类事件,发送中断请求,用于由机器将来自分区所拥有的事件队列的归类事件解复用到基于每个虚拟机分配的各个虚拟化事件队列。
文档编号G06F9/46GK101075198SQ20071010474
公开日2007年11月21日 申请日期2007年4月25日 优先权日2006年5月17日
发明者G·E·西特曼三世, C·W·小盖尼, D·L·奥西塞克, D·W·施米特, F·W·小布赖斯, J·R·伊斯顿, S·G·威尔金斯, U·C·恩乔库, 陆坦 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1