Что именно означает «INFO: задача XXX заблокирована более чем на 120 секунд» в Linux?

14

Я имел это сообщение в моем журнале ядра: INFO: task XXX blocked for more than 120 seconds. Я хотел бы знать, что это означает технически: при каких условиях ядро ​​отображает это сообщение о задаче?

Кстати, моя заблокированная задача была multipathd, но меня также интересует общее значение этой ошибки.

Totor
источник

Ответы:

13

Если задача заблокирована, она ждет, когда ресурсы снова станут доступными.

В вашем случае, вероятно, возникла проблема с вводом-выводом или конфликт в области диска. Или ваша системная нагрузка была настолько высокой, что не хватало мощности процессора, чтобы выполнить работу вовремя.

Я видел эту ошибку от cron, если он пытается начать работу в очень напряженное время.

Nils
источник
Можете быть более конкретными? Означает ли «заблокированный» «постоянно в непрерывном состоянии»?
Тотор
@Totor В этом контексте он ждет ресурсов. Так что другие ио не прерываются.
Нильс
7

По сути, это ведение журнала запускается, если планировщик ЦП не переключился на процесс в течение заданного промежутка времени и процесс не может быть исключен.

Исключения составляют особые случаи, когда процесс не был переключен, но в него не нужно входить. Я не совсем понимаю условия для исключений; 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'), но я не знаю, какие могут быть другие.

rakslice
источник
Возможно, существенная ошибка: Linux 3.14-3.17 на процессорах Haswell - процессы могут зависать на futex_wait - groups.google.com/d/msg/mechanical-sympathy/QbmpZxp6C64/…
rakslice