大家好,请教个问题,左右两个虚拟机,运行完全相同的程序,两个虚拟机的唯一差别是 “实时补丁”,不知道为什么,有实时补丁的虚拟机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内核中。
调度程序尝试将处理器活动分布到尽可能多的内核中。一般的经验法则是最好在低功耗(较低的时钟频率)下在所有内核上运行尽可能多的进程,而不是让一个内核真正忙于全速运行而其他内核正在休眠。
不知道你这个问题是否已经解决, 如果还没有解决的话: