Linuxでは、「INFO:ジョブXXXが120秒以上ブロックされました」とはどういう意味ですか?

Linuxでは、「INFO:ジョブXXXが120秒以上ブロックされました」とはどういう意味ですか?

私のカーネルログには次のメッセージがありますINFO: task XXX blocked for more than 120 seconds。これが技術的に何を意味するのか疑問に思います。カーネルはどのような条件下でタスクに関するメッセージを表示しますか?

記録上で私がブロックした作業はですがmultipathd、このエラーの一般的な意味にも興味があります。

答え1

ジョブがブロックされたら、リソースが再利用できるまで待ちます。

あなたの場合、IOの問題やディスク領域の競合があるかもしれません。または、システムの負荷が高すぎるため、タイムリーなタスクを完了するのに十分なCPUパフォーマンスがありません。

非常に忙しい時に作業を開始しようとすると、cronにこのエラーが表示されます。

答え2

デフォルトでは、このロギングは、CPUスケジューラが特定の時間内にプロセスに切り替えず、プロセスが例外条件を満たさない場合にトリガされます。

例外は、プロセスへの移行は発生しませんでしたが、プロセスを記録してはならない特別なケースです。例外条件は明確ではありません。コード内のこれらの条件の説明は次のとおりです。

Also, skip vfork and any other user process that freezer should skip.

Also, when a freshly created task is scheduled once, changes
its state to TASK_UNINTERRUPTIBLE without having ever been
switched out once, it musn't be checked.

check_hung_task()Linuxからhung_task.chttps://elixir.bootlin.com/linux/v5.12.12/source/kernel/hung_task.c#L92

ジョブが長い間予約されていない理由は、I / Oが完了するのを待っている間は常にTASK_UNINTERRUPTABLE( ' D'状態top)にある可能性がありますが、他の人はそうできないと思います。他に何を知ってください。

関連情報