Linux Labs

Система изнутри: ресурсы, ядро, процессы / Ступень 1 из 12

Load average и загрузка процессора

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 3 из 7 · на машине · 6 мин

Процессы в состоянии D

Найди процессы, которые держат load average высоким при свободном процессоре, и попробуй завершить их сигналом.

Упражнение · посмотреть

Завершить процессы в D

Найди процессы в состоянии D, отправь процессам tar сигнал KILL и посмотри на них ещё раз.

Сначала предположи

Что покажет ps -o stat,pid,cmd -C tar после sudo pkill -9 -x tar?

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

Войти и начать Машина доступна после входа

В состояние D (непрерывный сон, uninterruptible sleep) процесс попадает внутри ядра, когда ждёт, пока закончится операция с диском или файловой системой. Прервать её на середине нельзя — данные остались бы записанными наполовину. Поэтому сигнал, даже SIGKILL, ядро доставит процессу только после ожидания. pkill -9 ты отправил, но tar остались в D: сигнал ждёт своей очереди.

Обычно D длится доли секунды, и в ps его почти не видно. Долгое D значит, что застряло само хранилище: диск отвечает медленно, пропал сетевой диск или файловая система заморожена. Здесь — последнее. Программа снимков диска заморозила запись в /srv/backup командой fsfreeze -f, чтобы снимок получился целым, и не разморозила. Каждый процесс, который пишет туда, встаёт в D.

Разморозь файловую систему и посмотри на процессы снова:

bash
sudo fsfreeze -u /srv/backup
ps -eo stat,pid,cmd | grep '^D'

Список пуст: ожидание кончилось, и tar получили свой SIGKILL. А load average будет спадать ещё несколько минут — это среднее.

Ubuntu 24.04
Загрузка…