一种带有主机通道适配器设备的主机及其睡眠和唤醒方法

文档序号:6334357阅读:365来源:国知局
专利名称:一种带有主机通道适配器设备的主机及其睡眠和唤醒方法
技术领域
本发明涉及通信技术领域,特别是涉及一种带有主机通道适配器设备的主机及其睡眠和唤醒方法。
背景技术
PCI (Peripheral Component hterconnection,外设组件互连)标准定义了多种级别的设备功耗管理模式,比如最常见的LO级以及Ll级。当设备检测到较长时间无数据请求时,可以自动转入LO级模式,此种模式会适量的降低设备功耗,但是设备内部逻辑仍在正常工作,一旦设备检测到数据请求,会立即转入正常运行模式处理数据请求。Ll级模式则不是自动的,需要软件的明确指示设备才会进入Ll级模式,在此种运行模式下,设备内部逻辑会停止工作,与LO级模式相比,设备功耗更低。通常情况下,设备功耗级别的指定可以通过系统管理软件在操作系统的支持下写设备的PCI配置寄存器来实现。IB(InfiniBand)网络的 HCA (Host Channel Adapter,主机通道适配器)设备是一种典型的PCI-X或者PCIE设备,它兼容PCI标准,所以也支持上述两种功耗管理模式。但是这两种功耗管理模式却很少应用,其中,LO级运行模式不能满足用户节省功耗的要求,而 Ll级运行模式虽然能够满足节省功耗要求,但是对于带有HCA设备的主机,在睡眠和唤醒时存在问题。例如,目前在服务器上应用最广泛的Linux操作系统支持对服务器的睡眠和唤醒功能。当用户暂时不需要服务器运行的时候可以让服务器进入睡眠状态,这时操作系统会将系统即时映像(包括内存和CPU寄存器中的内容)保存在硬盘上,然后停止CPU运行,此时用户可以关闭服务器电源。当用户需要服务器工作时,可以接上电源,通过键盘或者网络唤醒服务器,此时操作系统将从硬盘中恢复睡眠之前的系统映像继续运行,即睡眠前运行的程序和服务均能从睡眠点开始继续执行,睡眠唤醒过程对这些程序和服务是透明的。但是,上述睡眠唤醒过程如果在睡眠之前有IB网络的应用程序或服务正在运行, 唤醒之后这些基于IB网络的应用程序和服务将不能从睡眠点继续执行。因为现有的HCA 设备通常自带有嵌入式处理器固件,并且还有可能有设备cache; —旦进入Ll以及更高级别的功耗管理模式,一方面HCA设备无法保留上层应用程序和服务的状态信息,另一方面操作系统会保存主机CPU运行所需的信息,而无法保存基于HCA设备的应用程序和服务的状态信息,所以在主机进行睡眠时会丢失上述状态信息;在主机唤醒时,HCA设备需要重新初始化,基于HCA设备的应用程序和服务相应也需要重启才能继续工作,并不能回到睡眠时的运行状态,这显然不符合睡眠唤醒的初衷。因此,迫切需要解决带有HCA设备的主机的睡眠和唤醒问题。

发明内容
本发明的目的是提供一种带有HCA设备的主机睡眠方法,以记录睡眠前基于HCA 设备的应用程序和服务的状态信息;一种带有HCA设备的主机的唤醒方法,以避免唤醒时应用程序和服务的重启问题,一种带有HCA设备的主机,能够记录睡眠前基于HCA设备的应用程序和服务的状态信息;以及一种带有HCA设备的主机,能够避免唤醒时应用程序和服务的重启问题。首先,本发明提供了一种带有主机通道适配器设备的主机睡眠方法,包括当收到睡眠指令时,主机的操作系统通知主机通道适配器HCA设备的消息库,使所述消息库将应用程序投递的新的工作请求缓存到对应的队列对QP中、并等待HCA设备完成正在处理的工作请求;当所述HCA设备完成正在处理的工作请求后,操作系统通知HCA设备的驱动程序, 使所述驱动程序对应用程序申请的QP序列执行挂起操作、并关闭HCA设备与主机CPU之间的联系;操作系统完成将内存内容和CPU状态保存到硬盘中,进入睡眠;所述消息库和驱动程序位于主机内存中。其次,本发明提供了一种带有主机通道适配器设备的主机唤醒方法,包括当收到唤醒指令时,主机的操作系统根据硬盘中保存的内存内容和CPU状态恢复内存和CPU ;操作系统通知主机通道适配器HCA设备的驱动程序,使所述驱动程序恢复HCA设备与主机CPU之间的联系、并对应用程序申请的队列对QP序列执行激活操作;操作系统通知HCA设备的消息库,使所述消息库向HCA设备投递被缓存的应用程序投递的工作请求;所述消息库和驱动程序位于主机内存中。再次,本发明提供了一种带有主机通道适配器设备的主机,所述主机包括操作系统,所述主机通道适配器HCA设备的消息库和驱动程序,且所述消息库和驱动程序位于主机内存中;所述操作系统用于当收到睡眠指令时,通知所述消息库,使所述消息库将应用程序投递的新的工作请求缓存到对应的队列对QP中、并等待HCA设备完成正在处理的工作请求;当所述HCA设备完成正在处理的工作请求后,通知HCA设备的驱动程序,使所述驱动程序对应用程序申请的QP序列执行挂起操作、并关闭HCA设备与主机CPU之间的联系;完成将内存内容和CPU状态保存到硬盘中,进入睡眠。最后,本发明提供了一种带有主机通道适配器设备的主机,所述主机包括操作系统,所述主机通道适配器HCA设备的消息库和驱动程序,且所述消息库和驱动程序位于主机内存中;所述操作系统用于当收到唤醒指令时,根据硬盘中保存的内存内容和CPU状态恢复内存和CPU ;通知所述驱动程序,使所述驱动程序恢复HCA设备与主机CPU之间的联系、并对应用程序申请的队列对QP序列执行激活操作;通知HCA设备的消息库,使所述消息库向HCA设备投递被缓存的应用程序投递的工作请求。本发明的带有HCA设备的主机睡眠方法,在主机睡眠前,操作系统通过消息库缓存应用程序的新的工作请求和等待HCA设备完成正在处理的工作请求,使应用程序处于稳定的状态,通过驱动程序挂起QP序列和关闭HCA设备与主机CPU之间的联系,使HCA设备处于稳定状态,然后操作系统完成其他睡眠前准备工作;由此实现在主机睡眠前,消息库和驱动程序将应用程序和服务的状态信息记录到内存中,在主机睡眠时同CPU运行所需的信息一起保存到硬盘上。本发明的带有HCA设备的主机的唤醒方法,在主机唤醒时,操作系统先恢复内存内容和CPU状态,之后通过驱动程序恢复HCA设备与主机CPU之间的联系和激活QP序列,使 HCA设备恢复到主机睡眠前的状态,通过消息库投递被缓存的应用程序投递的工作请求,使应用程序恢复到主机睡眠前的状态;由此实现在主机唤醒时,消息库和驱动程序将应用程序和服务的状态恢复到主机睡眠前的状态,避免HCA设备重新初始化,从而防止应用程序和服务的重启。本发明的带有HCA设备的主机,在主机睡眠前,操作系统通过消息库缓存应用程序的新的工作请求和等待HCA设备完成正在处理的工作请求,使应用程序处于稳定的状态,通过驱动程序挂起QP序列和关闭HCA设备与主机CPU之间的联系,使HCA设备处于稳定状态,然后操作系统完成其他睡眠前准备工作;由此实现在主机睡眠前,消息库和驱动程序将应用程序和服务的状态信息记录到内存中,在主机睡眠时同CPU运行所需的信息一起保存到硬盘上。本发明的带有HCA设备的主机,在主机唤醒时,操作系统先恢复内存内容和CPU状态,之后通过驱动程序恢复HCA设备与主机CPU之间的联系和激活QP序列,使HCA设备恢复到主机睡眠前的状态,通过消息库投递被缓存的应用程序投递的工作请求,使应用程序恢复到主机睡眠前的状态;由此实现在主机唤醒时,消息库和驱动程序将应用程序和服务的状态恢复到主机睡眠前的状态,避免HCA设备重新初始化,从而防止应用程序和服务的重启ο


图1是本发明的带有HCA设备的主机的睡眠方法的流程示意图;图2是本发明驱动程序关闭HCA设备与主机CPU之间的联系的流程示意图;图3是本发明的带有HCA设备的主机的唤醒方法的流程示意图;图4是本发明驱动程序恢复HCA设备与主机CPU之间的联系的流程示意图。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明实施例作进一步详细的说明。现有技术中,主机在睡眠前,操作系统也会将内存中HCA设备嵌入式处理器固件的运行信息进行保留,但是,由于HCA设备在睡眠前会持续工作,处于不稳定状态,因此,内存中记录的HCA设备嵌入式处理器固件的运行信息是不完整的,其对应的不稳定的应用程序和服务的状态信息也是残缺不全,由此导致操作系统无法保存基于HCA设备的应用程序和服务的状态信息;在唤醒过程中,由于上述不稳定应用程序和服务的状态信息残缺不全, 导致了 HCA设备需要重新初始化,基于HCA设备的应用程序和服务相应也需要重启才能正常工作。本发明在主机睡眠前,将应用程序和HCA设备调整到稳定状态,使内存中HCA设备嵌入式处理器固件的运行信息完整可靠,进而在唤醒时利用所述完整的嵌入式处理器固件的运行信息,将应用程序和服务的状态恢复到与睡眠前相同。实施例一
本实施例提供了一种带有HCA设备的主机睡眠方法,如图1所示,所述方法包括如下步骤S10,当收到睡眠指令时,主机的操作系统通知HCA设备的消息库,使所述消息库将应用程序投递的新的工作请求缓存到对应的队列对(QP,QueuePair)中、并等待HCA设备完成正在处理的工作请求。HCA设备的消息库和驱动程序位于主机的内存中,一起提供给用户使用。消息库中通常存储有一些函数和函数实现,在本发明中,当操作系统收到睡眠指令时,消息库还会将应用程序投递的新的工作请求缓存到对应的QP中。本发明中所指的应用程序,均指基于 HCA设备通信的应用程序。操作系统通知HCA设备的消息库,可以是操作系统向消息库发送一个挂起信号, 消息库收到所述挂起信号后调用一个缓存和等待的函数;具体可以为,由于消息库是被应用程序静态或者动态调用的,所以在实际运行中应用程序和消息库在实体上是同一个进程,操作系统可以向所述应用程序发送挂起信号,但是该挂起信号对应用程序透明,应用程序对挂起信号不做处理,消息库捕获到挂起信号后,调用一个缓存和等待的函数;当然也有其他方式通知消息库执行类似动作,本发明对具体实现形式不做限定。在操作系统收到睡眠指令时,应用程序有可能仍在向HCA设备投递工作请求,为了让IB网络进入稳定状态,消息库对应用程序投递的新的工作请求进行缓存。消息库可以将应用程序投递的新的工作请求缓存在对应的QP中,但是不通知HCA设备。这样,新的工作请求对HCA设备不可见,对于应用程序来说,新的工作请求都已经成功投递给了消息库。现有技术的主机在睡眠时,应用程序和服务以及HCA设备均处于不稳定状态,因此在操作系统也无从记录应用程序和服务的状态信息。QP序列位于消息库中,由于应用程序申请QP时,可以根据应用程序的通信模式申请一个以上QP,每个QP可以缓存多个工作请求(个数和QP深度一致),由于QP的空间大小具有设定的上限,当所述消息库中某一 QP缓存的应用程序的工作请求达到设定的QP缓存上限时,若所述应用程序投递新的工作请求,则还可以包括消息库向该应用程序返回错误报告,此时应用程序会进行报错或退出等相应处理。之后,就要等待HCA设备完成正在处理的工作请求,确保没有IB网络的在线消息, 即通常所说的消息驱赶。由于不会再有新的工作请求需要处理,在HCA设备将正在处理的工作请求完成后,应用程序和HCA设备都会处于相对稳定的状态。尽管有可能远程主机上的HCA设备仍然会发送数据给本地应用程序,但是一旦本地HCA设备和CPU睡眠了,那么远程主机上的HCA设备会重发消息或者返回错误信息,这都不会影响本地主机的睡眠和唤醒过程。可选的,在所述HCA设备完成正在处理的工作请求后,还可以包括操作系统向与本地应用程序有连接关系的远程HCA设备上的QP序列发送挂起消息,通知远程HCA设备不要再向本地HCA设备发送消息。S20,当所述HCA设备完成正在处理的工作请求后,操作系统通知HCA设备的驱动程序,使所述驱动程序对应用程序申请的QP序列执行挂起操作、并关闭HCA设备与主机CPU 之间的联系。在操作系统确定HCA设备完成正在处理的工作请求后,会通知HCA设备的驱动程
7序执行后续操作。操作系统通知HCA设备的驱动程序,可以是操作系统直接调用一个所述驱动程序提供的进行转换状态和关闭联系的函数,也可以采用其他方式通知驱动程序执行类似动作,本发明对具体实现方式不做限定。其中,驱动程序对QP序列执行挂起操作具体可以为驱动程序将QP序列中每个QP的状态值更改为挂起。由于QP在正常工作状态下,其状态值分别为RTR(Ready to Receive,接收就绪)和RTS(Ready to Send,发送就绪)。本发明中,将QP序列中所有QP 的状态值均改为挂起suspend,相当于告诉HCA设备这些QP序列上将暂时不会有任何消息操作,这样并未释放HCA设备上的任何管理空间和固件空间,只是QP序列上服务暂停,但随时可能会恢复服务。驱动程序关闭HCA设备与主机CPU之间的联系具体可以包括如下步骤(参见图 2)S201,驱动程序关闭HCA设备的MAD (Management Datagram,管理数据)服务端口。所谓MAD服务端口是由特殊QP构成的专用于收发网络管理数据的工作队列和相应的管理代理以及服务,MAD服务端口是HCA设备物理通信端口接入IB网络的管理者。在 HCA睡眠前关闭MAD服务端口的目的有三个一是通知IB网络管理者,本地HCA设备将暂时从IB网络上剔除;二是避免HCA设备睡眠之后IB网络管理者发过来的管理包在本地产生中断;三是为下一步关闭HCA设备的物理端口做准备。关闭MAD服务端口实际上是关闭了 HCA连接IB网络的逻辑链路。若不关闭MAD服务端口,那么IB网络管理者会认为本地 HCA设备仍然在工作,所以会间隔的发送管理包到HCA设备上,这些管理包一旦被接收将会导致HCA设备中断CPU,以请求驱动程序处理这些管理包,这在CPU睡眠期间显然是不允许的。S202,解除异步中断与事件队列的映射关系。异步中断由HCA设备产生,事件队列由驱动程序申请和管理。HCA设备允许驱动程序根据需要将异步事件中断映射到驱动程序指定的事件队列上,比如常用的故障中断、 异常事件中断都会映射到一个事件队列上,而完成中断则会映射到另一个事件队列上。在 HCA设备睡眠之前,为了确保事件队列进入稳定状态,驱动程序需要解除HCA异步中断与事件队列的映射关系。S203,关闭HCA设备的端口。HCA设备的端口是物理连接到IB网络的通信端口,一块HCA卡有1到2个IB端口,可以通过驱动程序执行关闭操作。HCA设备的端口关闭之后,相当于是关闭了 HCA设备连接IB网络的物理链路。S204,关闭 MSI (Message Signaled Interrupt,消息信号中断)使能。关闭MSI使能,是为了确保在HCA设备睡眠期间CPU与HCA设备之间的中断接口处于稳定状态。S30,操作系统完成将内存内容和CPU状态保存到硬盘中,进入睡眠。在HCA设备与主机CPU之间的联系关闭后,操作系统可以继续其他睡眠前的准备工作,如将内存内容和CPU状态保存到硬盘中,之后进入睡眠。在S20中驱动程序关闭HCA设备与主机CPU之间的联系后,还可以包括驱动程序命令所述HCA设备进入睡眠状态。具体的,可以是驱动程序将Ll级模式(或更高级别的功耗管理模式)写入HCA设备的PCIE配置寄存器来实现。HCA设备睡眠后,上层应用程序和 HCA设备都处于可恢复的稳定状态,之后再执行步骤S30。本实施例的带有HCA设备的主机睡眠方法,在主机睡眠前,操作系统通过消息库缓存应用程序的新的工作请求和等待HCA设备完成正在处理的工作请求,使应用程序处于稳定的状态,通过驱动程序挂起QP序列和关闭HCA设备与主机CPU之间的联系,使HCA设备处于稳定状态,然后操作系统完成其他睡眠前准备工作;由此实现在主机睡眠前,消息库和驱动程序将应用程序和服务的状态信息记录到内存中,在主机睡眠时同CPU运行所需的信息一起保存到硬盘上。实施例二本实施例提供了一种带有HCA设备的主机的唤醒方法,如图3所示,包括如下步骤S11,当收到唤醒指令时,主机的操作系统根据硬盘中保存的内存内容和CPU状态恢复内存和CPU。在收到唤醒指令后,操作系统按照现有技术的唤醒过程根据硬盘中保存的内存内容和CPU状态恢复内存和CPU。S22,操作系统通知HCA设备的驱动程序,使所述驱动程序恢复HCA设备与主机CPU 之间的联系、并对应用程序申请的QP序列执行激活操作。在操作系统完成内存和CPU的恢复后,会通知HCA设备的驱动程序执行后续操作。 操作系统通知HCA设备的驱动程序,可以是操作系统直接调用一个所述驱动程序提供的进行恢复联系和转换状态的函数,也可以通过其他方式通知驱动程序执行类似动作,本发明对具体实现方式不做限定。驱动程序恢复HCA设备与主机CPU之间的联系具体可以包括如下步骤(参见图 4)S221,驱动程序使能MSI ;S222,打开HCA设备的端口 ;S223,恢复异步中断与事件队列的映射关系;S224,打开HCA设备的MAD服务端口。首先,使能MSI,接着打开HCA设备端口,并恢复HCA设备的异步中断与事件队列的映射关系。事件队列是驱动程序申请的,位于本地主机的内存中,若在操作系统睡眠阶段没有释放事件队列空间,则驱动程序在唤醒恢复阶段,无需重新中请事件队列空间,通知HCA 设备恢复异步中断与这些事件队列的映射关系即可。异步中断与事件队列的映射关系恢复之后,打开MAD服务端口,接收网络管理者发送过来的管理数据包。MAD服务端口会将HCA设备的端口重新连入IB网络,激活端口逻辑链路,这样HCA设备就能发送和接收数据了。对应用程序申请的QP序列执行激活操作,具体可以为驱动程序将QP序列中每个 QP的状态值对应依次更改为RTR和RTS。由于在主机睡眠前,QP的状态被改为suspend,并未释放HCA设备的任何管理空间和固件空间,因此在唤醒时将QP的状态值重新改为RTR和 RTS,恢复与远程QP的连接即可。S33,操作系统通知HCA设备的消息库,使所述消息库向HCA设备投递被缓存的应
9用程序投递的工作请求。操作系统通知HCA设备的消息库,可以是操作系统向消息库发送一个激活信号, 消息库收到所述激活信号后调用一个投递函数;由于应用程序和消息库在实体上是同一个进程,操作系统可以向所述应用程序发送激活信号,但是该激活信号对应用程序透明,应用程序对激活信号不做处理,消息库捕获到激活信号后,调用一个投递的函数。操作系统也可以采用其他方式通知消息库执行类似操作,本发明对具体实现形式不做限定。消息库投递完缓存的工作请求后,主机的唤醒过程完毕,操作系统可以将CPU调度给应用程序继续使用。在步骤S22中驱动程序恢复HCA设备与主机CPU之间的联系前,还可以包括驱动程序命令所述HCA设备进入正常工作状态。具体的,可以是驱动程序将正常工作模式写入 HCA设备的PCIE配置寄存器来实现。在步骤S33后,可选的,还包括操作系统向与本地应用程序有连接关系的远程 HCA设备上的QP序列发送恢复消息,通知远程HCA设备可以向本地HCA设备发送消息。本实施例的带有HCA设备的主机的唤醒方法,在主机唤醒时,操作系统先恢复内存内容和CPU状态,之后通过驱动程序恢复HCA设备与主机CPU之间的联系和激活QP序列,使HCA设备恢复到主机睡眠前的状态,通过消息库投递被缓存的应用程序投递的工作请求,使应用程序恢复到主机睡眠前的状态;由此实现在主机唤醒时,消息库和驱动程序将应用程序和服务的状态恢复到主机睡眠前的状态,避免HCA设备重新初始化,从而防止应用程序和服务的重启。由于唤醒方法实施例与睡眠方法实施例的相似内容较多,因此介绍的比较简略, 相关之处请相互参见。本发明的带有HCA设备的主机睡眠和唤醒方法,在主机睡眠时保留上层应用程序和服务的状态信息,并在唤醒时使用所述状态信息恢复应用程序和HCA设备,使得带有HCA 设备的主机在唤醒后能够得到和睡眠前相同的状态,实现真正意义上的睡眠和唤醒。实施例三本实施例提供了一种带有HCA设备的主机,所述主机包括操作系统,所述HCA设备的消息库和驱动程序,且所述消息库和驱动程序位于主机内存中。所述操作系统用于当收到睡眠指令时,通知所述消息库,使所述消息库将应用程序投递的新的工作请求缓存到对应的QP中、并等待HCA设备完成正在处理的工作请求;当所述HCA设备完成正在处理的工作请求后,通知HCA设备的驱动程序,使所述驱动程序对应用程序申请的QP序列执行挂起操作、并关闭HCA设备与主机CPU之间的联系;完成将内存内容和CPU状态保存到硬盘中,进入睡眠。所述驱动程序可以包括状态值修改模块,用于将QP序列中每个QP的状态值更改为挂起;关闭联系模块,用于关闭HCA设备的MAD服务端口 ;解除异步中断与事件队列的映射关系;关闭HCA设备的端口 ;关闭MSI使能。所述消息库还可以用于当所述消息库中某一 QP缓存的应用程序的工作请求达到设定的QP缓存上限时,若所述应用程序投递新的工作请求,向该应用程序返回错误报
生 I=I O
1
所述操作系统还可以用于在所述HCA设备完成正在处理的工作请求后,向与本地应用程序有连接关系的远程HCA设备上的QP序列发送挂起消息。所述驱动程序还可以用于在关闭HCA设备与主机CPU之间的联系后,命令所述 HCA设备进入睡眠状态。本实施例的带有HCA设备的主机,在主机睡眠前,操作系统通过消息库缓存应用程序的新的工作请求和等待HCA设备完成正在处理的工作请求,使应用程序处于稳定的状态,通过驱动程序挂起QP序列和关闭HCA设备与主机CPU之间的联系,使HCA设备处于稳定状态,然后操作系统完成其他睡眠前准备工作;由此实现在主机睡眠前,消息库和驱动程序将应用程序和服务的状态信息记录到内存中,在主机睡眠时同CPU运行所需的信息一起保存到硬盘上。实施例四本实施例提供了一种带有HCA设备的主机,所述主机包括操作系统,所述HCA设备的消息库和驱动程序,且所述消息库和驱动程序位于主机内存中。所述操作系统用于当收到唤醒指令时,根据硬盘中保存的内存内容和CPU状态恢复内存和CPU ;通知所述驱动程序,使所述驱动程序恢复HCA设备与主机CPU之间的联系、并对应用程序申请的队列对QP序列执行激活操作;通知HCA设备的消息库,使所述消息库向HCA设备投递被缓存的应用程序投递的工作请求。所述驱动程序可以包括状态值修改模块,用于将QP序列中每个QP的状态值对应依次更改为RTR和RTS ;开启联系模块,用于使能MSI ;打开HCA设备的端口 ;恢复异步中断与事件队列的映射关系;打开HCA设备的MAD服务端口。所述操作系统还用于在所述消息库向HCA设备投递被缓存的应用程序投递的工作请求后,向与本地应用程序有连接关系的远程HCA设备上的QP序列发送恢复消息。所述驱动程序还用于在驱动程序恢复HCA设备与主机CPU之间的联系前,命令所述HCA设备进入正常工作状态。本实施例的带有HCA设备的主机,在主机唤醒时,操作系统先恢复内存内容和CPU 状态,之后通过驱动程序恢复HCA设备与主机CPU之间的联系和激活QP序列,使HCA设备恢复到主机睡眠前的状态,通过消息库投递被缓存的应用程序投递的工作请求,使应用程序恢复到主机睡眠前的状态;由此实现在主机唤醒时,消息库和驱动程序将应用程序和服务的状态恢复到主机睡眠前的状态,避免HCA设备重新初始化,从而防止应用程序和服务的重启。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备
所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排
除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
权利要求
1.一种带有主机通道适配器设备的主机睡眠方法,其特征在于,包括当收到睡眠指令时,主机的操作系统通知主机通道适配器HCA设备的消息库,使所述消息库将应用程序投递的新的工作请求缓存到对应的队列对QP中、并等待HCA设备完成正在处理的工作请求;当所述HCA设备完成正在处理的工作请求后,操作系统通知HCA设备的驱动程序,使所述驱动程序对应用程序申请的QP序列执行挂起操作、并关闭HCA设备与主机CPU之间的联系;操作系统完成将内存内容和CPU状态保存到硬盘中,进入睡眠;所述消息库和驱动程序位于主机内存中。
2.如权利要求1所述的方法,其特征在于,所述驱动程序对QP序列执行挂起操作具体包括驱动程序将QP序列中每个QP的状态值更改为挂起。
3.如权利要求1所述的方法,其特征在于,当所述消息库中某一QP缓存的应用程序的工作请求达到设定的QP缓存上限时,若所述应用程序投递新的工作请求,则所述方法还包括消息库向该应用程序返回错误报告。
4.如权利要求1所述的方法,其特征在于,在所述HCA设备完成正在处理的工作请求后,所述方法还包括操作系统向与本地应用程序有连接关系的远程HCA设备上的QP序列发送挂起消息。
5.如权利要求1所述的方法,其特征在于,在驱动程序关闭HCA设备与主机CPU之间的联系后,所述方法还包括驱动程序命令所述HCA设备进入睡眠状态。
6.如权利要求1-5任一项所述的方法,其特征在于,所述驱动程序关闭HCA设备与主机 CPU之间的联系具体包括驱动程序关闭HCA设备的管理数据服务端口 ;解除异步中断与事件队列的映射关系;关闭HCA设备的端口 ;关闭消息信号中断使能。
7.一种带有主机通道适配器设备的主机唤醒方法,其特征在于,包括当收到唤醒指令时,主机的操作系统根据硬盘中保存的内存内容和CPU状态恢复内存禾口 CPU ;操作系统通知主机通道适配器HCA设备的驱动程序,使所述驱动程序恢复HCA设备与主机CPU之间的联系、并对应用程序申请的队列对QP序列执行激活操作;操作系统通知HCA设备的消息库,使所述消息库向HCA设备投递被缓存的应用程序投递的工作请求;所述消息库和驱动程序位于主机内存中。
8.如权利要求7所述的方法,其特征在于,所述驱动程序对QP序列执行激活操作具体包括驱动程序将QP序列中每个QP的状态值对应依次更改为接收就绪和发送就绪。
9.如权利要求7所述的方法,其特征在于,在所述消息库向HCA设备投递被缓存的应用程序投递的工作请求后,所述方法还包括操作系统向与本地应用程序有连接关系的远程 HCA设备上的QP序列发送恢复消息。
10.如权利要求7所述的方法,其特征在于,在驱动程序恢复HCA设备与主机CPU之间的联系前,所述方法还包括驱动程序命令所述HCA设备进入正常工作状态。
11.如权利要求7-10任一项所述的方法,其特征在于,所述驱动程序恢复HCA设备与主机CPU之间的联系具体包括驱动程序使能消息信号中断;打开HCA设备的端口 ;恢复异步中断与事件队列的映射关系;打开HCA设备的管理数据服务端口。
12.—种带有主机通道适配器设备的主机,其特征在于,所述主机包括操作系统,所述主机通道适配器HCA设备的消息库和驱动程序,且所述消息库和驱动程序位于主机内存中;所述操作系统用于当收到睡眠指令时,通知所述消息库,使所述消息库将应用程序投递的新的工作请求缓存到对应的队列对QP中、并等待HCA设备完成正在处理的工作请求; 当所述HCA设备完成正在处理的工作请求后,通知HCA设备的驱动程序,使所述驱动程序对应用程序申请的QP序列执行挂起操作、并关闭HCA设备与主机CPU之间的联系;完成将内存内容和CPU状态保存到硬盘中,进入睡眠。
13.一种带有主机通道适配器设备的主机,其特征在于,所述主机包括操作系统,所述主机通道适配器HCA设备的消息库和驱动程序,且所述消息库和驱动程序位于主机内存中;所述操作系统用于当收到唤醒指令时,根据硬盘中保存的内存内容和CPU状态恢复内存和CPU ;通知所述驱动程序,使所述驱动程序恢复HCA设备与主机CPU之间的联系、并对应用程序申请的队列对QP序列执行激活操作;通知HCA设备的消息库,使所述消息库向 HCA设备投递被缓存的应用程序投递的工作请求。
全文摘要
本发明公开了一种带有主机通道适配器设备的主机及其睡眠和唤醒方法,其中,所述睡眠方法包括当收到睡眠指令时,主机的操作系统通知HCA设备的消息库,使消息库将应用程序投递的新的工作请求缓存到对应的QP中、并等待HCA设备完成正在处理的工作请求;当HCA设备完成正在处理的工作请求后,操作系统通知HCA设备的驱动程序,使驱动程序对应用程序申请的QP序列执行挂起操作、并关闭HCA设备与主机CPU之间的联系;操作系统完成将内存内容和CPU状态保存到硬盘中,进入睡眠。在主机睡眠前,通过使应用程序和HCA设备处于稳定状态,记录应用程序和服务的状态信息;使得在主机唤醒时,应用程序和服务的状态能够与睡眠前一致。
文档编号G06F9/445GK102455774SQ20101051856
公开日2012年5月16日 申请日期2010年10月18日 优先权日2010年10月18日
发明者卢德平, 彭龙根, 朱建涛, 陈淑平 申请人:无锡江南计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1