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()리눅스 에서 hung_task.c) https://elixir.bootlin.com/linux/v5.12.12/source/kernel/hung_task.c#L92

작업이 오랫동안 예약되지 않는 이유는 I/O가 완료되기를 기다리는 동안 지속적으로 TASK_UNINTERRUPTABLE (' D' 상태 top)에 있을 가능성이 있지만 다른 사람은 그럴 수 없다고 생각합니다. 그 밖의 무엇을 알아라.

관련 정보