一种Linux系统下的网卡接收软中断延迟监测方法及装置与流程
- 国知局
- 2024-08-02 14:02:54
本发明属于计算机,特别是涉及到一种linux系统下的网卡接收软中断延迟监测方法及装置。
背景技术:
1、在当今高度依赖互联网的世界里,网络延迟已成为影响用户体验和业务效率的关键因素。为了确保实时、稳定的在线体验,研发通常在这方面会投入非常大人力与物力成本,但随着云原生的快速发展,其网络拓扑复杂程度越来越高,目前的网络相关的监测工具不能对网卡的软中断延迟进行监控,导致不能有效的分析网络数据包在内核中的全路径延迟情况的问题。
2、现有技术的方案中有提出可以根据中断类型来统计各类中断耗时的方法,能够跟踪获取每一次中断处理的所消耗的时间,并根据中断类型将硬中断和软中断进行区分,提高了中断处理和调度问题的解决效率。但该方法需要修改内核代码,操作起来较为困难,并且如果操作不当可能会导致内核崩溃,并且其主要用于统计各类中断的耗时,并不能用来获取从硬中断处理到对应的软中断处理之间的耗时。
技术实现思路
1、本发明的目的在于提供一种linux系统下的网卡接收软中断延迟监测方法及装置,能够跟踪记录每一次各个cpu核心的网卡接收软中断处理延迟时间。
2、为了实现上述目的,本发明的技术方案是这样实现的:
3、一种linux系统下的网卡接收软中断延迟监测方法,包括:
4、s1、通过ebpf hook程序采集硬中断调用数据,获取网卡所触发的网卡接收硬中断,创建网卡接收硬中断事件;
5、s2、通过ebpf hook程序采集软中断调用数据,获取网卡所触发的网卡接收软中断,创建网卡接收软中断事件;
6、s3、收到所述网卡接收硬中断事件后,创建一个以所述网卡接收硬中断事件作为起始的时间窗,在未接收到下一个相同cpu id的网卡接收硬中断事件期间,所述时间窗作为活动时间窗;
7、s4、收到所述网卡接收软中断事件后,检查所述网卡接收软中断事件的cpu id对应的活动时间窗,计算所述网卡接收软中断事件的时间戳与所述活动时间窗的起始时间戳的差值,得到所述网卡接收软中断事件的延迟时间。
8、进一步的,步骤s1中,ebpf hook程序加载至linux系统的硬中断执行函数irq_handler_entry和/或__handle_irq_event_percpu入口处。
9、更进一步的,步骤s1中,当linux系统开启receive package steering功能时,ebpf hook程序还加载至enqueue_to_backlog函数处,通过ebpf hook程序采集硬中断处理过程中调用enqueue_to_backlog函数分配软中断处理至不同cpu核心的cpu id数据,以此关联硬中断、软中断断、cpu id。
10、进一步的,步骤s2中,ebpf hook程序加载至linux系统的软中断softirq_entry执行函数入口处。
11、本发明另一方面还提供了一种linux系统下的网卡接收软中断延迟监测装置,包括:
12、硬中断模块:通过ebpf hook程序采集硬中断调用数据,获取网卡所触发的网卡接收硬中断,创建网卡接收硬中断事件;
13、软中断模块:通过ebpf hook程序采集软中断调用数据,获取网卡所触发的网卡接收软中断,创建网卡接收软中断事件;
14、时间窗口模块:收到所述网卡接收硬中断事件后,创建一个以所述网卡接收硬中断事件作为起始的时间窗,在未接收到下一个相同cpu id的网卡接收硬中断事件期间,所述时间窗作为活动时间窗;
15、延迟计算模块:收到所述网卡接收软中断事件后,检查所述网卡接收软中断事件的cpu id对应的活动时间窗,计算所述网卡接收软中断事件的时间戳与所述活动时间窗的起始时间戳的差值,得到所述网卡接收软中断事件的延迟时间。
16、进一步的,硬中断模块中,ebpf hook程序加载至linux系统的硬中断执行函数irq_handler_entry和/或__handle_irq_event_percpu入口处。
17、更进一步的,硬中断模块中,当linux系统开启receive package steering功能时,ebpf hook程序还加载至enqueue_to_backlog函数处,通过ebpf hook程序采集硬中断处理过程中调用enqueue_to_backlog函数分配软中断处理至不同cpu核心的cpu id数据,以此关联硬中断、软中断断、cpu id。
18、进一步的,软中断模块中,ebpf hook程序加载至linux系统的软中断softirq_entry执行函数入口处。
19、本发明还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述的linux系统下的网卡接收软中断延迟监测方法。
20、本发明还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述的linux系统下的网卡接收软中断延迟监测方法。
21、与现有技术相比,本发明具有如下的有益效果:
22、1、本发明监听所有的网卡的接收硬中断与软中断进行监听,实时计算各个cpu核心的软中断延迟情况,可以有效的抓取软中断延迟情况,给问题分析提供有效数据。
23、2、本发明通过分析、记录各个cpu核心的网卡接收硬中断与网卡接收软中断,来实现网卡接收软中断的延迟时间获取。
技术特征:1.一种linux系统下的网卡接收软中断延迟监测方法,其特征在于,包括:
2.根据权利要求1所述的linux系统下的网卡接收软中断延迟监测方法,其特征在于,步骤s1中,ebpf hook程序加载至linux系统的硬中断执行函数irq_handler_entry和/或__handle_irq_event_percpu入口处。
3.根据权利要求2所述的linux系统下的网卡接收软中断延迟监测方法,其特征在于,步骤s1中,当linux系统开启receive package steering功能时,ebpf hook程序还加载至enqueue_to_backlog函数处,通过ebpf hook程序采集硬中断处理过程中调用enqueue_to_backlog函数分配软中断处理至不同cpu核心的cpu id数据,以此关联硬中断、软中断断、cpu id。
4.根据权利要求1所述的linux系统下的网卡接收软中断延迟监测方法,其特征在于,步骤s2中,ebpf hook程序加载至linux系统的软中断softirq_entry执行函数入口处。
5.一种linux系统下的网卡接收软中断延迟监测装置,其特征在于,包括:
6.根据权利要求5所述的linux系统下的网卡接收软中断延迟监测装置,其特征在于,硬中断模块中,ebpf hook程序加载至linux系统的硬中断执行函数irq_handler_entry和/或__handle_irq_event_percpu入口处。
7.根据权利要求6所述的linux系统下的网卡接收软中断延迟监测装置,其特征在于,硬中断模块中,当linux系统开启receive package steering功能时,ebpf hook程序还加载至enqueue_to_backlog函数处,通过ebpf hook程序采集硬中断处理过程中调用enqueue_to_backlog函数分配软中断处理至不同cpu核心的cpu id数据,以此关联硬中断、软中断断、cpu id。
8.根据权利要求5所述的linux系统下的网卡接收软中断延迟监测装置,其特征在于,软中断模块中,ebpf hook程序加载至linux系统的软中断softirq_entry执行函数入口处。
9.一种计算机可读存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序用于执行如权利要求1-4任一项所述的linux系统下的网卡接收软中断延迟监测方法。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4任一项所述的linux系统下的网卡接收软中断延迟监测方法。
技术总结本发明提供一种Linux系统下的网卡接收软中断延迟监测方法及装置,通过eBPF hook程序采集硬中断调用数据,获取网卡所触发的网卡接收硬中断,创建网卡接收硬中断事件;通过eBPF hook程序采集软中断调用数据,获取网卡所触发的网卡接收软中断,创建网卡接收软中断事件;创建一个以所述网卡接收硬中断事件作为起始的时间窗,计算所述网卡接收软中断事件的时间戳与所述活动时间窗的起始时间戳的差值,得到所述网卡接收软中断事件的延迟时间。本发明通过分析、记录各个CPU核心的网卡接收硬中断与网卡接收软中断,来实现网卡接收软中断的延迟时间获取。技术研发人员:陈源,肖林逵,刘正元,刘云,张铎,胡海,陆云,危荣广受保护的技术使用者:麒麟软件有限公司技术研发日:技术公布日:2024/7/23本文地址:https://www.jishuxx.com/zhuanli/20240801/241519.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。