首页 新闻 会员 周边 捐助

如何检测到Linux中的优先级反转现象?

0
悬赏园豆:10 [待解决问题]

我的实验环境如下:有一台arm架构的服务器,上面运行了pve,pve里面有debian虚拟机

我想要检测一种优先级反转,叫做软中断优先级反转,具体情况如下:

当CPU执行用户进程的时候,非RT NIC向CPU注入IRQ,然后唤醒非RT-NIC驱动程序中的中断处理程序线程,该线程执行非RT硬中断处理程序,非RT驱动程序的中断处理程序线程将非RT 软中断处理程序放入CPU的 poll_list 中。

接下来,非RT驱动程序的中断处理程序线程进入CPU的softirq机制。 非RT驱动程序的线程获取CPU的softirq_lock并执行 非RT softirq处理程序。

当 CPU 执行非 RT 软中断处理程序时,RT NIC 向 CPU 注入 IRQ。 CPU抢占非RT驱动程序的中断处理程序并唤醒RT网卡驱动程序的中断处理程序线程。由于RT NIC驱动程序的中断处理程序线程比非RT驱动程序的中断处理程序线程具有更高的优先级,因此CPU执行前一个线程。该线程执行RT硬IRQ处理程序,该处理程序将RT软IRQ处理程序插入CPU的poll_list中。接下来,RT网卡驱动的中断处理线程进入CPU的softirq机制。该线程尝试获取softirq_lock。但是,它已经被非 RT 中断处理程序线程锁定。因此,CPU挂起RT网卡驱动的中断处理线程,并执行非RT网卡驱动的中断处理线程。然后该线程执行非 RT 软中断处理程序。此时,该线程根据优先级继承协议,以高优先级执行非RT软中断处理程序。 RT NIC 驱动程序的中断处理程序线程虽然具有较高优先级,但是必须等待具有较低优先级的非RT 线程完成。

这就是软中断优先级反转。

我有两个问题:
1、如何实现RT NIC和非RT NIC,区分的标准是什么?内核时如何知道哪个中断处理程序线程的优先级更高的?

2、如何检测到这个软中断优先级反转现象?我应该使用什么软件?听说这种现象可能出现的概率很小,请问我应该如何配置环境使得我能更容易检测到这种反转现象?

wendy_ann的主页 wendy_ann | 初学一级 | 园豆:74
提问于:2024-01-29 20:43
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册