一种实时内核的实现及测试方法技术

技术编号:19933747 阅读:16 留言:0更新日期:2018-12-29 04:23
本发明专利技术涉及一种实时内核的实现及测试方法,其特征在于,包括以下步骤:步骤1:在实时云数据中心引入完全抢占式内核,将内核调度策略设置为SCHED_FIFO或SCHED_RR,调度器根据用户任务的优先级高低决定任务的调度次序;步骤2:中断事件线程化的实现步骤;步骤3:优先级继承的步骤;步骤4:自旋锁元注解的步骤;步骤5:实现高分辨率定时器管理的步骤;步骤6:实现NO_HZ_FULL模式的步骤。

【技术实现步骤摘要】
一种实时内核的实现及测试方法
本专利技术属于计算机领域Linux内核开发
,具体涉及一种实时内核的实现及测试方法。
技术介绍
在宿主机pve-4.4.35内核上创建Linux实时虚拟机,并在虚拟机中运行用户应用程序时,会因QEMU层定时器事件或者IO中断事件的产生迫使虚拟机退出客户态由QEMU用户态处理中断事件,待中断事件处理完毕后,将结果返回至虚拟机并重新进入客户态运行用户应用程序。为了确保实时应用能在限定时间内进行,必须提高内核的实时性。但是,现有技术中的内核无法实现实时操作处理。此为现有技术的不足之处。因此,针对现有技术中的上述缺陷,提供设计一种实时内核的实现及测试方法;以解决现有技术中的上述缺陷,是非常有必要的。
技术实现思路
本专利技术的目的在于,针对上述现有技术存在的缺陷,提供设计一种实时内核的实现及测试方法,以解决上述技术问题。为实现上述目的,本专利技术给出以下技术方案:一种实时内核的实现方法,其特征在于,包括以下步骤:步骤1:在实时云数据中心引入完全抢占式内核,将内核调度策略设置为SCHED_FIFO或SCHED_RR,调度器根据用户任务的优先级高低决定任务的调度次序;步骤2:中断事件线程化的实现步骤;步骤3:优先级继承的步骤;步骤4:自旋锁元注解的步骤;步骤5:实现高分辨率定时器管理的步骤;步骤6:实现NO_HZ_FULL模式的步骤。作为优选,所述步骤2具体步骤如下:每当中断事件产生时,虚拟机将中断类型和中断号传至QEMU用户空间,QEMU接收到虚拟机中断信号后向KVM发送中断请求,KVM获取中断向量服务程序的地址并将中断服务程序加入虚拟机线程并降低其优先级,置于任务队列后方,待用户任务执行完毕后虚拟机开始执行中断任务。作为优选,所述步骤3具体步骤如下:优先级相对较低的任务A正在内存中执行时,优先级较高的任务B访问,任务A因为占用的共享资源如结构体、硬件资源无法及时释放而导致任务B并不能立即执行,待A处理完毕将上述资源释放后,才可进行对任务B的执行。解决了多个任务执行时CPU资源无法及时释放而出现的优先级反转问题。如此,便与实时任务按照优先级执行的理念相背,因此,当因共享资源得不到释放高优先级任务无法执行时,可将任务B的优先级赋予任务A,如此,即可避免出现优先级反转的问题。作为优选,所述步骤4具体步骤如下:自旋锁访问临界区使CPU一直处在Busy-Waiting的状态,CPU一直处在查询自旋锁是否释放而导致其它任务无法执行,而采用互斥锁代替自旋锁访问临界区时,当多个任务争抢锁时,将其加入锁等待队列列表,一旦锁释放即根据任务等待队列决定由谁先来执行。解决了多核模式下访问临界区冲突而导致的CPU利用率降低问题。作为优选,所述步骤5具体步骤如下:分辨率定时器频率为1000HZ。定时精度提高了10倍,对一些定时事件的处理误差更小;提高了内核定时的精度,作为优选,所述步骤6具体步骤如下:实时操作系统任务执行完全根据优先级高低决定,不需要像分时操作系统一样记录每个任务的执行时间。一种实时内核的测试方法,其特征在于,包括以下步骤:(1)测试工具为测试工具为cyclictest,命令解析cyclictst[选项][参数]:-t[num]:开启num个线程,若无参数,默认1个线程;-p[PRIO]:设置线程优先级p=PRIO;-i[time]:设置线程每个循环周期间隔为time时间,若无参数,默认1ms;-l[循环次数m]:设置线程的循环次数为m次;-d[time]:多线程任务下使用,每个线程的间隔时间为time,若无,默认500us;-n:使用nanoclock高精度时钟;(2)测试平台为物理机平台:CPU:i5-4590,4线程,主频3.3GHZ,缓存6144KB;内存8G;(3)测试内核:内核分为两种类型,官网4.4.35版本内核和4.4.35内核+patch-4.4.38-rt49;(4)整个测试分为单线程和多线程测试两部分进行:单线程测试命令:cyclictest-p80-i[参数]-l1000000-n。设置每个循环的周期分别为i=10us,50us,100us,200us,在实时内核和非实时内核下测试,每个参数测试10次,得到如图2测试结果;多线程测试命令:cyclictest-p80-t[参数]-l100000-n。改变线程数,在t=4、t=5和t=10的情况下在实时内核和非实时内核下测试,每个参数测试十组,得到如图3测试结果。本专利技术的有益效果在于,满足用户对虚拟机强实时应用的需求,缩短实时应用的最大中断响应时间,运行十组测试得到非实时内核运行单线程任务的最大响应时间为160us,而实时内核运行单线程任务的最大响应时间为10us,实时性能提升了16.00倍;运行十组测试非实时内核运行多线程任务的最大响应时间为497us,实时内核运行多线程任务的最大响应时间为22us,性能提升了22.59倍。此外,本专利技术设计原理可靠,结构简单,具有非常广泛的应用前景。由此可见,本专利技术与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。附图说明图1是实时云数据中心设计原理图。图2是内核实时性在物理机上测试结果对比(单线程)。图3是内核实时性在物理机上测试结果对比(多线程)。具体实施方式下面结合附图并通过具体实施例对本专利技术进行详细阐述,以下实施例是对本专利技术的解释,而本专利技术并不局限于以下实施方式。如图1所示,本专利技术提供的一种实时内核的实现方法,其特征在于,包括以下步骤:步骤1:在实时云数据中心引入完全抢占式内核,将内核调度策略设置为SCHED_FIFO或SCHED_RR,调度器根据用户任务的优先级高低决定任务的调度次序;步骤2:中断事件线程化的实现步骤;步骤3:优先级继承的步骤;步骤4:自旋锁元注解的步骤;步骤5:实现高分辨率定时器管理的步骤;步骤6:实现NO_HZ_FULL模式的步骤。作为优选,所述步骤2具体步骤如下:每当中断事件产生时,虚拟机将中断类型和中断号传至QEMU用户空间,QEMU接收到虚拟机中断信号后向KVM发送中断请求,KVM获取中断向量服务程序的地址并将中断服务程序加入虚拟机线程并降低其优先级,置于任务队列后方,待用户任务执行完毕后虚拟机开始执行中断任务。本实施例中,所述步骤3具体步骤如下:优先级相对较低的任务A正在内存中执行时,优先级较高的任务B访问,任务A因为占用的共享资源如结构体、硬件资源无法及时释放而导致任务B并不能立即执行,待A处理完毕将上述资源释放后,才可进行对任务B的执行。解决了多个任务执行时CPU资源无法及时释放而出现的优先级反转问题。如此,便与实时任务按照优先级执行的理念相背,因此,当因共享资源得不到释放高优先级任务无法执行时,可将任务B的优先级赋予任务A,如此,即可避免出现优先级反转的问题。本实施例中,所述步骤4具体步骤如下:自旋锁访问临界区使CPU一直处在Busy-Waiting的状态,CPU一直处在查询自旋锁是否释放而导致其它任务无法执行,而采用互斥锁代替自旋锁访问临界区时,当多个任务争抢锁时,将其加入锁等待队列列表,一旦锁释放即根据任务等待队列决定由谁先来执行。解决了多核模式下访问临界区冲突而导致的CPU利用率降低问题。本实施例中,本文档来自技高网...

【技术保护点】
1.一种实时内核的实现方法,其特征在于,包括以下步骤:步骤1:在实时云数据中心引入完全抢占式内核,将内核调度策略设置为SCHED_FIFO或SCHED_RR,调度器根据用户任务的优先级高低决定任务的调度次序;步骤2:中断事件线程化的实现步骤;步骤3:优先级继承的步骤;步骤4:自旋锁元注解的步骤;步骤5:实现高分辨率定时器管理的步骤;步骤6:实现NO_HZ_FULL模式的步骤。

【技术特征摘要】
2018.03.15 CN 201810215815X1.一种实时内核的实现方法,其特征在于,包括以下步骤:步骤1:在实时云数据中心引入完全抢占式内核,将内核调度策略设置为SCHED_FIFO或SCHED_RR,调度器根据用户任务的优先级高低决定任务的调度次序;步骤2:中断事件线程化的实现步骤;步骤3:优先级继承的步骤;步骤4:自旋锁元注解的步骤;步骤5:实现高分辨率定时器管理的步骤;步骤6:实现NO_HZ_FULL模式的步骤。2.根据权利要求1所述的一种实时内核的实现方法,其特征在于,所述步骤2具体步骤如下:每当中断事件产生时,虚拟机将中断类型和中断号传至QEMU用户空间,QEMU接收到虚拟机中断信号后向KVM发送中断请求,KVM获取中断向量服务程序的地址并将中断服务程序加入虚拟机线程并降低其优先级,置于任务队列后方,待用户任务执行完毕后虚拟机开始执行中断任务。3.根据权利要求1或2所述的一种实时内核的实现方法,其特征在于,所述步骤3具体步骤如下:优先级相对较低的任务A正在内存中执行时,优先级较高的任务B访问,任务A因为占用的共享资源无法及时释放而导致任务B并不能立即执行,待A处理完毕将上述资源释放后,才可进行对任务B的执行。4.根据权利要求3所述的一种实时内核的实现方法,其特征在于,所述步骤4具体步骤如下:自旋锁访问临界区使CPU一直处在Busy-Waiting的状态,CPU一直处在查询自旋锁是否释放而导致其它任务无法执行,而采用互斥锁代替自旋锁访问临界区时,当多个任务争抢锁时,将其加入锁等待队列列表,一旦锁释放即根据任务等待队列决定由谁先来执行。5....

【专利技术属性】
技术研发人员:刘方刘毅枫吕国亭马晓光
申请(专利权)人:山东超越数控电子股份有限公司
类型:发明
国别省市:山东,37

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

1