Linuxで「情報:タスクXXXが120秒以上ブロックされました」とはどういう意味ですか?


14

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

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

回答:


13

タスクがブロックされると、リソースが再び利用可能になるのを待ちます。

あなたのケースでは、ディスク領域にIO問題または競合のいずれかが適切にありました。または、システムの負荷が非常に高かったため、時間内にジョブを完了するのに十分なCPUパワーがありませんでした。

非常に忙しい時間にジョブを開始しようとすると、cronからこのエラーが表示されます。


もっと具体的に教えてください。「ブロックされた」とは、「継続的に中断できない状態」を意味しますか?
トーター

@Totorこのコンテキストでは、リソースを待機しています。したがって、他のioは中断できません。
ニルス

7

基本的に、このロギングは、CPUスケジューラが指定された時間内にプロセスに切り替えられず、プロセスが例外の対象にならない場合にトリガーされます。

例外は、プロセスが切り替えられていないが、ログに記録されるべきではない特別なケースです。例外の条件を明確に理解していません。FWIWコード内のケースに関するコメントは次のとおりです。

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.

http://lxr.free-electrons.com/source/kernel/hung_task.c#L75

タスクが長時間スケジュールされない理由については、TASK_UNINTERRUPTABLE( 'D'状態)で継続的にタスクを実行することが1つの可能性ですが、他にどんなタスクがあるかはわかりません。


おそらく関連するバグ:ハスウェルプロセッサ上のLinux 3.14から3.17 -プロセスがFUTEX_WAITにハングアップすることができます- groups.google.com/d/msg/mechanical-sympathy/QbmpZxp6C64/...を
rakslice
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.