[ARM][IRQ] ARM SBCでもirqbalanceを使用するようにしようという話。

AIX、UNIX、LinuxARM
20181030161620fb2

はじめに

記事名通りなんですが。

最近はラズパイを始めとして、Orange PiだったりBanana PiだったりとARM板は非常に入手しやすくなっています。またイメージについても各種ARM板の販売元はもとより、Armbian、Diet Piなどイメージが多く出されています。今回は私も使用しているArmbianを中心にしますが、その中でirqbalanceをちゃんと使用しましょう、ということです。

そもirqbalanceとは何ぞや、という人は公式を確認してください。

公式レポジトリ

GitHub - Irqbalance/irqbalance: The irqbalance source tree - The new official site for irqbalance
The irqbalance source tree - The new official site for irqbalance - GitHub - Irqbalance/irqbalance: The irqbalance sourc...

Irqbalanceは、システムのCPU全体で、割り込みによって生成されたCPU負荷のバランスをとるためのデーモン

x86_64な*nixを触っている人は分かると思いますが、最近のメニーコアなシステムでは負荷を最適化するために、irqbalanceの動作は必須だと思います。恩恵は全体の負荷の最適化ならず、NICのスループットの向上なども果たす場合があります。

この手の記事については過去にも話題になったので覚えている人も多いかと思います。

参考情報

CentOS 6.2 で RPS/RFS を使ってネットワークの割り込み処理を複数コアに分散してみた - blog.nomadscafe.jp
以前(2010年)に「アプリケーションがマルチスレッドでもマルチコアCPUを活か...

どんな影響?

ラズパイもRPi3では4コアで動作しますし、最近のH5系でも4コア、rockchipのrk3399だとa72+a53の6コアだったと思います。ということでマルチコア動作は当たり前になってきています。しかし、なぜかArmbianにはirqbalanceはプレインストールされていないので、ちょっとパフォーマンスが発揮できていないかも、という状態になっているはずです。

ちなみに自分の場合は以下のようになっていました。

上の図だと10月28日2時ごろから、その下の図だと10月28日22時前ごろから青い部分の「CPU user time」が減少していることが分かります。/proc/interrunptsの適用前後の値も取っておけばよかったのですが忘れていました。

$ cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5
10: 0 0 0 0 0 0 GICv3 25 Edge vgic
12: 0 0 0 0 0 0 GICv3 27 Edge kvm guest timer
14: 0 0 0 0 0 0 GICv3 29 Edge arch_timer
15: 120281607 107664001 101097258 100359092 20984311 19389053 GICv3 30 Edge arch_timer
17: 15040270 12273978 10420869 10843832 5507457 4590059 GICv3 113 Level rk_timer
20: 0 0 0 0 0 0 GICv3 37 Level ff6d0000.dma-controller
21: 0 0 0 0 0 0 GICv3 38 Level ff6d0000.dma-controller
$ cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
1: 0 0 0 0 GICv2 25 Level vgic
3: 21511711 26487897 20789511 20495437 GICv2 30 Level arch_timer
4: 0 0 0 0 GICv2 27 Level kvm guest timer
6: 0 0 0 0 GICv2 32 Level ff1f0000.dmac
7: 0 0 0 0 GICv2 33 Level ff1f0000.dmac

NICについてはRSSには対応していないので分散はされていません。この辺りまで実装されれば面白いことになると思いますが、ARM SBCとしてはコストアップになっちゃうでしょうから、実装はなさそうですね・・・ もしかしたらSoCに盛り込まれるようになるのかもしれませんが。

というわけで、ARM板でもirqbalanceを有効にして使用した方がいいよ、という内容でした。

ちなみに、irqbalanceですが、ARM関連に関して更新が入ったりしているので、aptやyumからではなく自分でbuildして導入した方が良さそうな気がします。私は今のところ自分でbuildして導入するようにしています。

EC2 Linuxでirqbalanceが動作しない part1 - Qiita
概要 EC2上のLinux(CentOS6.6、kernel: 2.6.32-504)でirqbalanceがうまく動いていないように見えたので調べてみた。 結論から言うと、利用していたirqbalanceのバージョンが古くて下...
Linuxのirqbalanceがオフとなっていた
本番系でとてつもなく動作が遅いマシンがある。CPUを24個も搭載しているサーバー...
この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
タイトルとURLをコピーしました