작업이 일시 중단 될 때 어떻게“동결 정지”할 수 있습니까?


17

어제 랩톱을 닫을 때 즉시 대기 모드로 전환되지 않았습니다. 로그에 따르면 시도했지만 동결 작업이 거부되었습니다.

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

시스템이 실제로 중단 될 때까지 몇 시간 동안 계속되었습니다. 은 syslog에서와 같은 메시지가 가득 찬 이 질문 때문에, systemd또 다시 시도했다.

어떻게 이런 일이 일어날 수 있습니까? 스케줄러가 해당 애플리케이션의 스케줄링을 중지 할 수없는 이유는 무엇입니까? 그리고 효과적으로 얼었나요? 나는 여러 STOP명령 이 있다는 것을 읽었으며 , 그중 하나는 멋지게 요구하고 그중 하나는 동결을 강제합니다. 왜 systemd이것을 사용 하지 않았거나 여기에서 작동하지 않습니까?

답변:


25

작업 중지는 커널 설명서 에 자세히 설명 되어 있습니다 .

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.