Linux“实时补丁”导致CPU无法占满运行

大家好,请教个问题,左右两个虚拟机,运行完全相同的程序,两个虚拟机的唯一差别是 “实时补丁”,不知道为什么,有实时补丁的虚拟机CPU跑不到100%(类似while(1)死循环操作)

实时内核:3.10.0-1127.rt56.1093.el7.x86_64

非实时内核:3.10.0-693.el7.x86_64

可能由于中断导致的,

[中断]/proc/interrupts: Rescheduling Interrupts:https://rtoax.blog.csdn.net/article/details/113976884

powertop命令:

PowerTOP 2.3      Overview   Idle stats   Frequency stats   Device stats   Tunables                                 
 
Summary: 489.4 wakeups/second,  0.0 GPU ops/seconds, 0.0 VFS ops/sec and 0.9% CPU use
 
                Usage       Events/s    Category       Description
              3.2 ms/s     472.5        Process        ./a.out -s other -p 1 -n 4 -a 0 -b 1 -c 2 -d 3 -e 3
              2.1 ms/s       8.8        Timer          tick_sched_timer
              1.2 ms/s       4.5        Interrupt      [1] timer(softirq)
            371.9 µs/s       2.2        Timer          hrtimer_wakeup
            621.3 µs/s      0.25        Interrupt      [7] sched(softirq)

 

 ------------------------- RealTime Configure BIOS ----------------------------
[BIOS]
[BIOS] =============== 禁用电源管理
[BIOS]为了获得最佳响应时间,已经确定在BIOS中禁用电源管理选项? [Y/n] y
[BIOS]
[BIOS] =============== 关闭EDAC(检测和纠正从纠错码)
[BIOS]如果可能,请关闭EDAC(检测和纠正从纠错码)。否则,请切换到最低功能级别? [Y/n] y
[BIOS]
[BIOS] =============== 禁用SMI(系统管理中断)
[BIOS]如果BIOS包含SMI(系统管理中断)选项,请与供应商联系以检查禁用它的安全程度? [Y/n] n
 

什么是重新调度中断(RES)?是什么导致了它?它在Linux内核中如何处理?

重新调度中断是Linux内核唤醒空闲CPU内核以调度线程的方式。在SMP系统上,这通常由调度程序完成,以便将负载分散到多个CPU内核中。

调度程序尝试将处理器活动分布到尽可能多的内核中。一般的经验法则是最好在低功耗(较低的时钟频率)下在所有内核上运行尽可能多的进程,而不是让一个内核真正忙于全速运行而其他内核正在休眠。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^