首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用Linux内核上的定时器中断

禁用Linux内核上的定时器中断
EN

Stack Overflow用户
提问于 2018-05-09 09:27:44
回答 1查看 2.8K关注 0票数 4

我想在我的机器上的一些核心(1-2)上禁用计时器中断,这是一个运行centos 7的带有rt补丁的x86,两个核都是带有nohz_full的独立内核(您可以看到cmdline),但是定时器中断继续中断运行在core1和core2上的实时进程。

代码语言:javascript
复制
1. uname -r
3.10.0-693.11.1.rt56.632.el7.x86_64

2. cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-693.11.1.rt56.632.el7.x86_64 \
   root=/dev/mapper/centos-root ro crashkernel=auto \
   rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet \ 
   default_hugepagesz=2M hugepagesz=2M hugepages=1024 \
   intel_iommu=on isolcpus=1-2 irqaffinity=0 intel_idle.max_cstate=0 \
   processor.max_cstate=0 idle=mwait tsc=perfect rcu_nocbs=1-2 rcu_nocb_poll \
   nohz_full=1-2 nmi_watchdog=0

 3. cat /proc/interrupts
           CPU0       CPU1       CPU2
  0:         29          0          0   IO-APIC-edge      timer
.....
......

NMI:          0          0          0   Non-maskable interrupts
LOC:  835205157  308723100  308384525   Local timer interrupts
SPU:          0          0          0   Spurious interrupts
PMI:          0          0          0   Performance monitoring interrupts
IWI:          0          0          0   IRQ work interrupts
RTR:          0          0          0   APIC ICR read retries
RES:  347330843  309191325  308417790   Rescheduling interrupts
CAL:          0        935        935   Function call interrupts
TLB:        320         22         58   TLB shootdowns
TRM:          0          0          0   Thermal event interrupts
THR:          0          0          0   Threshold APIC interrupts
DFR:          0          0          0   Deferred Error APIC interrupts
MCE:          0          0          0   Machine check exceptions
MCP:          2          2          2   Machine check polls

CPU/时钟源:

代码语言:javascript
复制
4. lscpu | grep CPU.s
CPU(s):                3
On-line CPU(s) list:   0-2
NUMA node0 CPU(s):     0-2

5. cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc

非常感谢你的帮助。摩西

EN

回答 1

Stack Overflow用户

发布于 2019-09-29 19:06:31

即使使用nohz_full=,也会在隔离CPU上得到一些滴答声:

一些进程处理操作仍然需要偶尔的调度时钟滴答。这些操作包括计算CPU负载、维护sched平均值、计算CFS实体v运行时、计算avenrun和执行负载平衡。他们目前被安排时钟滴答每一秒左右。正在进行的工作将消除这种需要,即使是这些罕见的调度时钟滴答声。(HZ.txt,参比)(几乎) 3.10中的全无痒操作 LWN,2013年)

因此,您必须检查本地计时器的速率,例如:

代码语言:javascript
复制
$ perf stat -a -A -e irq_vectors:local_timer_entry sleep 120

(当您的独立线程/进程运行时)

而且,只有在每个孤立的核心上只有一个可运行的任务时,nohz_full=才是有效的。您可以使用例如ps -L -e -o pid,tid,user,state,psr,cmdcat /proc/sched_debug来检查这一点。

也许您需要将一些(内核)任务转移到您的家庭管理核心,例如:

代码语言:javascript
复制
# tuna -U -t '*' -c 0-4 -m

通过查看/proc/timer_list,您可以更深入地了解哪些计时器仍处于活动状态。

另一种研究可能中断的原因的方法是使用功能追踪器(飞迹)。有关一些示例,请参见减少由于每cpu k线程而引起的OS抖动

我在您的内核参数中看到了nmi_watchdog=0,但是您没有禁用软监视狗。也许这是另一个计时器滴答源,它会出现在ftrace中。

您可以使用nowatchdog禁用所有看门狗。

顺便说一句,您的一些内核参数似乎是关闭的:

  • tsc=perfect -你是说tsc=reliable吗?“完美”值没有记录在内核文档中。
  • idle=mwait -你是说idle=poll吗?同样,我无法在内核文档中找到“mwait”值。
  • intel_iommu=on -这是什么目的?
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50249910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档