• ベストアンサー
  • 困ってます

irqbalance って

  • 質問No.8128365
  • 閲覧数1444
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 39% (9/23)

Linux-OSでのマルチコア環境で割込み処理の負荷分散を行う、irqbalanceデーモンについておしえてください。
CPU00,01,02,03と4コアで動作してるシステムなんですが、なぜかソフトウェア割込みが特定のCPUにのみ割り込まれちゃいます。
/proc/interruptsを秒間でのぞいてもCPU03だけガシガシとカウントアップされ、まったくもって負荷分散してくれません。
irqbalanceデーモンってどんなロジックで割込みの負荷分散を実現してるのでしょうか?
また、ネットでいろいろ調べると[irqbalanceのOneShotモード]という言葉を見かけます。
一回、分散させてあとは張り付き、みたいなことかかれてるのですが、このモードが有効になってるということでしょうか。。。
このirqbalanceデーモンがこのOneShotモードで動いてるのかどうか、を知るにはドコを確認すればよいでしょうか??
詳しいかた、教えていただけるとうれしいです。

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 53% (2177/4070)

>このirqbalanceデーモンがこのOneShotモードで動いてるのかどうか、を知るにはドコを確認すればよいでしょうか??

Redhat系列なら/etc/sysconfig/irqbalance辺りでしょうかね。

ウチのだと…timer割り込みはCPU0が処理しているみたいですが。
# 半角スペースは削られるので崩れて見えますけど、下記の通り。
cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
0: 909419869 17594 17590 17587 IO-APIC-edge timer
1: 2 1 2 3 IO-APIC-edge i8042
8: 2 0 1 2 IO-APIC-edge rtc
9: 0 0 0 0 IO-APIC-level acpi
12: 2 0 1 2 IO-APIC-edge i8042
50: 0 0 0 0 IO-APIC-level ehci_hcd:usb1, uhci_hcd:usb2
58: 7778 0 8769346 0 PCI-MSI ahci
66: 188 0 0 11459104 PCI-MSI eth0
82: 287 0 0 0 PCI-MSI snd_hda_intel
177: 0 0 0 0 IO-APIC-level uhci_hcd:usb5
185: 0 0 0 0 IO-APIC-level uhci_hcd:usb4
193: 0 0 0 0 IO-APIC-level uhci_hcd:usb3
NMI: 0 0 0 0
LOC: 909529896 909529930 909529923 909529935
ERR: 0
MIS: 0

SATAはCPU2が、EthernetはCPU3が処理している…っぽいですな。
CPU1だけヒマしているようにも見えますが。
ちなみに、もう1台のサーバで確認するとtimerはCPU0が処理していました。
# やっぱりCPU1は割り込み回数が極端に少なかったですが。

http://hagio.org/wiki/index.php/Linux/%E6%99%82%E8%A8%88
ってことで、ソフトウェアクロック を別のCPUに振るのは正確性に欠ける…ってことで、使用CPUが変動しないように制御でもしているんじゃないですかね?
/proc/irq/0/smp_affinityの値は00000001でしたし。
# 0000000fに変更してみてもCPU0しか使われないですな。
補足コメント
Angela-Aki

お礼率 39% (9/23)

>>このirqbalanceデーモンがこのOneShotモードで動いてるのかどうか、を知るにはドコを確認すればよいでしょうか??

>Redhat系列なら/etc/sysconfig/irqbalance辺りでしょうかね。

ありがとうございます。みてみたら、こんなになってました。
↓これは、、、yesになってないので、、ONESHOTにはなってないということですよね。。

# irqbalance is a daemon process that distributes interrupts across
# CPUS on SMP systems. The default is to rebalance once every 10
# seconds. There is one configuration option:
#
# ONESHOT=yes
# after starting, wait for a minute, then look at the interrupt
# load and balance it once; after balancing exit and do not change
# it again.
ONESHOT=
投稿日時:2013/06/13 21:01
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ