【问题标题】:Less number of timer interrupts when some user process is running当某些用户进程正在运行时,定时器中断的数量较少
【发布时间】:2012-03-17 10:55:32
【问题描述】:

在一个节点中,我们看到时间总是在漂移,ntp jitter 非常高。 当我们通过主机中的 vmstat 检查中断数时,大约是 40-50 个中断,在这些机器中通常应该在 1000+ 左右。当我们停止 java 进程并检查中断时,它在 1K 左右恢复正常。还有

cat /proc/interrupts ;  sleep 2 ; cat /proc/interrupts 

在 java 进程运行时显示大约 200 个中断,在进程停止时显示大约 2k。

我认为定时器中断的延迟可以解释

  1. 机器上的高负载:由于进程在量子之后没有被踢出处理器,更多的进程在运行队列中,因此负载高
  2. 响应非常慢:嗯,由于时间片后没有定时器中断,我们正在运行的命令可能不会再次被调度

但无法解释

  1. 低 %cpu 使用率

这里的问题很少:

  1. 中断发生了什么?
  2. 定时器中断具有最高优先级 (irq0),不能忽略。那么(如果有的话)用户杠杆过程怎么会导致这种情况呢?

【问题讨论】:

  • 这是什么内核版本?很确定 JVM 在 2.6 之前的内核上运行得非常糟糕,因为线程数和调度程序设计的多。您在这里的测试代码可能没有像您想象的那样安排好,这会影响您在两次运行之间看到的中断数。
  • 内核版本为 2.6.18.x。我们使用 vmstat 检查了中断的数量(有趣的部分是中断和上下文切换都减少了)。当 java 代码运行时,/proc/interrupts 的计时器中断数量也减少了。

标签: load kernel interrupt


【解决方案1】:

看起来这是一个硬件问题。杀死纠正系统的用户程序是巧合。还有http://support.ntp.org/bin/view/Support/KnownOsIssues#Section_9.2.1.1。谈论类似的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 2018-07-06
    • 2020-06-11
    • 2019-07-21
    相关资源
    最近更新 更多