web-dev-qa-db-ja.com

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

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

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

14
Totor

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

あなたの場合、おそらくディスク領域にIO問題または競合がありました。または、システム負荷が高すぎて、ジョブを間に合わせるのに十分なCPUパワーがありませんでした。

非常に忙しい時間にジョブを開始しようとした場合、cronからこのエラーが発生しました。

13
Nils

基本的に、このロギングは、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'状態)になる可能性がありますが、他に何があるのか​​わかりません。

7
rakslice