在逻辑分区之间共享网络i/o适配器的装置与方法

文档序号:6539403阅读:144来源:国知局
专利名称:在逻辑分区之间共享网络i/o适配器的装置与方法
技术领域
一般地讲,本发明涉及数据处理,更具体地讲,涉及在逻辑分区的计算机系统中的逻辑分区之间共享资源。
背景技术
从计算机时代开始以来,计算机系统已经演变为可以在许多不同环境下看到的非常复杂的设备。计算机系统一般包含硬件(例如半导体、电路板等等)与软件(例如计算机程序)的组合。随着半导体处理与计算机体系结构的发展,计算机硬件的性能被推得越来越高,已经演变出越来越复杂的计算机软件,以利用硬件的更高的性能,从而产生了比几年前功能强大得多的当今的计算机系统。
在特定计算机系统上的硬件与软件的组合定义了计算环境。不同的硬件平台与不同的操作系统因此提供了不同的计算环境。近年来,工程人员已经认识到可能通过将计算机系统资源逻辑分区为不同的计算环境,在同一物理计算机系统上提供不同的计算环境。由IBM开发的iSeries计算机系统就是一个支持逻辑分区的计算机系统的例子。如果希望在iSeries计算机系统上进行逻辑分区,则安装分区管理器代码(在iSeries术语中称为“超级管理器”),其允许在同一平台上定义不同的计算环境。安装了分区管理器之后,就可以创建定义不同计算环境的逻辑分区。分区管理器管理逻辑分区,以确保它们能够共享计算机系统中所需的资源,同时维护由逻辑分区定义的分离的计算环境。
包含多个逻辑分区的计算机系统一般在逻辑分区之间共享资源。例如,具有单个CPU的计算机系统可以定义两个逻辑分区,其中向每个逻辑分区分配50%的CPU,向第一逻辑分区分配33%的存储器,向第二逻辑分区分配67%的存储器,并且向这两个逻辑分区分配两个不同的I/O槽,一个分区一个I/O槽。在定义了逻辑分区并且向逻辑分区分配了共享资源之后,每个逻辑分区作为独立的计算机系统。由此,在上面具有两个逻辑分区的单个计算机系统的例子中,对于所有实用的目的,这两个逻辑分区将呈现为两个分离的截然不同的计算机系统。
逻辑分区一般使用内部虚拟局域网(VLAN)通信。该VLAN实现简化了从多个计算机系统到具有多个逻辑分区的单个计算机系统的迁移。过去分离的计算机系统通过LAN连接通信,现在逻辑分区可以通过其VALN连接以类似方式通信。
当逻辑分区共享资源(例如I/O适配器)时,逻辑分区之一一般被指定为该资源的“拥有者”,另一个逻辑分区可以通过与拥有该资源的逻辑分区通信来共享该资源。对于此处的讨论,名词“宿主分区”指拥有资源的逻辑分区,名词“寄宿分区”指不拥有资源、但是希望通过与宿主分区通信来使用(或共享)资源的逻辑分区。当在寄宿分区中的应用程序需要与宿主分区中的共享I/O适配器(例如以太网适配器)通信时,该应用程序一般向其TCP栈传送消息,TCP栈将该消息传送给其IP栈,IP栈然后将该消息传送给VLAN设备驱动器。分区管理器监视存储器中相应于VLAN设备驱动器的数据缓冲区,并且当存在传送数据时,分区管理器将数据缓冲区中的数据从寄宿分区存储器拷贝到宿主分区存储器。然后,宿主分区上的VLAN设备驱动器读取所拷贝的数据,并且将该数据发送给宿主分区中的IP转发机构。然后,IP转发机构将该数据发送给I/O适配器设备驱动器,I/O适配器设备驱动器将该数据发送给其硬件接口。然后,分区管理器管理从硬件接口到I/O适配器的数据传送,从而导致数据被发送到耦合至I/O适配器的网络连接。虽然I/O适配器的这种实现非常容易实现,但是其具有严重的性能问题,尤其当共享资源的逻辑分区的数目增加时。如果没有方法以更有效率的方式在逻辑分区之间共享I/O适配器,则计算机工业将继续承受从逻辑分区的计算机系统中共享I/O适配器产生的性能损失。

发明内容
逻辑分区计算机系统中的I/O适配器共享机构允许在逻辑分区之间以高效率的方式共享网络I/O适配器。第一逻辑分区拥有(或者控制)I/O适配器,而第二逻辑分区希望使用(或共享)该I/O适配器。在第一逻辑分区中提供包含硬件接口的I/O适配器设备驱动器。在第二逻辑分区中提供虚拟设备驱动器,其提供至少通过查询第一逻辑分区中的I/O适配器设备驱动器而部分定义的一组功能。I/O适配器共享机构包含传送机构,其允许数据直接从第二逻辑分区中的虚拟设备驱动器传送到I/O适配器,而不用通过第一逻辑分区中的I/O适配器设备驱动器。
从以下对本发明实施方式的更具体的描述(如附图所示),可以清楚地看出本发明的以上与其他特征与优点。


以下将参照附图描述本发明的优选实施方式,其中相同的标号表示相同的部件,其中图1为根据本发明优选实施方式的、支持逻辑分区与I/O适配器共享的计算机装置的方框图;图2为现有技术的配置逻辑分区以共享I/O适配器的方法的流程图;图3为显示现有技术的在逻辑分区之间共享I/O适配器的逻辑分区计算机系统的部分的方框图;图4为现有技术的在图3的计算机系统中共享I/O适配器的方法的流程图;图5为显示根据优选实施方式的、图1的在逻辑分区之间共享I/O适配器计算机系统的部分的方框图。
图6为根据优选实施方式的、配置逻辑分区以共享I/O适配器的方法的流程图;以及图7为根据优选实施方式的、用来在图5所示的计算机系统中共享I/O适配器的方法的流程图。
具体实施例方式
根据本发明的优选实施方式,I/O适配器共享机构在逻辑分区之间高效地共享网络I/O适配器。在拥有或者控制I/O适配器的第一逻辑分区中提供I/O适配器设备驱动器。在希望使用或共享该I/O适配器的第二逻辑分区中提供虚拟设备驱动器。虚拟设备驱动器包含至少通过查询第一逻辑分区中的I/O适配器设备驱动器而部分定义的一组功能。通过这种方式,虚拟设备驱动器可以支持I/O适配器能够执行的任何先进的硬件功能。另外,I/O适配器共享机构使用在第二逻辑分区中的虚拟设备驱动器与I/O适配器之间传送数据的传送机构,而不用通过第一逻辑分区中的I/O适配器设备驱动器。
参照图1,计算机系统100为根据优选实施方式的、改进的IBM eServeriSeries计算机系统,并且表示一种适当类型的、支持逻辑分区与I/O适配器共享的计算机系统。本领域技术人员应该理解,本发明的机构与装置同样适用于支持逻辑分区的任何计算机系统。如图1所示,计算机系统100包含连接到主存储器120的一或多个处理器110、海量存储接口130、显示器接口140、网络接口150、多个I/O槽180。注意一或多个海量存储接口130、显示器接口140、网络接口150可以为计算机系统100上嵌入式I/O。这些系统组件通过利用系统总线160互连。海量存储接口130用来将海量存储设备(例如直接存取存储设备155)连接到计算机系统100。一种特定类型的直接存取存储设备为CD RW驱动器,其可以从CD RW 195读取数据。注意海量存储接口130、显示器接口140、网络接口150可以实际在耦合至I/O槽180的适配器中实现。I/O适配器为可以在插入一个I/O槽180的外部卡中实现的一种适当的网络接口150。
主存储器120包含分区管理器121与N个逻辑分区125,在图1中显示为逻辑分区125A至125N。优选地,分区管理器121创建这N个逻辑分区125。优选地,每个逻辑分区125包含相应的操作系统126,在图1中显示为操作系统126A至126N。
分区管理器121包含的在逻辑分区之间高效地共享I/O适配器的I/O适配器共享机构122。虽然在图1中显示I/O适配器共享机构122驻留在主存储器120中,但是本领域技术人员应该理解,I/O适配器共享机构最好包含驻留在逻辑分区125与分区管理器121中的不同部件,并且通过这些不同部件的合作,进行优选实施方式的I/O适配器的共享,如以后详细讨论的图5-7所示。
操作系统126为多任务操作系统,例如OS/400、AIX、或Linux;然而,本领域技术人员应该理解,本发明的精神与范围不限于任何一种操作系统。可以使用任何适当的操作系统。操作系统126为包含管理计算机系统100资源的低级代码的复杂程序。某些这些资源的某一些为处理器110、主存储器120、海量存储接口130、显示器接口140、网络接口150以及I/O槽180。每个分区中的操作系统126可以与其他分区中操作系统相同,或者可以为完全不同的操作系统。由此,一个分区可能运行OS/400操作系统,而一个不同的分区可能运行OS/400操作系统的另一实例,可能是不同的版本,或者可能具有不同的环境设置(例如时区或者语言)。逻辑分区中的操作系统甚至可以不同于OS/400,只要其与硬件兼容就可以(例如AIX或Linux)。通过这种方式,逻辑分区可以在同一物理计算机系统上提供完全不同的计算环境。
在图1中显示分区125A至125N驻留在主存储器120中。但是本领域技术人员应该理解,分区为包含存储器之外其他资源的逻辑结构。逻辑分区一般与分配处理器效能与其他系统资源(例如I/O槽180(与驻留在I/O槽180中的I/O适配器))一道,指定一部分存储器20。因此,可以定义一个逻辑分区包含两个处理器与一部分存储器,还有能够提供海量存储接口130、显示器接口140、网络接口150或者至I/O适配器或者插入I/O槽180的其他设备的接口的功能的一个或多个嵌入I/O。然后,可以定义另一个分区包含三个其他处理器、存储器120的不同部分、一个或多个嵌入I/O以及I/O槽180。在图1中显示分区来示意性地表示逻辑分区,其包含计算机系统100内存储器120之外的系统资源。还要注意优选地,分区管理器121驻留在与逻辑分区分离的存储器与硬件中,并且包含对逻辑分区不是直接可用的工具与机构。
计算机系统100利用公知的虚拟寻址机构,其允许计算机系统100的程序表现得好像它们只是访问一个大的单个存储实体一样,而不是访问多个较小的存储实体,例如主存储器120与DASD设备155。因此,虽然分区管理器121与分区125A至125N显示驻留在主存储器120中,但是本领域技术人员应该理解,这些项不一定要同时完全包含在主存储器120中。还应该注意此处使用名词“存储器”来一般地指计算机系统100的整个虚拟存储器。
处理器110可以由一或多个微处理器和/或集成电路构成。处理器110执行在主存储器120中存储的程序指令。主存储器120保存处理器110可以访问的程序与数据。当处理器110启动时,处理器110首先执行构成分区管理器121的程序指令,这些指令初始化逻辑分区中操作系统。
虽然处理器110显示只包含单个的系统总线,但是本领域技术人员应该理解,可以使用具有多条总线的计算机系统来实现本发明。另外,在优选实施方式中使用的I/O接口每个都包含分离的、可完全编程的微处理器,这些微处理器用来承担处理器100的计算繁重的处理,如在iSeries输入/输出处理器中,或者可以是简单的工业标准I/O适配器(IOA)。
显示器接口140用来将一或多个显示器165直接连接到计算机系统100。这些显示器165(其可能是非智能(即哑)终端或者可完全编程的工作站)用来允许系统管理员和用户与计算机系统100通信。然而,注意虽然提供了显示器接口140支持与一或多个显示器165的通信,但是计算机系统100不一定需要显示器165,这是因为可以通过网络接口150进行与用户或其他处理的所有必须的交互。
网络接口150用来通过网络170将其他计算机系统和/或工作站(例如图1中的175)连接到计算机系统100。不管计算机系统100如何连接到其他计算机系统和/或工作站,本发明同样适用,而不管是否利用当前的模拟和/或数字技术或通过将来的某些联网机构建立的网络连接170。另外,可以使用许多不同的网络协议来实现网络。这些协议为允许计算机通过网络170通信的专门计算机程序。TCP/IP(发送控制协议/互连网协议)为适当的网络协议的例子。
此时,重要的是要注意,虽然已经并且将继续在功能完备的计算机系统的环境下描述本发明,但是本领域技术人员应该理解,本发明能够作为程序产品以各种形式分发,并且不管用来实际进行该分发的计算机可读信号承载介质的特定类型为何,本发明同样适用。适当的信号承载介质的例子包括可记录型介质(例如软盘与CD RW(例如图1的195))以及传送型介质(例如数字与模拟通信链路)。
现在给出对现有技术I/O网络适配器共享的详细描述,这给出了讨论根据优选实施方式的I/O适配器共享的情景。参照图2,方法200表示现有技术中用来准备两个逻辑分区共享I/O适配器的步骤。I/O适配器分配给逻辑分区(步骤210),该逻辑分区称为“宿主分区”,这是因为其为I/O适配器的拥有者(或宿主)。然后,在宿主分区与希望使用(共享)宿主分区中的I/O适配器的任何分区(寄宿分区)之间设置内部VLAN通信(步骤220)。然后在宿主分区中建立IP转发(步骤230)。注意可以在逻辑分区可能在运行时共享I/O适配器之前的任何时间执行方法200的各个步骤,包含当创建并定义逻辑分区时,当首次启动并执行逻辑分区时,或者在运行时。在最优选的实现中,在分区配置的过程中,在步骤210,I/O适配器分配给宿主分区,当加载并且准备运行逻辑分区时,进行步骤220中的VLAN通信设置,并且在逻辑分区运行之后执行步骤230中的IP转发步骤。
图3显示现有技术的逻辑分区计算机300中的特定逻辑部件的方框图。宿主分区302A与寄宿分区302B由分区管理器121控制。寄宿分区302B包含一或多个应用程序310、TCP机构320、IP机构330以及虚拟LAN(VLAN)设备驱动器340。宿主分区302A包含VLAN设备驱动器350、IP转发机构360以及包含硬件接口380的I/O适配器设备驱动器370。注意宿主分区302A一般包含TCP层,因为向共享I/O适配器发送数据不使用TCP层,所以没有显示该TCP层。宿主分区302A与寄宿分区302B通过分区管理器321与VLAN通信。还要注意分区管理器321管理硬件接口380与I/O适配器390之间的数据传送。
通过结合图2与图3,可以看出在图2中的步骤220,在寄宿分区302B中安装VLAN设备驱动器340,在宿主分区302A中安装VLAN设备驱动器350,并且启动分区管理器321内的VLAN通信。在图2中的步骤230,在宿主分区302A中安装并启动IP转发机构360,从而由VLAN设备驱动器350接收的、意在I/O适配器390的数据被转发给I/O适配器设备驱动器370。
参照图4,现有技术的方法400显示图3中寄宿分区302B共享I/O适配器390的步骤。方法400表示当需要在寄宿分区302B中的应用程序310与I/O适配器390之间传送数据时在运行时执行的步骤。注意方法400的步骤也要最好通过参照图3来理解。首先,寄宿分区302B中的应用程序310向其TCP机构320写入对于I/O适配器390的发送数据(步骤410)。TCP机构320将该数据格式化为帧,添加TCP效验和,并且将该数据写入IP机构330(步骤420)。然后,IP机构330添加IP效验和,并且将该数据写入VLAN设备驱动器340(步骤430)。然后,分区管理器在寄宿分区302B中的存储器与宿主分区302A中的存储器之间拷贝数据(步骤440)。然后,宿主分区302A中的VLAN设备驱动器350读取该数据,确定数据需要由IP层处理,并且在这种情况下由IP转发机构360处理(步骤450)。然后,IP转发机构360将数据转发给I/O适配器设备驱动器370,I/O适配器设备驱动器370将该数据写入其硬件接口380(步骤460)。然后,分区管理器321管理由I/O适配器390进行的、从宿主分区302A中的存储器至I/O适配器390的、发送数据的直接存储器访问(DMA)(步骤470)。然后,I/O适配器发送该数据(步骤480)。为简单起见,方法400有关于从寄宿分区302B中的应用程序310至I/O适配器390的数据传送以进行发送。本领域技术人员可以理解可以相反的顺序以类似的方式进行从I/O适配器390至应用程序310的传送。
图2-4所示的现有技术用来在逻辑分区之间分享I/O适配器的方法有几个问题。首先,应用程序310与I/O适配器390之间的虚线显示的数据路径符合与实线显示的控制消息路径相同的路径。作为结果,当I/O适配器为专用的时,待在应用程序310与I/O适配器390之间传送的所有数据都必须通过三个设备驱动器(宿主分区中VLAN、寄宿分区中的VLAN以及I/O适配器),而不是通过单一的设备驱动器(I/O适配器)。另外,由分区管理器在VLAN设备驱动器之间拷贝数据,从而导致了额外的数据拷贝。现有技术的方法还需要两个IP层,从而增加了开销。结果就是现有技术中的I/O适配器的性能水平显著低于专用I/O适配器。
另外一个显示的缺点是寄宿分区不能利用在I/O适配器中存在的任何硬件改进,这是因为使用TCP/IP与VLAN设备驱动器340的应用程序不知道I/O适配器的功能。大部分当前的以太网适配器支持TCP与IP“校验和分担(offload)”。这意味着I/O适配器390自身将可以被配置来生成TCP与IP消息的校验和,由此减轻了软件生成TCP与IP消息的校验和的负担。当以专用方式使用支持校验和分担的I/O适配器时,I/O适配器可以被配置来生成TCP与IP消息的校验和,这可以提高系统性能,这是因为不需要CPU周期来生成校验和。然而,当同样的支持校验和分担的I/O适配器以图3所示的共享方式使用时,寄宿TCP与IP层无法知道I/O适配器390具有该功能。作为结果,该校验和分担功能不能为任何寄宿分区所用。注意该功能可以由宿主分区使用,而不能为任何寄宿分区所用。
某些1Gbps(千兆每秒)以太网适配器提供的另一先进的适配器功能被称为“大帧发送”。当启动这一特征时,I/O适配器可以处理大至64KB的发送帧。适配器将64K字节帧分割为1,500字节帧,包含适当的TCP与IP头部。在现有技术中,一般使用1,500字节帧。显然,发送64K字节帧比发送同等数目的1,500字节帧效率更高,这是因为每个帧都需要校验和处理。在现有技术中,与使用64K字节帧相比,对于1,500字节帧要进行更多次的寄宿与宿主分区之间的上下文切换。某些I/O适配器的大帧发送功能可以显著地提高性能,但是这一功能不能为任何寄宿分区所用。此外,因为寄宿分区无法确定I/O适配器的功能,所以它们必须假定不存在任何先进特征。
在某些公知的以太网适配器上还支持另一种先进的适配器功能称为“IPsec”,其为TCP/IP与UDP会话的加密标准。与其他先进的适配器功能一样,该功能对于寄宿分区不可用。还有另一种为未来以太网适配器设想的先进的适配器功能称为TCP/IP分担引擎,或TOE。其允许TCP/IP处理直接在适配器上进行,从而减轻了计算机系统进行TCP/IP处理一般所需的CPU周期。此外,该先进的适配器功能不能为使用现有技术的用来在逻辑分区之间共享I/O适配器方法的任何寄宿分区所用。
现有技术的用来在逻辑分区之间共享I/O适配器方法的另一缺点在于IP转发配制复杂并且容易出错。宿主分区必须打开IP转发,并且将其正确配置,以共享I/O适配器。现有技术的用来在逻辑分区之间共享I/O适配器方法的所有这些缺点在以下详细讨论的优选实施方式的方法中都不存在。
图1显示了包含根据本发明的硬件与软件两者的某些显著特征的示例计算机系统,而在图5中作为系统500显示了图1中某些组件的更详细的逻辑图。现有技术中的VLAN设备驱动器替换为宿主分区125A中的I/O接口550与寄宿分区125B中的虚拟寄宿设备驱动器540。当需要在应用程序310与I/O适配器390之间传送数据时,I/O宿主接口550与虚拟寄宿设备驱动器540相互通信。由I/O宿主接口550提供的重要功能之一为虚拟寄宿设备驱动器540查询I/O适配器宿主设备驱动器560以确定I/O适配器390支持哪些功能的能力。由此虚拟寄宿设备驱动器540包含至少部分地由在I/O适配器宿主设备驱动器中可用的功能确定的一组功能。一种配置虚拟寄宿设备驱动器540的适当方法为查询I/O适配器宿主设备驱动器560以得到其可用功能。当然,将I/O适配器宿主设备驱动器560的可用功能传送给虚拟寄宿设备驱动器540的其他方法也在优选实施方式的范围之内。例如,可以写入分区管理器中的配置表或文件,其包含I/O适配器宿主设备驱动器的可用功能,并且可以读取该表或文件以为虚拟寄宿设备驱动器确定可用的功能。
因为虚拟寄宿设备驱动器540具有由I/O适配器宿主设备驱动器560的可用功能确定的一组功能,所以寄宿分区现在可以利用由I/O适配器提供的任何性能改进,包含校验和分担、大帧发送、IPsec、TOE等等。作为结果,应用程序310的传送数据可以利用I/O适配器390的所有先进特征,即使I/O适配器390正在与宿主分区125A共享也如此。由此,如果假定I/O适配器390支持校验和分担与大帧发送,并且在I/O适配器390上与虚拟寄宿设备驱动器540内启动了这些功能,则TCP机构520不需要生成校验和,并且可以构成大至64K字节的帧,而非1500字节帧。另外,IP机构530不需要生成校验和。因此共享I/O适配器390的寄宿分区可以使用I/O适配器390的先进特征。
图5中系统500的另一显著优点在于与对于控制消息的路径相比,数据可以具有缩短的路径。控制消息的路径以实线表示,数据的路径以虚线表示。当应用程序310需要向I/O适配器390发送数据时,由应用程序310向TCP机构520写入消息,TCP机构520构成帧并且发送该帧至IP机构530。然后,IP机构530发送该帧至虚拟寄宿设备驱动器540。然后,向I/O宿主接口550写入适当的消息。假定该消息包含至寄宿分区125B内包含待发送数据的缓冲区列表的指针。然后,该消息由I/O宿主接口550写入I/O适配器宿主设备驱动器560,I/O适配器宿主设备驱动器560将该消息写入其硬件接口380。对于该例子假定该消息指定寄宿分区内由虚拟寄宿设备驱动器540写入数据的存储器位置。作为响应,分区管理器121优选地通过使用重定向的远程DMA,来管理数据直接从寄宿分区内包含所述数据的存储器至I/O适配器390的传送,其由虚线表示。在现有技术中,I/O适配器只有至拥有该I/O适配器的逻辑分区的存储器的DMA访问权限。然而,在优选实施方式中,分区管理器可以设置附加的地址转换项和以允许I/O适配器至寄宿分区125B内存储器的DMA访问的验证功能。注意虚线数据路径显示数据从虚拟寄宿设备驱动器540传送到I/O适配器390。然而要注意该数据不需要驻留在虚拟寄宿设备驱动器内,而是可以驻留在寄宿分区125B中存储器的、可以由虚拟寄宿设备驱动器540访问并且可以由重定向的远程DMA操作访问的任何部分内。这意味着可以在不需要任何改进的前提下,使用现有技术的I/O适配器来利用优选实施方式的优点,这是因为来自寄宿分区302B中存储器的I/O适配器DMA操作与来自宿主分区302A中存储器的DMA操作类型相同。
参照图6,根据优选实施方式用来设置逻辑分区之间的I/O适配器共享的方法600开始时向宿主分区分配I/O适配器(步骤210)。然后,设置宿主分区上的I/O宿主接口(步骤620)。然后,查询I/O适配器宿主设备驱动器,以确定I/O适配器的功能(步骤630)。然后为寄宿分区中的虚拟寄宿设备驱动器安装可能部分地由步骤639中的查询确定的功能(即一组功能)(步骤640)。通过这种方式,虚拟寄宿设备驱动器可以被配置来支持在I/O适配器上可用的任何先进特征,由此使这些先进特征可以为寄宿分区所用。此时方法600完成,并且逻辑分区准备好运行。
参照图7,根据优选实施方式的方法700显示最好在运行时进行的、用来与寄宿分区125B共享图5的宿主分区125A所拥有(或控制)的I/O适配器的步骤。当寄宿分区125B中的应用程序310需要向I/O适配器390传送数据时,其开始时向TCP机构520写入发送数据(步骤710)。然后,TCP机构520向IP机构530写入该数据(步骤720)。然后,IP机构530向虚拟寄宿设备驱动器540写入该数据(步骤730)。然后,虚拟寄宿设备驱动器540向I/O宿主接口550发送指示寄宿分区125B中的数据需要发送给I/O适配器390的消息(步骤740)。优选地,该消息标识寄宿分区125B存储器内待传送数据所位于的位置。优选地,设计虚拟寄宿设备驱动器540与I/O宿主接口550来最小化分区之间的上下文转换,从而提高系统性能。I/O宿主接口550将该消息传递给I/O适配器宿主设备驱动器560,I/O适配器宿主设备驱动器560将该消息传递给其硬件接口380(步骤750)。然后,分区管理器从硬件接口380读取该消息,并且管理从寄宿分区125B至I/O适配器390的数据直接DMA(步骤760)。然后,I/O适配器390发送数据780至其所连接的网络连接(步骤770)。
方法700假定需要从图5中的应用程序310向I/O适配器390传送数据。方法700在向I/O适配器390发送数据的过程中产生了显著的性能改进。在I/O适配器接收需要写入寄宿分区的数据的情况下,性能改进没有如此显著。假定在宿主分区125A的存储器中有数据接收缓冲区。当I/O适配器接收数据时,数据被写入宿主分区中的数据缓冲区。然后产生中断,该中断通知I/O适配器宿主设备驱动器560收到了数据。数据被传递给I/O宿主接口550,I/O宿主接口550使用分区管理器121来将该数据传递给适当的逻辑分区中的虚拟寄宿设备驱动器540。然后,该虚拟寄宿设备驱动器540该数据传递给IP机构530,然后传递给TCP机构520,最后至应用程序310。因为共享I/O适配器390接收数据的改进不如发送数据的改进显著,所以不再讨论接收的情况。然而要注意计算机系统服务器一般发送大大多于其接收的数据。
通过在每个寄宿分区中提供可以反映由I/O适配器提供的先进特征的虚拟设备驱动器,优选实施方式提供了与现有技术相比的显著优点。作为结果,诸如校验和分担、大帧发送、IPsec、TOE等先进特征可以被寄宿分区使用,从而大大提高了这些寄宿分区与I/O适配器的通信的性能。与用于物理I/O适配器的设备驱动器相比,这些虚拟设备驱动器小得多也简单许多,这是因为虚拟设备驱动器不需要硬件接口、不需要低级适配器管理并且不需要彻底的错误恢复功能。另外,虚拟设备驱动器与I/O宿主机构之间的消息协议允许标识寄宿逻辑分区内可以直接传送到I/O适配器(不用通过I/O适配器宿主设备驱动器)的发送数据。结果是当在逻辑分区之间共享I/O适配器时系统性能显著提高。
本领域技术人员应该理解,在本发明的范围内可能由许多修改。由此,虽然针对其优选实施方式显示并描述了本发明,但本领域技术人员应该理解,在不脱离本发明的精神与范围的前提下可以在形式与细节上进行各种修改。
权利要求
1.一种装置,包含(A)至少一个处理器;(B)耦合至所述至少一个处理器的存储器;(C)在该装置上定义的第一与第二逻辑分区,第一逻辑分区控制共享网络I/O适配器,第二逻辑分区使用由第一逻辑分区控制的共享网络I/O适配器;(D)I/O适配器共享机构,驻留在所述存储器中,并且由所述至少一个处理器执行,该I/O适配器共享机构包含(D1)第一逻辑分区中的I/O适配器设备驱动器,该I/O适配器设备驱动器包含至共享网络I/O适配器的硬件接口;(D2)第二逻辑分区中的虚拟设备驱动器,其中该虚拟设备驱动器提供至少部分地由第一逻辑分区中的I/O适配器设备驱动器中可用的功能确定的一组功能;以及(E)通信机构,用来控制所述虚拟设备驱动器与I/O适配器设备驱动器之间的信息交换。
2.如权利要求1所述的装置,其中所述虚拟设备驱动器的一组功能至少部分地通过就其可用功能查询I/O适配器设备驱动器来确定。
3.如权利要求1所述的装置,还包含传送机构,用来在所述虚拟设备驱动器与共享网络I/O适配器之间传送数据,而该数据不用通过所述I/O适配器设备驱动器。
4.如权利要求1所述的装置,其中所述通信机构包含分区管理器,用来在第一与第二逻辑分区之间通信。
5.如权利要求4所述的装置,其中所述通信机构还包含第一逻辑分区中的宿主接口,用来在所述I/O适配器设备驱动器与分区管理器之间通信,其中分区管理器在所述第一逻辑分区中的宿主接口与第二逻辑分区中的虚拟设备驱动器之间通信。
6.一种装置,包含(A)至少一个处理器;(B)耦合至所述至少一个处理器的存储器;(C)在该装置上定义的第一与第二逻辑分区,第一逻辑分区控制共享网络I/O适配器,第二逻辑分区使用由第一逻辑分区控制的共享网络I/O适配器;(C1)第一逻辑分区包含包含至共享网络I/O适配器的硬件接口的I/O适配器设备驱动器;(C2)第二逻辑分区包含虚拟设备驱动器,用来接收待发送到共享网络I/O适配器的数据以及从共享网络I/O适配器接收的数据,其中该虚拟设备驱动器提供至少部分地由第一逻辑分区中的I/O适配器设备驱动器中可用的功能确定的一组功能;以及(D)耦合至第一与第二逻辑分区的通信机构,用来在所述虚拟设备驱动器与I/O适配器设备驱动器之间通信。
7.如权利要求6所述的装置,其中所述虚拟设备驱动器的一组功能至少部分地通过就其可用功能查询I/O适配器设备驱动器来确定。
8.如权利要求6所述的装置,还包含传送机构,用来在所述虚拟设备驱动器与共享网络I/O适配器之间传送数据,而该数据不用通过所述I/O适配器设备驱动器。
9.如权利要求6所述的装置,其中所述通信机构包含分区管理器,用来在第一与第二逻辑分区之间通信。
10.如权利要求9所述的装置,其中所述通信机构还包含第一逻辑分区中的宿主接口,用来在所述I/O适配器设备驱动器与分区管理器之间通信,其中分区管理器在所述第一逻辑分区中的宿主接口与第二逻辑分区中的虚拟设备驱动器之间通信。
11.一种装置,包含至少一个处理器;耦合至所述至少一个处理器的存储器;在该装置上定义的第一与第二逻辑分区,第一逻辑分区控制共享网络I/O适配器,第二逻辑分区使用由第一逻辑分区控制的共享网络I/O适配器;第一逻辑分区中的I/O适配器设备驱动器,该I/O适配器设备驱动器包含至共享网络I/O适配器的硬件接口;第二逻辑分区中的虚拟设备驱动器,其中该虚拟设备驱动器提供至少部分地由第一逻辑分区中的I/O适配器设备驱动器中可用的功能确定的一组功能;以及通信机构,用来在所述第二逻辑分区中的虚拟设备驱动器与第一逻辑分区中的I/O适配器设备驱动器之间通信。
12.如权利要求11所述的装置,其中所述虚拟设备驱动器的一组功能至少部分地通过就其可用功能查询I/O适配器设备驱动器来确定。
13.如权利要求11所述的装置,还包含传送机构,用来在所述虚拟设备驱动器与共享网络I/O适配器之间传送数据,而该数据不用通过所述I/O适配器设备驱动器。
14.如权利要求11所述的装置,其中所述通信机构包含分区管理器,用来在第一与第二逻辑分区之间通信。
15.如权利要求14所述的装置,其中所述通信机构还包含第一逻辑分区中的宿主接口,用来在所述I/O适配器设备驱动器与分区管理器之间通信,其中分区管理器在所述第一逻辑分区中的宿主接口与第二逻辑分区中的虚拟设备驱动器之间通信。
16.一种装置,包含至少一个处理器;耦合至所述至少一个处理器的存储器;在该装置上定义的第一与第二逻辑分区,第一逻辑分区控制共享网络I/O适配器,第二逻辑分区使用由第一逻辑分区控制的共享网络I/O适配器;分区管理器,驻留在所述存储器中,并且由所述至少一个处理器执行,该分区管理器执行以下步骤(1)从第二逻辑分区中的虚拟设备驱动器接收至少一个发送消息;(2)发送该至少一个发送消息至第一逻辑分区中的I/O适配器设备驱动器,该I/O适配器设备驱动器包含至共享网络I/O适配器的硬件接口;以及(3)将数据从第二逻辑分区中的虚拟设备驱动器传送到共享网络I/O适配器,而该数据不用通过所述第一逻辑分区中的I/O适配器设备驱动器。
17.如权利要求16所述的装置,其中所述虚拟设备驱动器提供至少部分地由第一逻辑分区中的I/O适配器设备驱动器中可用的功能确定的一组功能。
18.如权利要求17所述的装置,其中所述虚拟设备驱动器的一组功能至少部分地通过就其可用功能查询I/O适配器设备驱动器来确定。
19.一种由计算机实现的用来在计算机装置上的第一与第二逻辑分区之间共享一共享网络I/O适配器的方法,该方法包含以下步骤(A)在第一逻辑分区中提供I/O适配器设备驱动器,该I/O适配器设备驱动器包含至共享网络I/O适配器的硬件接口;(B)确定由共享网络I/O适配器提供的多个功能;(C)在第二逻辑分区中提供虚拟设备驱动器,该虚拟设备驱动器提供至少部分地由步骤(B)中确定的所述多个功能确定的一组功能;以及(D)控制所述虚拟设备驱动器与I/O适配器设备驱动器之间的信息交换。
20.如权利要求19所述的方法,其中步骤(B)通过就其可用功能查询I/O适配器设备驱动器来执行。
21.如权利要求19所述的方法,还包含以下步骤在所述虚拟设备驱动器与共享网络I/O适配器之间传送数据,而该数据不用通过所述I/O适配器设备驱动器。
22.如权利要求19所述的方法,其中步骤(D)由在第一与第二逻辑分区之间通信的分区管理器执行。
23.一种由计算机实现的用来在计算机装置上的第一与第二逻辑分区之间共享一共享网络I/O适配器的方法,该方法包含以下步骤(A)定义第一与第二逻辑分区,第一逻辑分区控制共享网络I/O适配器,第二逻辑分区使用由第一逻辑分区控制的共享网络I/O适配器,第一逻辑分区包含I/O适配器设备驱动器,该I/O适配器设备驱动器包含至共享网络I/O适配器的硬件接口,第二逻辑分区包含虚拟设备驱动器,该虚拟设备驱动器接收待发送到共享网络I/O适配器的数据与从共享网络I/O适配器接收的数据;(B)确定由共享网络I/O适配器提供的多个功能;(C)提供至少部分地由步骤(B)中确定的多个功能确定的一组功能;以及(D)在所述虚拟设备驱动器与I/O适配器设备驱动器之间通信。
24.如权利要求23所述的方法,其中步骤(B)通过就其可用功能查询I/O适配器设备驱动器来执行。
25.如权利要求23所述的方法,还包含以下步骤在所述虚拟设备驱动器与共享网络I/O适配器之间传送数据,而该数据不用通过所述I/O适配器设备驱动器。
26.如权利要求23所述的方法,其中步骤(D)由在第一与第二逻辑分区之间通信的分区管理器执行。
27.一种由计算机实现的用来在计算机装置上的第一与第二逻辑分区之间共享一共享网络I/O适配器的方法,该方法包含以下步骤(A)定义所述装置上的第一与第二逻辑分区,第一逻辑分区控制共享网络I/O适配器,第二逻辑分区使用由第一逻辑分区控制的共享网络I/O适配器;(B)在第一逻辑分区中提供I/O适配器设备驱动器,该I/O适配器设备驱动器包含至共享网络I/O适配器的硬件接口;(C)在第二逻辑分区中提供虚拟设备驱动器,该虚拟设备驱动器提供至少部分地根据在第一逻辑分区的I/O适配器设备驱动器中可用的功能确定的一组功能;以及(D)在所述第二逻辑分区中的虚拟设备驱动器与第一逻辑分区中的I/O适配器设备驱动器之间通信。
28.如权利要求27所述的方法,其中所述在第一逻辑分区的I/O适配器设备驱动器中可用的功能通过就其可用功能查询I/O适配器设备驱动器来确定。
29.如权利要求27所述的方法,还包含以下步骤在所述虚拟设备驱动器与共享网络I/O适配器之间传送数据,而该数据不用通过所述I/O适配器设备驱动器。
30.如权利要求27所述的方法,其中步骤(D)由在第一与第二逻辑分区之间通信的分区管理器执行。
31.一种由计算机实现的用来在计算机装置上的第一与第二逻辑分区之间共享一共享网络I/O适配器的方法,该方法包含以下步骤(A)定义所述装置上的第一与第二逻辑分区,第一逻辑分区控制共享网络I/O适配器,第二逻辑分区使用由第一逻辑分区控制的共享网络I/O适配器;(B)提供执行以下步骤的分区管理器(B1)从第二逻辑分区中的虚拟设备驱动器接收至少一个发送消息;(B2)发送该至少一个发送消息至第一逻辑分区中的I/O适配器设备驱动器,该I/O适配器设备驱动器包含至共享网络I/O适配器的硬件接口;以及(B3)将数据从第二逻辑分区中的虚拟设备驱动器传送到共享网络I/O适配器,而该数据不用通过所述第一逻辑分区中的I/O适配器设备驱动器。
32.如权利要求31所述的方法,还包含以下步骤根据在I/O适配器设备驱动器中可用的功能确定第二逻辑分区中虚拟设备驱动器的一组功能。
33.如权利要求32所述的方法,其中所述在I/O适配器设备驱动器中可用的功能通过就其可用功能查询I/O适配器设备驱动器来确定。
34.一种程序产品,包含(A)I/O适配器共享机构,包含(A1)I/O适配器设备驱动器,用来安装在第一逻辑分区中,该I/O适配器设备驱动器包含至共享网络I/O适配器的硬件接口;(A2)虚拟设备驱动器,用来安装在第二逻辑分区中,该虚拟设备驱动器提供至少部分地由第一逻辑分区中的I/O适配器设备驱动器中可用的功能确定的一组功能;以及(A3)通信机构,用来控制所述虚拟设备驱动器与I/O适配器设备驱动器之间的信息交换;(B)承载该I/O适配器共享机构的计算机可读信号承载介质。
35.如权利要求34所述的程序产品,其中所述信号承载介质包含可记录介质。
36.如权利要求34所述的程序产品,其中所述信号承载介质包含传送介质。
37.如权利要求34所述的程序产品,其中所述虚拟设备驱动器的一组功能至少部分地通过就其可用功能查询I/O适配器设备驱动器来确定。
38.如权利要求34所述的程序产品,其中所述I/O适配器共享机构还包含传送机构,用来在所述虚拟设备驱动器与共享网络I/O适配器之间传送数据,而该数据不用通过所述I/O适配器设备驱动器。
39.如权利要求34所述的程序产品,其中所述通信机构包含分区管理器,用来在第一与第二逻辑分区之间通信。
40.如权利要求39所述的程序产品,其中所述通信机构还包含第一逻辑分区中的宿主接口,用来在所述I/O适配器设备驱动器与分区管理器之间通信,其中分区管理器在所述第一逻辑分区中的宿主接口与第二逻辑分区中的虚拟设备驱动器之间通信。
41.一种程序产品,包含(A)用来执行以下步骤的分区管理器(1)从第二逻辑分区中的虚拟设备驱动器接收至少一个发送消息;(2)发送该至少一个发送消息至第一逻辑分区中的I/O适配器设备驱动器,该I/O适配器设备驱动器包含至共享网络I/O适配器的硬件接口;以及(3)将数据从第二逻辑分区中的虚拟设备驱动器传送到共享网络I/O适配器,而该数据不用通过所述第一逻辑分区中的I/O适配器设备驱动器;以及(B)承载该分区管理器的计算机可读信号承载介质。
42.如权利要求41所述的程序产品,其中所述信号承载介质包含可记录介质。
43.如权利要求41所述的程序产品,其中所述信号承载介质包含传送介质。
44.如权利要求41所述的程序产品,其中所述虚拟设备驱动器提供至少部分地由第一逻辑分区的I/O适配器设备驱动器中可用的功能确定的一组功能。
45.如权利要求44所述的程序产品,其中所述虚拟设备驱动器的一组功能至少部分地通过就其可用功能查询I/O适配器设备驱动器来确定。
全文摘要
逻辑分区的计算机系统中的I/O适配器共享机构允许在逻辑分区之间以高效方式共享网络I/O适配器。第一逻辑分区拥有(或者控制)I/O适配器,而第二逻辑分区希望使用(或共享)该I/O适配器。在第一逻辑分区中提供包含硬件接口的I/O适配器设备驱动器。在第二逻辑分区中提供虚拟设备驱动器,其提供至少通过查询第一逻辑分区中的I/O适配器设备驱动器而部分定义的一组功能。I/O适配器共享机构包含传送机构,其允许数据直接从第二逻辑分区中的虚拟设备驱动器传送到I/O适配器,而不用通过第一逻辑分区中的I/O适配器设备驱动器。
文档编号G06F15/16GK1667601SQ20051005500
公开日2005年9月14日 申请日期2005年3月11日 优先权日2004年3月11日
发明者罗纳德·L·毕劳, 查尔斯·S·格雷厄姆, 哈维·G·基尔, 切坦·梅塔, 李·A·森德尔巴赫, 杰雅·斯里克里施南 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1