以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

Low LatencyなカスタムカーネルでのBUG祭りの原因がわかったが…

f:id:abyssluke:20160821141634p:plain:w200:left何気にUbuntu純正のlowlatencyカーネルをインストールし、そのconfigファイルとカスタムカーネルのconfigファイルを比較した所、CONFIG_DEBUG_PREEMPTが純正側にはセットされていなく、その設定の説明を調べたところこんなことが書いてあった。

If you say Y here then the kernel will use a debug variant of the commonly used smp_processor_id() function and will print warnings if kernel code uses it in a preemption-unsafe way. Also, the kernel will detect preemption count underflows.

なるほど。BUGメッセージが出まくる原因ってそういうことだったのか。解決。

とりあえず、意図的に変えた設定以外は純正カーネルの設定に合わせて再ビルドした。

意図的に変えた設定:

  • ローカルバージョンを"-core2-lowlatency"にセット
  • ビルドを最適化してサイズを削減するようコンパイラにセット
  • Core 2/Xeon向けにビルド
  • Centaur製CPUのサポート無効化
  • IBM Calgary IOMMUのサポート無効化
  • Dell Inspiron 8000シリーズのサポート無効化
  • アマチュア無線のサポート無効化
  • HD Audioのバッファを2048に増強(自分の環境では意味ないと思うが)
  • ※タイマー周波数1000Hzは純正カーネルにもセットされていた

…が、いざ使ってみると突然フリーズするなどの怪奇現象*1が起きたりしたので一旦純正genericカーネルに戻して様子見中。カーネルコードがアカン*2のか、どっかのオプション*3がアカンのか、それとも…。

そういえばGRUBメニューが呼び出せてもなんかおかしいとか書いていたが、Shift押しっぱなしでメニューを出すと操作できないようで、Esc押しっぱなしでメニューを出すと正常に操作できる模様。

*1:例:マウス操作がカクカクしたり受け付けない、キーボード入力の反応がおかしくなる、ハードディスクへのアクセスが突然止まる(マウス、キーボード操作などはできる)、Magic SysRqキーで強制sync掛けても終わらずにカーネルパニック

*2:WilyカーネルまではLow LatencyかつCONFIG_DEBUG_PREEMPTがセットされた状態でもBUG祭りにはならなかった

*3:CONFIG_IRQ_FORCED_THREADING_DEFAULTとかCONFIG_CC_OPTIMIZE_FOR_SIZE(これはあまり関係なさそう?)とか…