openEuler22.03-LTS中top命令中的hi值高

在openEuler22.03-LTS系统上运行网络相关业务,使用top命令查看cpu使用情况,发现top命令显示出来的hi的数值比centos7的要高。centos7上的hi数值为0,但是在openEuler系统上为20多,如下图:



hi值代表的是系统执行硬中断的占用百分比。排查两个系统的/proc/interrupts文件,发现两个系统中的该文件中都显示有处理网络中断,那么正常来说hi值不应该为0。通过strace命令追踪top的调用流程,发现top显示的hi值是统计的/proc/stat文件,通过对比两个系统的/proc/stat文件,发现openEuler22.03-LTS中的/proc/stat文件中的代表硬中断的执行时间的字段数值不为0,而centos7中的数值为0。所以top命令中统计的hi值在两个系统上差异较大。根据上面排查的结果,怀疑该问题是由于centos7系统没有统计系统处理硬中断时间导致的。统计系统硬中断的执行时间信息需要在编译内核的时候打开CONFIG_IRQ_TIME_ACCOUNTING配置,经过对比centos7和openEuler22.03-LTS两个系统下的/boot/config-xxx文件,发现centos7没有打开,而openEuler打开了。后续将centos7中的该配置打开之后重新编译内核,发现centos7和openEuler22.03-LTS中的top命令的hi值相差不大,确定该问题是内核配置问题,而不是系统问题

1 Like