(Как) я могу поддерживать работоспособность своего ПК при высокой нагрузке?
Моя конкретная ситуация заключается в том, что я тренирую нейронные сети в системе, которую я также хотел бы использовать для другой работы. Во время обучения некоторых моделей мой компьютер иногда не отвечает в течение нескольких секунд, частота кадров даже относительно легких программ, таких как мой веб-браузер, становится невыносимо низкой, и это доходит до того, что компьютер практически не работает.
Раньше это не было большой проблемой, так как я работал с небольшими моделями, которые тренировались за 10 минут, в течение которых я мог просто сделать перерыв. Но теперь я столкнулся с проблемой, что у меня есть модели, которые мне нужно тренировать несколько дней, в течение которых мой компьютер практически не работает.
Желаемым поведением было бы то, что мои «нормальные» процессы, такие как использование моей IDE, текстового редактора или браузера, получили бы полный приоритет, в то время как задача обучения нейронной сети просто получила бы оставшееся вычислительное время.
Возможно ли это вообще в Ubuntu (я использую 20.04 LTS , если это имеет значение), и если да, то как?
2 ответа
Есть три варианта, которые я могу придумать навскидку:
- приятно ⇢ запускать программу с измененным приоритетом планирования
- renice ⇢ изменить приоритет уже запущенного процесса
- cputool ⇢ чтобы ограничить объем использования ЦП, к которому может получить доступ процесс
Вариант 1 — красиво
Это простой инструмент, который встроен практически в каждую версию Linux, выпущенную с 90-х годов, и позволяет вам устанавливать приоритет (приятность) процесса. Доступно 40 значений в диапазоне от
-20
(Главный приоритет! Все остальное ждет!)
20
(Это может подождать).
Чтобы установить приятность процесса, вы можете использовать этот синтаксис:
nice -n niceness-value [command args]
Так, например, если вы собираетесь
gzip
сжать массивный файл, но его не нужно заканчивать как можно скорее, вы можете сделать это:
sudo nice -n 10 gzip -9 really_big_database_export.sql
Это установит приятность на
10
, что довольно далеко в стеке.
Вариант 2 — ренис
Это позволяет изменить приоритет уже запущенного процесса:
renice -n -15 -p 9999
-n
это приятность и
-p
это идентификатор процесса или PID. Вы можете найти PID ваших процессов, используя ,
htop
, , и/или
ps -eo pid,ppid,ni,comm
. Есть много инструментов, чтобы показать это число.
Вариант 3 — процессор
Этот немного отличается от
nice
а также
renice
в том, что он позволяет указать ресурсы, доступные для уже запущенного процесса. Например, если вы обнаружите, что ваше моделирование слишком часто загружает ЦП на 100%, вы можете сделать что-то вроде этого:
- Использовать
top
,stop
,glances
, и/илиps
чтобы получить PID - Вызов :
cputool --cpu-limit 33 -p 9999
Это ограничит PID
9999
использовать только 33% ЦП.
Если у вас еще нет
cputool
на вашем компьютере вы можете установить его с помощью:
sudo apt install cputool
Надеюсь, это даст вам немного вычислительной мощности для работы.
Если вы запускаете процесс с терминала, вы можете использовать
nice
чтобы запустить его с более низким приоритетом (см.
man nice
). Если вы запустите его из графического интерфейса, вы можете использовать
renice
изменить приоритет запущенного процесса.
Имейте в виду, что для снижения приоритета процесса вам нужно более высокое значение nice/renice.
Но в основном, в зависимости от того, что является узким местом (вы можете использовать
top
для этого) решение обычно заключается в большем объеме памяти (RAM) и/или более быстром диске (возможно, SSD). Кроме того, если в системе мало оперативной памяти, более быстрый диск поможет увеличить скорость подкачки/подкачки.