CONFIG_PARAVIRT_SPINLOCK は、スピンロックに準仮想化レイヤーを追加する Linux カーネルオプションです。Alibaba Cloud Linux では、このオプションはデフォルトで無効になっています。リスクが不明な場合は、有効にしないでください。このドキュメントでは、Elastic Compute Service (ECS) インスタンスで CONFIG_PARAVIRT_SPINLOCK を有効にするとパフォーマンスが低下する理由と、その確認方法および無効化方法について説明します。
問題の説明
複数の vCPU を搭載した ECS インスタンスで CONFIG_PARAVIRT_SPINLOCK を有効にすると、アプリケーションがロックを激しく競合する場合に、アプリケーションのパフォーマンスが大幅に低下します。例えば、NGINX が短時間接続を処理する際のスループットが著しく低下します。
原因
CONFIG_PARAVIRT_SPINLOCK を有効にすると、追加のオーバーヘッドが発生し、カーネルのスピンロックメカニズムが複雑になるため、カーネルのパフォーマンスが低下します。
スピンロックは、複数のスレッドやプロセスが共有リソースに同時にアクセスするのを防ぐ同期メカニズムであり、データ整合性の確保に役立ちます。
ソリューション
ステップ 1: CONFIG_PARAVIRT_SPINLOCK が有効かどうかの確認
次のコマンドを実行して、カーネル構成を確認します:
grep CONFIG_PARAVIRT_SPINLOCK /boot/config-$(uname -r)出力の意味は次のとおりです:
| 出力 | 意味 |
|---|---|
CONFIG_PARAVIRT_SPINLOCKS=y | オプションは有効です |
CONFIG_PARAVIRT_SPINLOCKS is not set | オプションは無効です — 操作は不要です |
オプションが無効な場合は、ここで終了します。有効な場合は、ステップ 2 に進みます。
ステップ 2: オプションを無効にしてカーネルを再コンパイル
カーネル構成の変更とカーネルの再コンパイルには、低レベルのシステムコンポーネントが関わります。カーネルのコンパイルやインストールに不慣れな場合は、先に進む前に、して Alibaba Cloud テクニカルサポートにご連絡ください。
CONFIG_PARAVIRT_SPINLOCK を無効にして、カーネルを再コンパイルおよび再インストールします。