(Как) я могу поддерживать работоспособность своего ПК при высокой нагрузке?

Моя конкретная ситуация заключается в том, что я тренирую нейронные сети в системе, которую я также хотел бы использовать для другой работы. Во время обучения некоторых моделей мой компьютер иногда не отвечает в течение нескольких секунд, частота кадров даже относительно легких программ, таких как мой веб-браузер, становится невыносимо низкой, и это доходит до того, что компьютер практически не работает.

Раньше это не было большой проблемой, так как я работал с небольшими моделями, которые тренировались за 10 минут, в течение которых я мог просто сделать перерыв. Но теперь я столкнулся с проблемой, что у меня есть модели, которые мне нужно тренировать несколько дней, в течение которых мой компьютер практически не работает.

Желаемым поведением было бы то, что мои «нормальные» процессы, такие как использование моей IDE, текстового редактора или браузера, получили бы полный приоритет, в то время как задача обучения нейронной сети просто получила бы оставшееся вычислительное время.

Возможно ли это вообще в Ubuntu (я использую 20.04 LTS , если это имеет значение), и если да, то как?

2 ответа

Есть три варианта, которые я могу придумать навскидку:

  1. приятно ⇢ запускать программу с измененным приоритетом планирования
  2. renice ⇢ изменить приоритет уже запущенного процесса
  3. 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%, вы можете сделать что-то вроде этого:

  1. Использовать top, stop, glances, и/или psчтобы получить PID
  2. Вызов :
      cputool --cpu-limit 33 -p 9999 

Это ограничит PID 9999использовать только 33% ЦП.

Если у вас еще нет cputoolна вашем компьютере вы можете установить его с помощью:

      sudo apt install cputool

Надеюсь, это даст вам немного вычислительной мощности для работы.

Если вы запускаете процесс с терминала, вы можете использовать niceчтобы запустить его с более низким приоритетом (см. man nice). Если вы запустите его из графического интерфейса, вы можете использовать reniceизменить приоритет запущенного процесса.

Имейте в виду, что для снижения приоритета процесса вам нужно более высокое значение nice/renice.

Но в основном, в зависимости от того, что является узким местом (вы можете использовать topдля этого) решение обычно заключается в большем объеме памяти (RAM) и/или более быстром диске (возможно, SSD). Кроме того, если в системе мало оперативной памяти, более быстрый диск поможет увеличить скорость подкачки/подкачки.

Другие вопросы по тегам