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

技术编号:7346624 阅读:322 留言:0更新日期:2012-05-18 04:11
本发明专利技术公开了一种带有主机通道适配器设备的主机及其睡眠和唤醒方法,其中,所述睡眠方法包括:当收到睡眠指令时,主机的操作系统通知HCA设备的消息库,使消息库将应用程序投递的新的工作请求缓存到对应的QP中、并等待HCA设备完成正在处理的工作请求;当HCA设备完成正在处理的工作请求后,操作系统通知HCA设备的驱动程序,使驱动程序对应用程序申请的QP序列执行挂起操作、并关闭HCA设备与主机CPU之间的联系;操作系统完成将内存内容和CPU状态保存到硬盘中,进入睡眠。在主机睡眠前,通过使应用程序和HCA设备处于稳定状态,记录应用程序和服务的状态信息;使得在主机唤醒时,应用程序和服务的状态能够与睡眠前一致。

【技术实现步骤摘要】

本专利技术涉及通信
,特别是涉及。
技术介绍
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设本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:彭龙根朱建涛卢德平陈淑平
申请(专利权)人:无锡江南计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术