一种中断跟踪方法、系统、装置及可读存储介质制造方法及图纸

技术编号:35101714 阅读:20 留言:0更新日期:2022-10-01 17:09
本发明专利技术提出的一种中断跟踪方法、系统、装置及可读存储介质,所述方法包括:通过设置系统内核配置选项,进行中断时间统计;定义结构体并通过结构体记录中断跟踪信息;声明定义结构体类型的CPU中断跟踪变量,并将其导出为符号;定义钩子函数指针变量,并定义用于注册钩子函数的注册函数;将中断处理耗时和中断类型记录保存到CPU中断跟踪变量;实现用于中断处理耗时和中断类型跟踪的钩子函数,并使用注册函数将钩子函数注册到系统内核中。本发明专利技术能够跟踪中断处理过程中更关键的中断处理耗时,并可以对硬件中断耗时和软中断耗时区分跟踪,可以在更细粒度分析中断耗时,提高中断处理和调度问题的解决的效率。度问题的解决的效率。度问题的解决的效率。

【技术实现步骤摘要】
一种中断跟踪方法、系统、装置及可读存储介质


[0001]本专利技术涉及计算机
,更具体的说是涉及一种中断跟踪方法、系统、装置及可读存储介质。

技术介绍

[0002]中断是指计算机处理器检测到某些事件,暂停正在执行的程序,转而去执行处理该事件的程序,当这段程序执行完毕后再继续执行之前的程序。整个过程称为中断处理,简称中断,而引起这一过程的事件称为中断事件。中断是计算机实现并发执行的关键,也是操作系统工作的根本。
[0003]在响应一个特定中断的时候,内核会执行一个函数,该函数叫中断处理程序(interrupt handler)。产生中断的每个设备都有一个相应的中断处理程序。由于中断可能随时发生,因此中断处理程序也可能随时执行,同时由于处理中断时处理器需要屏蔽外部中断,因此中断处理程序必须快速的执行,否则就可能会出现超时执行,影响到系统后续的调度执行。
[0004]现有技术中,通常采样通过复杂的处理流程获取来中断时长,也就是从外部设备发出中断请求到操作系统中断处理程序执行第一条指令经过的时间,而对于中断处理中关键的中断处理程序整个执行耗时没有提供计算方法。而且,由于在实现过程中涉及大量的底层汇编和C代码适配代码修改,破坏了原有底层代码的处理逻辑,实现复杂度高,很可能给系统的稳定性带来影响。由于不同的处理器平台汇编实现的底层逻辑有差异,需要区别对待不同的处理器平台来有针对性的进行适配修改,工作量大,通用性差。另外,现有技术针对中断统计的是从外部设备发出中断请求到操作系统中断处理程序执行第一条指令经过的时间,并不是实际处理中断耗时的时间,无法对硬中断和软中断进行区分记录。

技术实现思路

[0005]针对以上问题,本专利技术的目的在于提供一种中断跟踪方法、系统、装置及可读存储介质,能够跟踪获取每一次中断处理的所消耗的时间,并根据中断类型将硬件中断和软中断进行区分,提高了中断处理和调度问题的解决效率。
[0006]本专利技术为实现上述目的,通过以下技术方案实现:一种中断跟踪方法,包括:
[0007]通过设置系统内核配置选项,进行中断时间统计;
[0008]定义结构体并通过结构体记录中断跟踪信息;
[0009]声明定义结构体类型的CPU中断跟踪变量,并将其导出为符号;
[0010]定义钩子函数指针变量,并定义用于注册钩子函数的注册函数;
[0011]将中断处理耗时和中断类型记录保存到CPU中断跟踪变量;
[0012]实现用于中断处理耗时和中断类型跟踪的钩子函数,并使用注册函数将钩子函数注册到系统内核中。
[0013]进一步,所述通过设置系统内核配置选项,进行中断时间统计包括:
[0014]通过配置CONFIG_IRQ_TIME_ACCOUNTING使中断时间统计变量cpu_irqtime计数。
[0015]进一步,所述定义结构体并通过结构体记录中断跟踪信息,包括:
[0016]定义结构体per_cpu_irq_trace用于记录中断跟踪信息,其中irq_delta域用于记录中断处理耗时,irqstat_idx域用于标识中断类型。
[0017]进一步,所述声明定义结构体类型的CPU中断跟踪变量,并将其导出为符号,包括:
[0018]在sched模块中定义声明per_cpu_irq_trace类型的per_cpu的变量cpu_irq_trace,同时将cpu_irq_trace变量导出为符号。
[0019]进一步,所述定义钩子函数指针变量,并定义用于注册钩子函数的注册函数,具体包括:
[0020]定义钩子函数指针变量,所述钩子函数指针变量用于获取钩子函数;所述钩子函数原型形参包括指向当前任务的task_struct类型的指针和标识当前正在执行中断的处理器ID;
[0021]定义用于注册钩子函数的注册函数,所述注册函数的函数原型形参包括函数指针变量,函数指针变量形参的函数原型与所述钩子函数的定义一致;在注册函数中将所述钩子函数指针变量赋值为传入注册函数的函数指针变量形参。
[0022]进一步,所述将中断处理耗时和中断类型记录保存到CPU中断跟踪变量,具体包括:
[0023]在sched模块irqtime_account_delta函数中将中断处理耗时和中断类型记录保存到cpu_irq_trace,首先通过smp_processor_id获取当前处理器的ID,然后使用per_cpu的操作this_cpu_ptr获取当前处理器的cpu_irq_trace变量指针,最后将delta赋值给cpu_irq_trace的irq_delta,idx赋值给cpu_irq_trace变量的irqstat_idx。
[0024]进一步,所述实现用于中断处理耗时和中断类型跟踪的钩子函数,并使用注册函数将钩子函数注册到系统内核中,具体为:
[0025]在跟踪模块中实现用于中断处理耗时和中断类型跟踪的钩子函数,并使用注册函数将钩子函数注册到内核中;
[0026]其中,钩子函数的具体实现流程包括:
[0027]首先调用per_cpu函数获取当前处理器的cpu_irq_trace变量,并通过cpu_irq_trace的irq_delta_time和irq_type来输出中断处理耗时和中断类型;若irq_type值为CPUTIME_IRQ为HARDIRQ,irq_type的值为CPUTIME_SOFTIRQ则为SOFTIRQ。
[0028]相应的,本专利技术还公开了一种中断跟踪系统,包括:
[0029]中断统计单元,用于通过设置系统内核配置选项,进行中断时间统计;
[0030]记录单元,用于定义结构体并通过结构体记录中断跟踪信息;
[0031]变量导出单元,用于声明定义结构体类型的CPU中断跟踪变量,并将其导出为符号;
[0032]函数定义单元,用于定义钩子函数指针变量,并定义用于注册钩子函数的注册函数;
[0033]记录单元,用于将中断处理耗时和中断类型记录保存到CPU中断跟踪变量;
[0034]跟踪单元,用于实现用于中断处理耗时和中断类型跟踪的钩子函数,并使用注册函数将钩子函数注册到系统内核中。
[0035]相应的,本专利技术公开了一种中断跟踪装置,包括:
[0036]存储器,用于存储中断跟踪程序;
[0037]处理器,用于执行所述中断跟踪程序时实现如上文任一项所述中断跟踪方法的步骤。
[0038]相应的,本专利技术公开了一种可读存储介质,所述可读存储介质上存储有中断跟踪程序,所述中断跟踪程序被处理器执行时实现如上文任一项所述中断跟踪方法的步骤。
[0039]对比现有技术,本专利技术有益效果在于:
[0040]1、本专利技术通过配置CONFIG_IRQ_TIME_ACCOUNTING使能cpu_irqtime机制,不需要对底层代码进行修改,也不会对内核中断原有处理流程造成破坏。
[0041]2、本专利技术通过定本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种中断跟踪方法,其特征在于,包括:通过设置系统内核配置选项,进行中断时间统计;定义结构体并通过结构体记录中断跟踪信息;声明定义结构体类型的CPU中断跟踪变量,并将其导出为符号;定义钩子函数指针变量,并定义用于注册钩子函数的注册函数;将中断处理耗时和中断类型记录保存到CPU中断跟踪变量;实现用于中断处理耗时和中断类型跟踪的钩子函数,并使用注册函数将钩子函数注册到系统内核中。2.根据权利要求1所述的中断跟踪方法,其特征在于,所述通过设置系统内核配置选项,进行中断时间统计包括:通过配置CONFIG_IRQ_TIME_ACCOUNTING使中断时间统计变量cpu_irqtime计数。3.根据权利要求2所述的中断跟踪方法,其特征在于,所述定义结构体并通过结构体记录中断跟踪信息,包括:定义结构体per_cpu_irq_trace用于记录中断跟踪信息,其中irq_delta域用于记录中断处理耗时,irqstat_idx域用于标识中断类型。4.根据权利要求3所述的中断跟踪方法,其特征在于,所述声明定义结构体类型的CPU中断跟踪变量,并将其导出为符号,包括:在sched模块中定义声明per_cpu_irq_trace类型的per_cpu的变量cpu_irq_trace,同时将cpu_irq_trace变量导出为符号。5.根据权利要求4所述的中断跟踪方法,其特征在于,所述定义钩子函数指针变量,并定义用于注册钩子函数的注册函数,具体包括:定义钩子函数指针变量,所述钩子函数指针变量用于获取钩子函数;所述钩子函数原型形参包括指向当前任务的task_struct类型的指针和标识当前正在执行中断的处理器ID;定义用于注册钩子函数的注册函数,所述注册函数的函数原型形参包括函数指针变量,函数指针变量形参的函数原型与所述钩子函数的定义一致;在注册函数中将所述钩子函数指针变量赋值为传入注册函数的函数指针变量形参。6.根据权利要求5所述的中断跟踪方法,其特征在于,所述将中断处理耗时和中断类型记录保存到CPU中断跟踪变量,具体包括:在sched模块irqtime_account_delta函数中将...

【专利技术属性】
技术研发人员:张武孙明刚
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

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

1