Как выполнить нагрузку на ЦП / диск без существенного влияния на другие процессы?

Я использую сервер на Ubuntu 12.04. Я пытаюсь выполнить операцию git clone, как часть новой системы резервного копирования, которую я внедряю. Источник и назначение оба локальные, поэтому в клоне нет сетевой активности.

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

Вот команда, которая, я был уверен, сработает:

nice -n 19 ionice -c 3 git clone bukkit backup

Из того, что я прочитал, это должно дать процессу наименьший приоритет ЦП и приоритет "только для бездействия" диска. Тем не менее, он по-прежнему имеет тот же эффект блокировки и тайм-аута всех, кто подключен к серверу Minecraft. Для ясности, репозиторий git не находится в папке активного сервера, поэтому нет никакого конфликта доступа к файлу.

Я могу дать подробную информацию о технических характеристиках оборудования, если это необходимо. Благодарю.

2 ответа

В основном мы не пытаемся запускать процессы параллельно, но видим, что использование системы настолько мало, насколько это возможно
Поэтому сначала вам нужно будет найти время, когда на вашем сервере нет (или, может быть, только несколько), например, понедельник в 2 часа.

Чтобы запустить команду один раз в будущем, вы используете atd (at-daemon):

$ at 0200 monday
     /home/your_home/name_of_the_script.sh
<Ctrl-D>

для получения дополнительной информации читайте man at а также man atd, не забудьте выйти из ввода, используя Ctrl+D

  • Убедитесь, что ваш скрипт действителен + исполняемый!

Если вы работаете с экземпляром Amazon EC2, где вы можете использовать 100% ЦП только для коротких промежутков времени (пакетов) с принудительным средним использованием (например, 20% виртуального ЦП), вам также следует ограничить общее использование ЦП вашего процесс с cpulimit, В противном случае вы будете использовать все кредиты ЦП, и ваш экземпляр будет ограничен. Учебник можно найти здесь.

РЕДАКТИРОВАТЬ: Кажется, что нет сети участвует. Если бы они были, вы также можете попробовать формирователь трафика для каждого процесса:

Здесь можно найти пару хороших предложений, самые простые из них:

  • С помощью trickle, Здесь и здесь есть две хорошие статьи о том, как его использовать. Корень не нужен.
  • С помощью iptables с --pid-owner флаг
Другие вопросы по тегам