web-dev-qa-db-ja.com

高い割り込みとコンテキストスイッチの原因

私はクアッドコアを持っていて、munin(割り込みとコンテキストスイッチの監視)を見つけました。しばらくの間、平均が250であったのに、割り込みとコンテキストスイッチが毎秒25kに急上昇しました。

私の監視ツールによると、それが異常であるという事実を除いて、何が起こったのか、またそれが何を意味するのかわかりません。

これは私のopenVZ仮想コンテナの1つで発生しました。

注:同時に、負荷は2.5に急上昇し、CPU使用率は同じ時点で110%のシステム、15%のユーザー、100%のIOwaitでした。

ホストマシンに/ proc/interruptsの出力を添付しました。

           CPU0       CPU1       CPU2       CPU3       
  0:   48039108   56660082   56431151   51696624    IO-APIC-Edge  timer
  1:          0          3          0          0    IO-APIC-Edge  i8042
  4:          4          4          1          3    IO-APIC-Edge  serial
  8:          1          0          0          0    IO-APIC-Edge  rtc
  9:          0          0          0          0   IO-APIC-level  acpi
 12:          4          0          0          0    IO-APIC-Edge  i8042
 50:         15         16         16         16   IO-APIC-level  ata_piix
 66:      11113          0          0   56276172         PCI-MSI  eth0
169:   12839820    4849263       1080       1167   IO-APIC-level  ioc0
225:          6          7          5          5   IO-APIC-level  ehci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb4
233:          0          0          0          0   IO-APIC-level  uhci_hcd:usb3
NMI:      17173      16340      16694      17306 
LOC:  214221117  214220936  214196385  214196306 
ERR:          0
MIS:          0
1
Adam Benayoun

これは、多くのロックを実行するマルチスレッドアプリケーションになります。ロックするたびに、CPUはクォンタムをプリエンプトし、別のスレッドが実行できるようにします。スレッド間でスロッシングにすべての時間を費やすM/Tアプリを作成できますが、いずれも有用な作業を行うことはありません。また、これらすべてのコンテキストスイッチが発生するため、CPUはスレッド自体が到達するよりもスレッドの切り替えに多くの時間を費やします。仕事する。

これらのスパイク中にアプリのCPU使用率にスパイクがあるかどうかを確認します。

2
gbjbaanb

これは、非常に短いタイムスライスが原因で、監視システムが生成した数値アーティファクトである可能性があります。たぶん、ここで見ているのは単なるサンプリング効果です。

0
pfo