公开/公告号CN113190331A
专利类型发明专利
公开/公告日2021-07-30
原文格式PDF
申请/专利权人 飞腾信息技术有限公司;
申请/专利号CN202110740046.7
申请日2021-07-01
分类号G06F9/455(20060101);G06F13/24(20060101);G06F13/40(20060101);
代理机构43008 湖南兆弘专利事务所(普通合伙);
代理人周长清
地址 300452 天津市滨海新区海洋高新技术开发区信安创业广场5号楼
入库时间 2023-06-19 12:02:28
技术领域
本发明主要涉及到虚拟化环境或云计算环境中虚拟机中使用时统卡授时技术领域,特指一种时统卡在虚拟机上的中断延时优化方法。
背景技术
时统卡是一种授时终端,可以输出准确的UTC(Coordinated UniversalTime)时间,广泛应用于通信、金融、交通、航天、航海等多个领域中。PCI-E(PCI Express)是用来代替PCI、AGP接口规范的一种新标准,由PCI或AGP的并行数据传输变为串行数据传输,并且采用了点对点技术,允许每个设计建立自己的数据通道,这样极大的加快了相关设备之间的数据传送速度,因此时统卡一般使用PCI-E接口接入计算机,称之为PCI-E时统卡。PCI-E时统卡通过接受B码终端发来的信号,经FPGA进行解码,获得时间信息,并以1pps(Pulse PerSecond)脉冲为基准产生用户所需要的20Hz、50Hz、100Hz等中断脉冲信号,最后通过PCI-E桥接芯片与计算机进行数据交互,使得时统卡中的时间信息以及中断脉冲信息能够传到计算机终端或服务器中。
目前的技术方案中,时统卡插在宿主机上,由于该时统卡设备不支持SR-IOV,只能将时统卡直接分配给虚拟机使用,在虚拟机上使用时统卡,使用传统的中断方法处理时钟会产生较大的延时。
因此,如何解决所述延时问题成为亟需解决的问题。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种原理简单、能够提高精确度的时统卡在虚拟机上的中断延时优化方法。
为解决上述技术问题,本发明采用以下技术方案:
一种时统卡在虚拟机上的中断延时优化方法,其步骤包括:
步骤S1:将插入宿主机上的时统卡透传到虚拟机;
步骤S2:配置虚拟机系统参数;
步骤S3:时统卡根据配置文件发出不同频率中断,虚拟机应用程序对不同频率中断做相应处理。
作为本发明的进一步改进:所述步骤S1中,将PCI-E接口的时统卡插入宿主机PCI-E插槽,在宿主机上创建虚拟机,将物理时统卡直接透传到虚拟机中。
作为本发明的进一步改进:所述步骤S1中,创建虚拟机具体是指:通过qemu创建虚拟机,虚拟机分配数个vcpu,并将数个vcpu分别绑定到数个物理cpu上。
作为本发明的进一步改进:所述步骤S1中,通过qemu命令将物理时统卡直接透传到虚拟机。
作为本发明的进一步改进:所述步骤S2中包括:时统卡驱动将时统卡设备的bar空间映射到用户空间。
作为本发明的进一步改进:通过所述虚拟机中时统卡驱动实现mmap接口,将时统卡设备的bar空间映射到用户空间。
作为本发明的进一步改进:所述步骤S3中,时统卡根据配置文件发出不同频率中断,应用程序通过mmap系统调用将物理时统卡的bar空间映射到虚拟地址空间,主线程轮询bar空间中断寄存器的状态,依次完成对各中断频率线程的唤醒。
作为本发明的进一步改进:所述步骤S2中,分别添加虚拟机启动参数nohlt、nosoftlockup=0、rcunocbs=0-7、rcu_nocb_poll,用以减少操作系统对所述时统卡中断的影响。
作为本发明的进一步改进:上述步骤S3中,时统卡配置文件可配置1Hz、2Hz、10Hz、20Hz、40Hz、50Hz中任意一种频率输出,时统卡驱动根据配置文件发出相应频率的中断。
作为本发明的进一步改进:所述步骤S3中,虚拟机中的应用程序主线程读取不同频率中断状态,并唤醒子线程;子线程处理时统卡不同频率的数据;在主线程中轮询所述时统卡设备bar空间中断寄存器的状态,判断是否有中断产生,若有则判断是何种频率的中断,并唤醒对应频率的处理线程,若无则继续轮询。
作为本发明的进一步改进:所述在虚拟机应用程序主线程中,当读取时统卡配置文件时,创建多个子线程;所述主线程通过mmap系统调用函数将PCI-E时统卡的bar空间映射到用户虚拟地址空间,然后主线程轮询中断寄存器的状态,根据读到的中断寄存器的状态判断是某种频率的中断,并将中断信号分发给各个子线程,唤醒子线程去做相关处理。
作为本发明的进一步改进:所述子线程完成对中断数据的处理;具体包括:设置线程属性;判断中断是否丢失;判断中断延时;所述设置线程属性包括:设置cpu亲和性;设置线程调度策略为FIFO;设置线程优先级。
作为本发明的进一步改进:所述子线程等待它所处理的频率的中断,如果有中断产生,则读取时统卡数据寄存器的时间信息,并根据对应的频率值对读到的数据做取余运算;依据取余运算判定是否有中断。
作为本发明的进一步改进:所述如果取余后的值大于1ms,则认为延迟超过延时时间预设值;如果取余后的值大于对应频率值的1.5倍,则认为中断有丢失;如果没有中断产生,则继续等待中断的到来。
与现有技术相比,本发明的优点在于:
本发明的时统卡在虚拟机上的中断延时优化方法,原理简单、能够提高精确度,通过时统卡在虚拟机上的中断延时优化方法和设置虚拟机系统参数,将时统卡在虚拟机上的中断延时精确到1ms以内。
附图说明
图1是本发明实施例方法的基本流程示意图。
图2是本发明实施例的主线程流程示意图。
图3是本发明实施例方法的子线程流程示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1所示,本发明的一种时统卡在虚拟机上的中断延时优化方法,其步骤包括:
步骤S1:将插入宿主机上的时统卡透传到虚拟机;
步骤S2:配置虚拟机系统参数;
步骤S3:时统卡根据配置文件发出不同频率中断,虚拟机应用程序对不同频率中断做相应处理。在主线程中轮询所述时统卡设备bar空间中断寄存器的状态,判断是否有中断产生,若有则判断是何种频率的中断,并唤醒对应频率的处理线程,若无则继续轮询。
在具体应用实例中,本发明的上述步骤S1中,将PCI-E接口的时统卡插入宿主机PCI-E插槽,在宿主机上创建虚拟机,将物理时统卡直接透传到虚拟机中。插入宿主机的时统卡直接透传到虚拟机,那么虚拟机上看到的是实际的物理时统卡。这是由于所述时统卡不支持SR-IOV,在固件中使能SMMU,因此本发明将所述时统卡直接分配给虚拟机。
在具体应用实例中,本发明的上述步骤S1中,创建虚拟机具体是指:通过qemu创建虚拟机,虚拟机分配8个vcpu,并将8个vcpu分别绑定到8个物理cpu上。
在具体应用实例中,本发明的上述步骤S1中,进一步通过qemu命令将物理时统卡直接透传到虚拟机。
在具体应用实例中,本发明的上述步骤S2中包括:时统卡驱动将时统卡设备的bar空间映射到用户空间。具体实现时,可以根据实际需要选择通过所述虚拟机中时统卡驱动实现mmap接口,将时统卡设备的bar空间映射到用户空间。
在具体应用实例中,本发明的上述步骤S2中,分别添加虚拟机启动参数nohlt、nosoftlockup=0、rcunocbs=0-7、rcu_nocb_poll,从而可优化系统性能,减少操作系统对所述时统卡中断的影响。
在具体应用实例中,步骤S3中,时统卡根据配置文件发出不同频率中断,应用程序通过mmap系统调用将物理时统卡的bar空间映射到虚拟地址空间,主线程轮询bar空间中断寄存器的状态,依次完成对各中断频率线程的唤醒。
在具体应用实例中,本发明的上述步骤S3中,时统卡配置文件可配置1Hz、2Hz、10Hz、20Hz、40Hz、50Hz等不同频率输出,时统卡驱动根据配置文件可发出相应频率的中断。主线程通过mmap系统调用访问设备的bar空间。
在具体应用实例中,本发明的上述步骤S3中,虚拟机中的应用程序主线程读取不同频率中断状态,并唤醒子线程;子线程处理时统卡不同频率的数据。
如图2所示,在虚拟机应用程序主线程中,当读取时统卡配置文件时,创建多个子线程;所述子线程用于处理不同频率的数据;主线程则通过mmap系统调用函数将PCI-E时统卡的bar空间映射到用户虚拟地址空间,然后主线程轮询中断寄存器的状态,根据读到的中断寄存器的状态判断是某种频率的中断,并将中断信号分发给各个子线程,唤醒子线程去做相关处理。
子线程完成对中断数据的处理;具体包括:设置线程属性;判断中断是否丢失;判断中断延时。其中,所述设置线程属性包括:设置cpu亲和性;设置线程调度策略为FIFO;设置线程优先级。
如图3所示,进一步,子线程等待它所处理的频率的中断,如果有中断产生,则读取时统卡数据寄存器的时间信息,并根据对应的频率值对读到的数据做取余运算;如果取余后的值大于1ms,则认为延迟超过延时时间预设值;如果取余后的值大于对应频率值的1.5倍,则认为中断有丢失;如果没有中断产生,则继续等待中断的到来。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
机译: 用于控制推力子空间运动的系统。一种方法是在电源瞬时中断时维持一排或多排电源中的电能。一种方法是在系统瞬时中断时维持电的方法。空间推力的性能
机译: 飞机上至少一次燃油传输时在飞机上传输大量燃油的优化方法和装置
机译: 飞机上至少一次燃油传输时在飞机上传输大量燃油的优化方法和装置