本发明涉及计算机,具体涉及一种基于ebpf(extended berkeleypacket filter)的任务执行时间抖动测量方法、系统和介质。
背景技术:
1、在工业自动化、航空航天、医疗设备、通信系统等领域对计算机应用的实时性都有一定的要求,运行在计算机系统上的业务程序需要具有在特定的时间限制内完成任务的能力,需要将任务执行时间的抖动降到最低,以确保系统能及时和稳定地响应外部事件。
2、传统的目标任务执行时间及抖动测量方法是在目标任务开始时记录一个开始时间,在目标任务结束时记录一个结束时间,反复运行来收集整个系统运行过程关键计算任务的最大时间及最大抖动等数据,该方法可以观测和统计到目标任务的运行时间,但是缺乏日志来分析运行时间抖动的原因,比如目标任务在运行过程中,可能被系统中的硬件中断、软中断或者其它任务打断从而造成目标任务运行时间变长。
技术实现思路
1、本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于ebpf的任务执行时间抖动测量方法、系统和介质,本发明旨在实现高效、低开销以及准确的任务执行时间抖动测量,以便于在系统运行过程中实时观测目标任务执行时间及抖动干扰的原因。
2、为了解决上述技术问题,本发明采用的技术方案为:
3、一种基于ebpf的任务执行时间抖动测量方法,包括:
4、基于ebpf在目标任务的开始和结束处以及内核可能打断目标任务的系统事件处插桩;
5、基于插桩所插入的回调函数记录目标任务开始、结束时间及运行期间的系统事件信息;
6、基于目标任务的记录信息统计生成目标任务运行时长的统计信息,并在目标任务尚未结束且发生超时则报告记录的系统事件信息。
7、可选地,所述基于ebpf在目标任务的开始和结束处以及内核可能打断目标任务的系统事件处插桩时,在目标任务的开始处插桩所插入的回调函数用于在目标任务开始时记录目标任务开始时间、目标任务所在进程pid、将目标任务状态设为执行中和清空系统事件缓冲区;在目标任务的结束处插桩所插入的回调函数用于记录目标任务结束时间、将目标任务状态设为已完成;在内核可能打断目标任务的系统事件处插桩时所插入的回调函数用于记录将系统事件记录到系统事件缓冲区。
8、可选地,所述内核可能打断目标任务的系统事件包括硬件中断、软中断、cpu切换到更高优先级进程运行、信号处理中的部分或全部系统事件。
9、可选地,所述基于目标任务的记录信息统计生成目标任务运行时长的统计信息时,目标任务运行时长的统计信息包括目标任务运行的最大时长、最小时长、平均时长和时长分布。
10、可选地,所述插桩所插入的回调函数运行于内核态,所述基于目标任务的记录信息统计生成目标任务运行时长的统计信息,并在目标任务尚未结束且发生超时则报告记录的系统事件信息为通过运行在用户态的程序完成;所述系统事件缓冲区为内核态、用户态之间均可访问的缓冲区。
11、可选地,所述系统事件缓冲区为环形缓冲区。
12、可选地,所述基于目标任务的记录信息统计生成目标任务运行时长的统计信息是指基于预先配置的周期定时统计生成目标任务运行时长的统计信息。
13、此外,本发明还提供一种用于应用所述的基于ebpf的任务执行时间抖动测量方法的基于ebpf的任务执行时间抖动测量系统,包括:
14、插桩程序模块,位于用户态,用于将基于ebpf在目标任务的开始和结束处以及内核可能打断目标任务的系统事件处插桩的源代码编译生成bpf字节码并通过bpf系统调用将bpf字节码加载到linux内核;
15、bpf系统调用处理程序模块,位于内核态,用于利用bpf虚拟机解析bpf字节码生成对应的回调函数的二进制代码,将回调函数的二进制代码分别基于ebpf在目标任务的开始和结束处以及内核可能打断目标任务的系统事件处插桩并创建用于内核态和用户态通信的系统事件缓冲区,使得基于插桩所插入的回调函数记录目标任务开始、结束时间及运行期间的系统事件信息并保存到系统事件缓冲区;
16、事件分析程序模块,位于用户态,用于基于系统事件缓冲区中记录的目标任务从开始运行到结束运行所用的时间与运行期间的系统事件信息进行事件分析,如果目标任务的运行时长超过设定的阀值,则将目标任务此次运行的详细信息上报用户;
17、结果报告程序模块,位于用户态,用于基于目标任务的记录信息统计生成目标任务运行时长的统计信息,并在目标任务尚未结束且发生超时则报告记录的系统事件信息;
18、结果报告程序模块,位于用户态,用于事件分析的分析结果存储并生成结果报告。
19、此外,本发明还提供一种基于ebpf的任务执行时间抖动测量系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述基于ebpf的任务执行时间抖动测量方法。
20、此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述基于ebpf的任务执行时间抖动测量方法。
21、和现有技术相比,本发明主要具有下述优点:
22、1、本发明基于ebpf在目标任务的开始和结束处以及内核可能打断目标任务的系统事件处插桩;基于插桩所插入的回调函数记录目标任务开始、结束时间及运行期间的系统事件信息;基于目标任务的记录信息统计生成目标任务运行时长的统计信息,并在目标任务尚未结束且发生超时则报告记录的系统事件信息,本发明通过利用ebpf技术,来追踪关键任务的开始与结束,收集关键任务执行期间发生的打断关键任务执行的内核事件和应用程序事件,从而能在系统运行过程中实时观测关键任务执行时间及抖动干扰的原因。
23、2、本发明不需要修改linux内核和应用程序,实时、动态地观测业务系统程序执行过程中开始、结束的执行时间及抖动等,具有兼容性好的优点。
1.一种基于ebpf的任务执行时间抖动测量方法,其特征在于,包括:
2.根据权利要求1所述的基于ebpf的任务执行时间抖动测量方法,其特征在于,所述基于ebpf在目标任务的开始和结束处以及内核可能打断目标任务的系统事件处插桩时,在目标任务的开始处插桩所插入的回调函数用于在目标任务开始时记录目标任务开始时间、目标任务所在进程pid、将目标任务状态设为执行中和清空系统事件缓冲区;在目标任务的结束处插桩所插入的回调函数用于记录目标任务结束时间、将目标任务状态设为已完成;在内核可能打断目标任务的系统事件处插桩时所插入的回调函数用于记录将系统事件记录到系统事件缓冲区。
3.根据权利要求1所述的基于ebpf的任务执行时间抖动测量方法,其特征在于,所述内核可能打断目标任务的系统事件包括硬件中断、软中断、cpu切换到更高优先级进程运行、信号处理中的部分或全部系统事件。
4.根据权利要求1所述的基于ebpf的任务执行时间抖动测量方法,其特征在于,所述基于目标任务的记录信息统计生成目标任务运行时长的统计信息时,目标任务运行时长的统计信息包括目标任务运行的最大时长、最小时长、平均时长和时长分布。
5.根据权利要求1所述的基于ebpf的任务执行时间抖动测量方法,其特征在于,所述插桩所插入的回调函数运行于内核态,所述基于目标任务的记录信息统计生成目标任务运行时长的统计信息,并在目标任务尚未结束且发生超时则报告记录的系统事件信息为通过运行在用户态的程序完成;所述系统事件缓冲区为内核态、用户态之间均可访问的缓冲区。
6.根据权利要求5所述的基于ebpf的任务执行时间抖动测量方法,其特征在于,所述系统事件缓冲区为环形缓冲区。
7.根据权利要求1所述的基于ebpf的任务执行时间抖动测量方法,其特征在于,所述基于目标任务的记录信息统计生成目标任务运行时长的统计信息是指基于预先配置的周期定时统计生成目标任务运行时长的统计信息。
8.一种用于应用权利要求1~7中任意一项所述的基于ebpf的任务执行时间抖动测量方法的基于ebpf的任务执行时间抖动测量系统,其特征在于,包括:
9.一种基于ebpf的任务执行时间抖动测量系统,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~7中任意一项所述基于ebpf的任务执行时间抖动测量方法。
10.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其特征在于,所述计算机程序用于被微处理器编程或配置以执行权利要求1~7中任意一项所述基于ebpf的任务执行时间抖动测量方法。
