irqbalance の WARNING: "didn't collect load info for all cpus" 問題の対応

CentOS 6 系列の環境で、システムログに irqbalance: WARNING, didn't collect load info for all cpus, balancing is broken というメッセージが確認されました。この問題の背景には、irqbalance が Linux システム上でサービスとして動作し、マルチコアプロセッサ環境におけるハードウェア割り込みの分散処理によるパフォーマンス向上機能がある。

基本的な動作メカニズム

  1. 前回の統計情報を初期化
  2. /proc/interrupts を参照して割り込み状況を取得
  3. /proc/stat を使用して各CPUの負荷情報を取得
  4. 取得したデータを元に割り込みのバランスを計算
  5. CPUアフィニティを設定してバランス調整
  6. 指定された時間だけスリープ後、再度処理を繰り返す

irqbalance の理論的背景

irqbalance は、パフォーマンス向上と省エネの両面で効果を持つ設計となっています。このサービスは、システムの利用状況に応じて次の2つのモードを自動的に切り替えます。

  • Performance mode: 割り込みをすべてのCPUコアに均等に分散し、パフォーマンスを最大化
  • Power-save mode: 割り込みを1つのCPUに集中させ、他のCPUのアイドル時間を増やして消費電力を抑える

ただし、現実にはCPU負荷の偏りを生むケースがあり、特にサーバ環境では無効にすることが推奨されます。

メモリリーク問題と対応

海外のフォーラムでも同様の問題が報告されており、Banana Pi 上の Allwinner ARM プラットフォームでメモリリークが確認されています。最終的な結論として、このサービスは既に時代遅れであり、パフォーマンス向上に寄与しないばかりか、かえって問題を引き起こす可能性があるとされています。

そのため、一般的なユーザーは以下のコマンドでこのパッケージを削除することが推奨されています。

sudo apt-get purge irqbalance

実際の対応手順

Linuxシステムにおけるこの問題の根本的な対応策は、サービスの停止と削除です。

service irqbalance stop

サービス停止後、htop などでメモリ使用量を確認すると、メモリ消費が低下していることが確認できます。

その後、完全に削除するには:

sudo apt-get purge irqbalance

タグ: linux irqbalance cpu affinity performance tuning memory leak

5月20日 07:44 投稿