デフォルトのSLES11 SP2カーネルを使用したときにI / O関連のパフォーマンスの問題が見つかりました。同じハードウェア(もちろん古代SLES9 SP3)の同じアプリケーションには問題はありません。
これはカーネルと関係があると考えており、これまでに次の実験を行いました。
- kernel.org
3.0.13
ソースツリーをダウンロードし、解凍します。 - Novell
kernel-source-3.0.13-0.27.1
ソフトウェアパッケージがインストールされました。これは、3.0.13
すべてのNovellパッチ/調整が適用されたソースです。 - デフォルトの設定ファイルはツリーに
3.0.13
作成され、このファイルはハードウェアに必要なドライバコントローラとネットワークカードドライバを開き、カーネルを構築するためにmake x86_64_defconfig
使用されます。make menuconfig
このカーネルにはno
パフォーマンスの問題があります。 - ツリーでは、
3.0.13-0.27.1
Novellがコンパイルされたカーネルと一緒に提供され、それを使用して構築された設定ファイルを取得し、Novellがコンパイルされたカーネルと同じパフォーマンス問題に直面しました。 - ツリーで
3.0.13-0.27.1
(3)で使用されている設定ファイルをインポートし、それを使用してビルドします(コンストラクタのNovellバージョンが追加する追加の設定デフォルトを受け入れます)。持ついいえパフォーマンスの問題。 3.0.13
ツリーで(4)で使用されている設定ファイルをインポートしてビルドします(見つからないファイルのNovell設定オプションのみが見つかりません)。持ついいえパフォーマンスの問題。- ツリーで
3.0.13-0.27.1
(4)で使用されているプロファイルをインポートし、デバイスドライバ(他はありません)が(3)のプロファイルと一致するようにします(つまり、まだ使用されていない多数のデバイスドライバをオフにします)。持ついいえパフォーマンスの問題。
したがって、kernel.org3.0.13
ツリーにはパフォーマンスの問題はありません。3.0.13-0.27.1
Novellのツリーの問題は、Novellの構成ファイルまたはNovellの構成ファイルと同じですが、ほとんどのデバイスドライバが構成解除されたファイルを使用して構築されている場合にのみ発生します。
これを考慮すると、問題を引き起こすNovell専用の設定オプション(および暗黙的に有効になっているNovellコード)があるか、Novellパッチといくつかの標準オプションとの間に間違った対話があるようです(可能な限り近いと仮定)。 -to -Novell's-configが実行します。いいえソースkernel.orgソースコードをビルドすると問題が発生します。
調査を続けている間、私はカーネルハッカーではないので(カーネルを構築する方法を知っていますが、それはすべてです)、最も注目すべき構成オプション「シリーズ」が何であるかを知りたいです。アイデアは、「Novell」設定から「kernel.org」設定にいくつかのオプションを変更し、問題が消えていることを確認し、リセットして別の設定を試すことです。
しかし、範囲を狭くしたいので、どの構成オプションを最初に使用するのが良いか問題になります。
答え1
私たちは問題を解決しました! 「良い」カーネルと「悪い」カーネルとの間の構成オプションの違いの準バイナリ検索を行った結果、SLES11がデフォルトで書き込みバリアをオンにしてext3
問題が発生したことがわかりました。デフォルトでは、オフの書き込みバリアで構築されたカーネルはそうします。いいえ問題があります。問題のあるカーネルを使用してbarrier=0
マウントオプションをに入れると/etc/fstab
、問題は消えました。