일시 중단된 작업이 어떻게 "동결을 거부"할 수 있습니까?

일시 중단된 작업이 어떻게 "동결을 거부"할 수 있습니까?

어제 노트북을 껐을 때 바로 대기 모드로 들어가지 않았습니다. 로그에 따르면 시도 중이지만 작업이 정지되지 않습니다.

Freezing of tasks failed after 20.005 seconds (1 tasks refusing to freeze, wq_busy=0):

이는 시스템이 실제로 일시 중지될 때까지 몇 시간 동안 계속되었습니다. syslog이런 메시지들 로 가득 차 있어요이 문제, 왜냐하면 systemd나는 노력해 왔기 때문입니다.

어떻게 이런 일이 일어날 수 있습니까? 스케줄러가 애플리케이션 예약을 중지할 수 없는 이유는 무엇입니까? 그러면 사실상 동결되었나요? 여러 명령이 있다는 것을 읽었습니다 STOP. 그 중 하나는 잘 묻는 명령이고, 그 중 하나는 강제로 정지되는 명령입니다. 왜 systemd이것을 사용하지 않거나 여기서는 작동하지 않습니까?

답변1

작업 동결은 잘 문서화되어 있습니다.커널 문서에서.

사용자 공간 프로세스는 동결을 거부할 수 없습니다. 동결되지만 커널과 프로세스 사이의 신호는 신호 처리 코드에 의해 자동으로 처리됩니다(정지는 잘못된 신호를 사용함).

"작업 정지 거부" 메시지가 표시되면 커널 스레드가 정지를 거부했음을 의미합니다. 일반적으로 검사점을 지정할 수 없는 작업을 수행하고 있기 때문입니다. 그러나 커널이 중단될 때까지 몇 시간을 기다려야 하는 것은 정상이 아닙니다. 로그 메시지의 스택 추적은 무엇이 잘못되었는지 이해하는 데 도움이 됩니다.

관련 정보