Як завдання можуть «відмовитися від замерзання» під час призупинення?


17

Вчора, закриваючи мій ноутбук, він не відразу перейшов у режим очікування. Згідно з журналами, це намагалися, але завдання відморозилися:

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

Це тривало кілька годин, поки система фактично не призупинилася. syslogБула повна повідомлень , як в цьому питанні , тому що systemdнамагався знову і знову.

Як це може статися? Чому планувальник не може просто припинити планувати цю програму? і тоді він фактично заморожений? Я прочитав, що є кілька STOPкоманд, одна з них гарно запитує, а одна з них змушує заморозити. Чому цього systemdне використали чи чому це не працювало тут?

Відповіді:


25

Замороження завдань детально задокументовано в документації на ядро .

Процеси простору користувача не можуть відмовитись від заморозки; вони заморожуються, але сигналізація між ядром та процесами обробляється автоматично за допомогою коду обробки сигналу (для заморожування використовується підроблений сигнал).

Якщо ви бачите повідомлення "завдання, які відмовляються заморожувати", це означає, що потік ядра відмовляється заморожувати, як правило, тому, що він робить щось, що неможливо перевірити. Однак чекати кілька годин, щоб ядро ​​призупинилося, не нормально; сліди стеків у повідомленнях журналу допоможуть зрозуміти, що відбувається не так.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.