CN113867815B - 服务器挂起监测和自动重启方法以及应用其的服务器 - Google Patents

服务器挂起监测和自动重启方法以及应用其的服务器 Download PDF

Info

Publication number
CN113867815B
CN113867815B CN202111091666.9A CN202111091666A CN113867815B CN 113867815 B CN113867815 B CN 113867815B CN 202111091666 A CN202111091666 A CN 202111091666A CN 113867815 B CN113867815 B CN 113867815B
Authority
CN
China
Prior art keywords
server
file
heartbeat packet
monitoring
state variable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111091666.9A
Other languages
English (en)
Other versions
CN113867815A (zh
Inventor
孙伟涛
石小明
张贝利
吴奕刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Arcvideo Technology Co ltd
Original Assignee
Hangzhou Arcvideo Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Arcvideo Technology Co ltd filed Critical Hangzhou Arcvideo Technology Co ltd
Priority to CN202111091666.9A priority Critical patent/CN113867815B/zh
Publication of CN113867815A publication Critical patent/CN113867815A/zh
Application granted granted Critical
Publication of CN113867815B publication Critical patent/CN113867815B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]

Abstract

本发明公开了一种服务器挂起监测和自动重启方法以及应用其的服务器,其中方法包括以下步骤:服务器启动后开启失联监测线程检测系统是否挂起,按顺序进行打开文件、关闭文件、更新全局状态变量为当前时间、休眠第一时间的循环操作;设置心跳包发送线程,心跳包在发送间隔监测全局状态变量,查看全局状态变量和当前系统时间是否偏差超过给定的阈值;如果没有超过,则向集群管理器发送正常心跳包;如果超过,则在心跳包内附加系统挂起信息,同时通过智能平台管理接口重启服务器。本发明可自动检测到服务器内核挂起的情况并自动重启服务器。

Description

服务器挂起监测和自动重启方法以及应用其的服务器
技术领域
本发明属于服务器管理技术领域,具体涉及一种服务器挂起监测和自动重启方法以及应用其的服务器。
背景技术
在可用性要求较高的广电行业,服务器一般采用主备方式,组成服务器集群,由集群管理服务器控制。当一台主服务器宕机时,集群管理服务器监测到后自动切换到备服务器。服务器操作系统内核偶尔会挂起,内核全部或部分失效。挂起现象可表现为无法远程登录;接入显示器和键盘后系统无响应;已有的网络连接可能仍在工作,能或不能ping通。此时只能人工强制断电重启,且重启后无任何日志。根据经验,挂起一般是固态硬盘(SolidState Disk,SSD)故障造成的。SSD会影响操作系统的文件系统,造成无法产生新的文件句柄,从而一切新的系统资源的申请完全失败,造成功能失效,而已申请的系统资源仍可以工作。
集群管理服务器一般有心跳监测机制,服务器故障造成心跳超时的时候会把任务迁移到集群中的备用服务器上继续运行,保证业务正常。而服务器挂起故障发生时,由于在服务器之间的心跳连接已经建立,所以心跳机制仍可能在正常工作。这样服务器挂起时无法自动切换到备用服务器,造成重大事故。
另外系统无法自动重启,必需要人工到机房进行强制断电重启,给运维人员造成不便,如果值班室和机房相距较远,甚至无法到现场,从而无法及时处理,造成长时间业务中断重大事故。现有一般使用系统监控软件,监控服务器的运行状况,比如系统负载,内存使用率等,及时发现服务器故障后人工重启。
但是现有技术仍存在以下不足之处:(1)服务器内核挂起没有可靠的监控项来判断。(2)监控多项指标增加系统负载。(3)故障发生后需要人工参与。
发明内容
本发明要解决的技术问题是提供一种服务器挂起监测和自动重启方法以及应用其的服务器,可自动检测到服务器内核挂起的情况并自动重启服务器。
为解决上述技术问题,本发明采用如下的技术方案:
本发明实施例一方面提供一种服务器挂起监测和自动重启方法,包括以下步骤:
服务器启动后开启失联监测线程检测系统是否挂起,按顺序进行打开文件、关闭文件、更新全局状态变量为当前时间、休眠第一时间的循环操作;
设置心跳包发送线程,心跳包在发送间隔监测全局状态变量,查看全局状态变量和当前系统时间是否偏差超过给定的阈值;如果没有超过,则向集群管理器发送正常心跳包;如果超过,则在心跳包内附加系统挂起信息,同时通过智能平台管理接口重启服务器。
优选地,集群控制器在收到心跳包后解析失联监测结果,如果确定系统已经挂起,则记录到系统日志中。
优选地,通过智能平台管理接口重启服务器进一步包括:服务器具有基板管理控制器BMC和linux操作系统,linux操作系统载驱动,生成一个/dev/ipmi0的服务器文件,使用该服务器文件和BMC通讯,通讯协议为IPMI相关协议。
优选地,服务器启动时先打开/dev/ipmi0的服务器文件。
本发明实施例的有一方面提供一种服务器,包括:
失联监测线程单元,用于在服务器启动后开启,检测系统是否挂起,按顺序进行打开文件、关闭文件、更新全局状态变量为当前时间、休眠第一时间的循环操作;
心跳包发送线程单元,用于向集群管理器发送心跳包,心跳包在发送间隔监测全局状态变量,查看全局状态变量和当前系统时间是否偏差超过给定的阈值;如果没有超过,则向集群管理器发送正常心跳包;如果超过,则在心跳包内附加系统挂起信息;
重启单元,用于在检测到服务器挂起后通过智能平台管理接口重启服务器。
优选地,集群控制器在收到心跳包后解析失联监测结果,如果确定系统已经挂起,则记录到系统日志中。
优选地,通过智能平台管理接口重启服务器进一步包括:服务器具有基板管理控制器BMC和linux操作系统,linux操作系统载驱动,生成一个/dev/ipmi0的服务器文件,使用该服务器文件和BMC通讯,通讯协议为IPMI相关协议。
优选地,服务器启动时先打开/dev/ipmi0的服务器文件。
采用本发明具有如下的有益效果:
(1)在服务器本机通过检测文件系统来检测系统故障,然后利用服务器的BMC系统实现自动重启,避免人工参与,快速自动恢复。
(2)利用心跳报文机制对服务器是否挂起进行监测,提高了系统挂起的监测效率。
附图说明
图1为本发明实施例的服务器挂起监测和自动重启方法的步骤流程图;
图2为本发明实施例的服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
方法实施例1
参照图1,所示为本发明实施例的服务器挂起监测和自动重启方法的步骤流程图,包括以下步骤:
S10,服务器启动后开启失联监测线程检测系统是否挂起,按顺序进行打开文件、关闭文件、更新全局状态变量为当前时间、休眠第一时间(5秒)的循环操作。由于SSD硬盘造成系统挂起时无法创建新的文件描述符,而打开文件操作可以产生新的文件描述符,所以通过打开文件来判断系统是否正常。但是如果打开文件失败,失联监测线程会被挂起,没有机会通知系统异常,所以使用一个全局的状态变量来通知心跳包发送线程进行系统是否挂起的监测。
具体应用实例中,休眠第一时间可以是5-30秒,较佳的设置为5秒。
S20,设置心跳包发送线程,心跳包在发送间隔监测全局状态变量,查看全局状态变量和当前系统时间是否偏差超过给定的阈值;如果没有超过,则向集群管理器发送正常心跳包;如果超过,则在心跳包内附加系统挂起信息,同时通过智能平台管理接口重启服务器。服务器的机群设备一般通过心跳机制来判断是否仍在正常工作,也就是说集群设备通过定期发送心跳包(几毫秒或几秒发送一个)来告知集群控制器服务器仍在正常工作。心跳包的内容除了包含服务器ID等必要信息外尽量小,避免过多消耗系统性能。本发明实施例利用心跳包发送线程来配合监测线程完成系统挂起后的处理。
方法实施例2
在方法实施例1的基础上,本发明实施例的服务器挂起监测和自动重启方法进一步包括,集群控制器在收到心跳包后解析失联监测结果,如果确定系统已经挂起,则记录到系统日志中。如果服务器只有一块SSD,而SSD故障时,则服务器本机无法记录任何日志信息。故通过集群控制器来记录日志信息,便于后续查看故障原因。
方法实施例3
在方法实施例1的基础上,本发明实施例的服务器挂起监测和自动重启方法,通过智能平台管理接口重启服务器进一步包括:服务器具有基板管理控制器(BaseboardManagement Controller,BMC)和linux操作系统,linux操作系统载驱动,生成一个/dev/ipmi0的服务器文件,使用该服务器文件和BMC通讯,通讯协议为IPMI相关协议。BCM并不依赖于服务器的处理器、BIOS或操作系统来工作,非常地独立,是一个单独在系统内运行的无代理管理子系统,只要有BMC与IPMI固件其便可开始工作,而BMC通常是一个安装在服务器主板上的独立的板卡,而有的服务器主板提供对IPMI支持。IPMI良好的自治特性便克服了以往基于操作系统的管理方式所受的限制,例如操作系统不响应或未加载的情况下其仍然可以进行开关机、信息提取等操作。IPMI又称智能平台管理接口(Intelligent PlatformManagement Interface),原本是一种Intel架构的企业系统的周边设备所采用的一种工业标准,现在已经成为一个开放的免费标准。
具体应用实例中,服务器启动时先打开/dev/ipmi0的服务器文件。因为本发明实施例的方法采用直接使用/dev/ipmi0设备文件和BMC系统通讯,在系统挂起的情况下无法产生新的文件句柄,所以在系统启动时先打开/dev/ipmi0,避免在需要时无法打开。如果检测到系统挂起,直接向/dev/ipmi0发送Hard Reset命令。
本发明方法实施例对应的,本发明提供了应用以上方法的服务器,以下通过具体实施例进行详细描述。
装置实施例1
本发明实施例提供的一种服务器10,包括:失联监测线程单元101,用于在服务器启动后开启,检测系统是否挂起,按顺序进行打开文件、关闭文件、更新全局状态变量为当前时间、休眠第一时间的循环操作;心跳包发送线程单元102,用于向集群管理器20发送心跳包,心跳包在发送间隔监测全局状态变量,查看全局状态变量和当前系统时间是否偏差超过给定的阈值;如果没有超过,则向集群管理器发送正常心跳包;如果超过,则在心跳包内附加系统挂起信息;重启单元103,用于在检测到服务器挂起后通过智能平台管理接口重启服务器。
具体应用实例中,休眠第一时间可以是5-30秒,较佳的设置为5秒。
在失联监测线程单元10中,由于SSD硬盘造成系统挂起时无法创建新的文件描述符,而打开文件操作可以产生新的文件描述符,所以通过打开文件来判断系统是否正常。但是如果打开文件失败,失联监测线程会被挂起,没有机会通知系统异常,所以使用一个全局的状态变量来通知心跳包发送线程进行系统是否挂起的监测。
在心跳包发送线程单元102中,服务器的集群设备一般通过心跳机制来判断是否仍在正常工作,也就是说集群设备通过定期发送心跳包(几毫秒或几秒发送一个)来告知集群控制器服务器仍在正常工作。心跳包的内容除了包含服务器ID等必要信息外尽量小,避免过多消耗系统性能。本发明实施例中利用心跳包发送线程来配合监测线程完成系统挂起后的处理。
装置实施例2
在装置实施例1的基础上,本发明实施例的服务器10进一步包括,集群控制器20在收到心跳包后解析失联监测结果,如果确定系统已经挂起,则记录到系统日志中。如果服务器只有一块SSD,而SSD故障时,则服务器本机无法记录任何日志信息。故通过集群控制器来记录日志信息,便于后续查看故障原因。
装置实施例3
在装置实施例1的基础上,本发明实施例的服务器10中通过智能平台管理接口重启服务器进一步包括:服务器具有基板管理控制器(Baseboard Management Controller,BMC)和linux操作系统,linux操作系统载驱动,生成一个/dev/ipmi0的服务器文件,使用该服务器文件和BMC通讯,通讯协议为IPMI相关协议。BCM并不依赖于服务器的处理器、BIOS或操作系统来工作,非常地独立,是一个单独在系统内运行的无代理管理子系统,只要有BMC与IPMI固件其便可开始工作,而BMC通常是一个安装在服务器主板上的独立的板卡,而有的服务器主板提供对IPMI支持。IPMI良好的自治特性便克服了以往基于操作系统的管理方式所受的限制,例如操作系统不响应或未加载的情况下其仍然可以进行开关机、信息提取等操作。IPMI又称智能平台管理接口(Intelligent Platform Management Interface),原本是一种Intel架构的企业系统的周边设备所采用的一种工业标准,现在已经成为一个开放的免费标准。
具体应用实例中,服务器启动时先打开/dev/ipmi0的服务器文件。因为本发明实施例的方法采用直接使用/dev/ipmi0设备文件和BMC系统通讯,在系统挂起的情况下无法产生新的文件句柄,所以在系统启动时先打开/dev/ipmi0,避免在需要时无法打开。如果检测到系统挂起,直接向/dev/ipmi0发送Hard Reset命令。
应当理解,本文所述的示例性实施例是说明性的而非限制性的。尽管结合附图描述了本发明的一个或多个实施例,本领域普通技术人员应当理解,在不脱离通过所附权利要求所限定的本发明的精神和范围的情况下,可以做出各种形式和细节的改变。

Claims (4)

1.一种服务器挂起监测和自动重启方法,其特征在于,包括以下步骤:
服务器启动后开启失联监测线程检测系统是否挂起,按顺序进行打开文件、关闭文件、更新全局状态变量为当前时间、休眠第一时间的循环操作;
设置心跳包发送线程,心跳包在发送间隔监测全局状态变量,查看全局状态变量和当前系统时间是否偏差超过给定的阈值;如果没有超过,则向集群管理器发送正常心跳包;如果超过,则在心跳包内附加系统挂起信息,同时通过智能平台管理接口重启服务器;
通过智能平台管理接口重启服务器进一步包括:服务器具有基板管理控制器BMC和linux操作系统,linux操作系统载驱动,生成一个/dev/ipmi0的服务器文件,使用该服务器文件和BMC通讯,通讯协议为IPMI相关协议;服务器启动时先打开/dev/ipmi0的服务器文件。
2.如权利要求1所述的服务器挂起监测和自动重启方法,其特征在于,集群控制器在收到心跳包后解析失联监测结果,如果确定系统已经挂起,则记录到系统日志中。
3.一种服务器,其特征在于,包括:
失联监测线程单元,用于在服务器启动后开启,检测系统是否挂起,按顺序进行打开文件、关闭文件、更新全局状态变量为当前时间、休眠第一时间的循环操作;
心跳包发送线程单元,用于向集群管理器发送心跳包,心跳包在发送间隔监测全局状态变量,查看全局状态变量和当前系统时间是否偏差超过给定的阈值;如果没有超过,则向集群管理器发送正常心跳包;如果超过,则在心跳包内附加系统挂起信息;
重启单元,用于在检测到服务器挂起后通过智能平台管理接口重启服务器;
通过智能平台管理接口重启服务器进一步包括:服务器具有基板管理控制器BMC和linux操作系统,linux操作系统载驱动,生成一个/dev/ipmi0的服务器文件,使用该服务器文件和BMC通讯,通讯协议为IPMI相关协议;服务器启动时先打开/dev/ipmi0的服务器文件。
4.如权利要求3所述的服务器,其特征在于,集群控制器在收到心跳包后解析失联监测结果,如果确定系统已经挂起,则记录到系统日志中。
CN202111091666.9A 2021-09-17 2021-09-17 服务器挂起监测和自动重启方法以及应用其的服务器 Active CN113867815B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111091666.9A CN113867815B (zh) 2021-09-17 2021-09-17 服务器挂起监测和自动重启方法以及应用其的服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111091666.9A CN113867815B (zh) 2021-09-17 2021-09-17 服务器挂起监测和自动重启方法以及应用其的服务器

Publications (2)

Publication Number Publication Date
CN113867815A CN113867815A (zh) 2021-12-31
CN113867815B true CN113867815B (zh) 2023-08-11

Family

ID=78996356

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111091666.9A Active CN113867815B (zh) 2021-09-17 2021-09-17 服务器挂起监测和自动重启方法以及应用其的服务器

Country Status (1)

Country Link
CN (1) CN113867815B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114443439B (zh) * 2022-01-29 2023-06-30 北京百度网讯科技有限公司 基于arm服务器的控制方法、装置、设备以及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102394791A (zh) * 2011-10-26 2012-03-28 浪潮(北京)电子信息产业有限公司 宕机恢复方法和系统
CN102404386A (zh) * 2012-01-09 2012-04-04 无锡城市云计算中心有限公司 一种保证分布式文件系统元数据服务器组的服务高可靠的方法
CN104199694A (zh) * 2014-08-27 2014-12-10 山东超越数控电子有限公司 一种基于pxe的操作系统自动安装与恢复方法
CN104598241A (zh) * 2015-01-27 2015-05-06 中国石油集团东方地球物理勘探有限责任公司 一种窗口监控方法及系统
CN105677505A (zh) * 2016-02-15 2016-06-15 南京贝伦思网络科技股份有限公司 一种基于串口管理ipmi的方法
CN107590045A (zh) * 2017-08-24 2018-01-16 郑州云海信息技术有限公司 一种在Linux系统下对EIO板卡进行热插拔测试的方法
WO2019216210A1 (ja) * 2018-05-09 2019-11-14 日本電信電話株式会社 サービス継続システムおよびサービス継続方法
CN111694710A (zh) * 2020-06-10 2020-09-22 浪潮商用机器有限公司 基板管理控制器故障监控方法、装置、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7685281B1 (en) * 2004-02-13 2010-03-23 Habanero Holdings, Inc. Programmatic instantiation, provisioning and management of fabric-backplane enterprise servers
US9021472B2 (en) * 2010-12-10 2015-04-28 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Virtualizing baseboard management controller operation
US10846160B2 (en) * 2018-01-12 2020-11-24 Quanta Computer Inc. System and method for remote system recovery

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102394791A (zh) * 2011-10-26 2012-03-28 浪潮(北京)电子信息产业有限公司 宕机恢复方法和系统
CN102404386A (zh) * 2012-01-09 2012-04-04 无锡城市云计算中心有限公司 一种保证分布式文件系统元数据服务器组的服务高可靠的方法
CN104199694A (zh) * 2014-08-27 2014-12-10 山东超越数控电子有限公司 一种基于pxe的操作系统自动安装与恢复方法
CN104598241A (zh) * 2015-01-27 2015-05-06 中国石油集团东方地球物理勘探有限责任公司 一种窗口监控方法及系统
CN105677505A (zh) * 2016-02-15 2016-06-15 南京贝伦思网络科技股份有限公司 一种基于串口管理ipmi的方法
CN107590045A (zh) * 2017-08-24 2018-01-16 郑州云海信息技术有限公司 一种在Linux系统下对EIO板卡进行热插拔测试的方法
WO2019216210A1 (ja) * 2018-05-09 2019-11-14 日本電信電話株式会社 サービス継続システムおよびサービス継続方法
CN111694710A (zh) * 2020-06-10 2020-09-22 浪潮商用机器有限公司 基板管理控制器故障监控方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王朋."超级基站监测系统的设计与实现".《中国优秀硕士学位论文全文数据库 信息科技辑》.2020,I136-754. *

Also Published As

Publication number Publication date
CN113867815A (zh) 2021-12-31

Similar Documents

Publication Publication Date Title
US8566825B2 (en) Dynamic migration of virtual machine computer programs upon satisfaction of conditions
US5781770A (en) Method and controller for controlling shutdown of a processing unit
US9189349B2 (en) Distributed blade server system, management server and switching method
JP2001101033A (ja) オペレーティングシステム及びアプリケーションプログラムの障害監視方法
US20140245296A1 (en) System and method for virtualization aware server maintenance mode
US20110314470A1 (en) Virtual Machine Infrastructure Capable Of Automatically Resuming Paused Virtual Machines
WO2015169199A1 (zh) 分布式环境下虚拟机异常恢复方法
US5594893A (en) System for monitoring and controlling operation of multiple processing units
US20160036654A1 (en) Cluster system
CN114090184B (zh) 一种虚拟化集群高可用性的实现方法和设备
CN113867815B (zh) 服务器挂起监测和自动重启方法以及应用其的服务器
CN109976886B (zh) 内核远程切换方法及装置
CN107528705B (zh) 故障处理方法及装置
CN106411643B (zh) Bmc检测方法以及装置
CN105068763A (zh) 一种针对存储故障的虚拟机容错系统和方法
CN107896176B (zh) 一种计算节点的处理方法、智能终端及存储介质
CN110740066A (zh) 一种席位不变的跨机故障迁移方法和系统
CN115407861A (zh) 目标设备供电方法、系统、装置及计算机可读存储介质
RU2710288C1 (ru) Способ удаленного сброса ненормального состояния стоек, применяемых в дата-центре
JP2001229032A (ja) アプリケーション自動復旧システム、アプリケーション自動復旧方法及びその記録媒体
CN111414274A (zh) 运用于数据中心的机柜异常状态的远端排除方法
CN111414267A (zh) 运用于数据中心的机柜异常状态的远端排除方法
CN103684829B (zh) 网络服务系统及其管理方法
Kitamura Configuration of a Power-saving High-availability Server System Incorporating a Hybrid Operation Method
CN117215859B (zh) 主备bios自动切换方法、自动切换装置和计算机

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant