すべてのプロダクト
Search
ドキュメントセンター

:Linuxオペレーティングシステムカーネルのライトバックプロセス中にソフトロックアップエラーが発生した場合はどうすればよいですか?

最終更新日:Aug 26, 2024

以前の特定のバージョンのLinuxカーネルがデータをファイルキャッシュに書き戻すと、ソフトロックアップエラーが発生します。 このトピックでは、問題の原因と解決策について説明します。

問題の説明

カーネルバージョンが4.15より前のLinux Elastic Compute Service (ECS) インスタンスでは、カーネルがデータをファイルキャッシュに書き戻すと、ソフトロックアップエラーが発生します。 以下のコンテンツと同様のコールスタック情報が生成されます。

説明

uname -rコマンドを実行して、Linuxカーネルのバージョンを確認できます。 たとえば、コマンド出力に3.10.0-514.26.2.el7.x86_64が表示されている場合、カーネルのバージョンは3.10.0です。 このトピックでは、4.15バージョンは4.15.0バージョンを指します。

[3507707.671883]  [<ffffffff8127cf7a>] redirty_tail+0x3a/0x40
[3507707.671884]  [<ffffffff81280ea4>] __writeback_inodes_wb+0x64/0xc0
[3507707.671885]  [<ffffffff81281238>] wb_writeback+0x268/0x300
[3507707.671887]  [<ffffffff812819f4>] wb_workfn+0xb4/0x380
[3507707.671889]  [<ffffffff810a5dc9>] process_one_work+0x189/0x420
[3507707.671890]  [<ffffffff810a625b>] worker_thread+0x1fb/0x4b0
[3507707.671891]  [<ffffffff810a6060>] ? process_one_work+0x420/0x420
[3507707.671893]  [<ffffffff810ac696>] kthread+0xe6/0x100
[3507707.671894]  [<ffffffff810ac5b0>] ? kthread_park+0x60/0x60
[3507707.671897]  [<ffffffff81741dd9>] ret_from_fork+0x39/0x50

原因

ECSインスタンスのメモリが不足している場合、オペレーティングシステムカーネルはwakeup_flusher_threads関数を頻繁に呼び出します。 次に、多数のライトバックタスク (wb_writeback_work) が作成されます。 その結果、ライトバックスレッドはライトバックタスクを処理し続け、オペレーティングシステム上でソフトロックアップエラーが発生する。

解決策

カーネルを4.15以降のバージョンに更新します。 Alibaba Cloud Linuxオペレーティングシステムのカーネルバージョンは4.19であるため、この問題は発生しません。 次のソリューションは、Alibaba Cloud Linuxオペレーティングシステム以外のLinuxディストリビューションに適用されます。

重要

問題が発生したLinuxインスタンスでソリューションの操作を実行する前に、Linuxインスタンスのスナップショットを作成してデータをバックアップすることを推奨します。 これにより、偶発的な操作によるデータの損失を防ぎます。 スナップショットの作成方法については、「ディスクのスナップショットの作成」をご参照ください。

  1. Linuxインスタンスに接続します。

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

  2. 次のコマンドを実行して、オペレーティングシステムのカーネルバージョンを表示します。

    uname -r
  3. カーネルバージョンが4.15以前の場合は、次のコマンドを実行してカーネルバージョンを更新します。

    カーネルのバージョンが4.15以降の場合、オペレーティングシステムではソフトロックアップエラーは発生しません。 後続の操作を実行する必要はありません。

    yum update kernel
    説明

    yum update kernelコマンドを実行して以前の特定のカーネルバージョンを更新できない場合は、4.15以降のバージョンのカーネルRPMパッケージをダウンロードし、カーネルRPMパッケージを使用してカーネルバージョンをアップグレードします。

  4. カーネルバージョンを更新した後、インスタンスを再起動します。

    reboot
  5. インスタンスを再起動した後、次のコマンドを再実行して、カーネルのバージョンが4.15以降かどうかを確認します。

    uname -r