В тот момент, когда я блокирую свой компьютер, вентиляторы начинают очень шумно, что означает, что должен быть какой-то процессор / Нагрузка на GPU за кадром.
Я сказал себе, что мне нужно знать, какой процесс это делает, поэтому я создал этот сценарий аудита, используя top
и awk
, что в основном занимает * .csv
имя файла в качестве входных данных и каждую секунду записывает туда 10 наиболее требовательных процессов.
#!/bin/bash
SLEEP_SECS=1
DESTFILE="$1"
if ! [[ "${DESTFILE}" =~ \.csv$ ]]; then
echo "Please provide name of a destination .csv file!"
exit 1
fi
if ! test -f "${DESTFILE}"; then
echo "Seconds;PID;User;% CPU;Process Name" > "${DESTFILE}" || exit $?
fi
while true; do
top -b -o %CPU -n1 | \
tail -n +8 | \
head -10 | \
awk '{print systime() ";" $1 ";" $2 ";" $9 ";" $12}' \
>> "${DESTFILE}" || exit $?
echo -n .
sleep "${SLEEP_SECS}"
done
Итак, я запустил сценарий и заблокировал экран, фанаты стали очень шумными, я немного подождал, снова вошел в систему, фанаты замолчали (как будто они знали, что я не хочу, чтобы они шумели, когда я ничего не делал с ПК: D) и я изучил процессы, которые использовали более 50% ЦП с помощью этой команды:
gawk --use-lc-numeric -F';' '{if($4 > 50) {print $0}}' cpu-audit.csv
Вот что я обнаружил:
# The header wasn't there OFC, I'm including it just for the convenience
Seconds ; PID; User ;% CPU;Process Name
1566804437;2496;jirislav;106,7;gnome-shell
1566804438;2496;jirislav;106,7;gnome-shell
1566804439;2496;jirislav;100,0;gnome-shell
1566804440;2496;jirislav;100,0;gnome-shell
1566804442;2496;jirislav;93,8;gnome-shell
1566804443;2496;jirislav;100,0;gnome-shell
1566804444;2496;jirislav;100,0;gnome-shell
1566804445;2496;jirislav;100,0;gnome-shell
1566804446;2496;jirislav;106,7;gnome-shell
1566804449;2496;jirislav;131,2;gnome-shell
1566804449;17446;jirislav;68,8;nautilus
Какой сюрприз, gnome-shell
требовал столько ресурсов? Что за ...?! Я даже не использую его, я использую терминатор
постоянно. Итак, я провел аудит терминала с помощью ps
, но он не обнаружил использования, как top
, почему бы и нет? Я даже перечисляю все дочерние процессы:
$ while true; do ps fu --ppid 2496 --pid 2496; sleep 1; done
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
jirislav 2496 7.3 2.2 2949284 357176 tty2 Rl+ 08:49 3:02 /usr/bin/gnome-shell
jirislav 2522 0.7 0.0 322108 8800 tty2 Sl 08:49 0:18 \_ ibus-daemon --xim --panel disable
jirislav 3239 1.2 0.4 855328 67956 tty2 Sl+ 08:49 0:30 \_ /usr/bin/python3 /usr/bin/terminato
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
jirislav 2496 7.3 2.2 2949284 356820 tty2 Sl+ 08:49 3:02 /usr/bin/gnome-shell
jirislav 2522 0.7 0.0 322108 8800 tty2 Sl 08:49 0:18 \_ ibus-daemon --xim --panel disable
jirislav 3239 1.2 0.4 855328 67956 tty2 Sl+ 08:49 0:30 \_ /usr/bin/python3 /usr/bin/terminato
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
jirislav 2496 7.3 2.2 2949284 356820 tty2 Rl+ 08:49 3:03 /usr/bin/gnome-shell
jirislav 2522 0.7 0.0 322108 8800 tty2 Sl 08:49 0:18 \_ ibus-daemon --xim --panel disable
jirislav 3239 1.2 0.4 855328 67956 tty2 Sl+ 08:49 0:30 \_ /usr/bin/python3 /usr/bin/terminato
Я сказал достаточно, давайте удалим gnome-shell
, я даже не использую его, зачем позволять ему потреблять ресурсы и запускать шумные вентиляторы без моего согласия ? .. Потом меня осенило, gnome-shell
нельзя удалить без удаления ubuntu-desktop
- давайте оставим в стороне вопрос, почему существует эта странная зависимость, которая не имеет смысла (он может использовать любой другой терминал) - я бродил по этому поводу - что делает Ubuntu, пока мой сеанс заблокирован, и могу ли я выключить это ?
Когда я на встрече, это действительно неудобно.
Я знаю о вопросе Ubuntu 18.04 gnome-shell высокая загрузка процессора , но ни одно из предложенных решений не работает (не то, чтобы я даже ожидал, что они сработают, потому что проблема в том, что моя gnome-shell
использует слишком много ресурсов только тогда, когда Я блокирую компьютер - не когда использую его, как описано в связанном вопросе)
У меня была такая же проблема. Похоже, это ошибка драйвера nVidia. Проблема исчезла после того, как я установил последнюю версию драйвера nVidia с открытым исходным кодом:
sudo apt install nvidia-driver-455