Ограничьте использование памяти командами терминала (ранее - использование ЦП) [дубликат]

У меня есть двоичный файл, который я хочу запустить в терминале, но если я его запустил, он быстро начнет использовать 100% обоих процессоров, 100% памяти и весь Linux замораживание через несколько секунд. Также у меня нет исходного кода (чтобы успокоить его прямо изнутри). Я много гуглил, нашел и попробовал два возможных решения:

  1. nice - буквально ничего не делает, двоичный файл по-прежнему использует 100% обоих процессоров и 100% памяти быстро после того, как я его запустил
  2. ulimit -v вызывает сбой двоичных и даже некоторых других команд (например, git) и выдаёт некоторую ошибку

Есть ли какие-нибудь простое решение для ограничения использования ЦП или памяти этим двоичным файлом и позволить ему использовать, например, только один ЦП или 50% обоих ЦП или только небольшой объем памяти? Я представляю себе что-то вроде этого:

user@linux:~$ magical_command --limitmemory 1M --command mybinary

или:

user@linux:~$ magical_command --cpu both --limitcpu 50% --command mybinary

или:

user@linux:~$ magical_command --cpu one --limitcpu 100% --command mybinary

Обновление: Из комментариев ниже похоже, что это вызвано памятью, а не перегрузкой процессора, поэтому я отредактировал вопрос, но все же рекомендую ответ @dbkeys для тех, кто ищет волшебную команду, ограничивающую процессор.

Обновление 2: Как указано в комментариях ниже: если я перезапускаю свой ноутбук и запускаю только терминал и этот двоичный файл с терминала, ничего больше, мой ноутбук значительно замедляется, мышь и клавиатура работают с задержками или рывками. Но двоичный файл работает часами (большую часть времени загружает и компилирует зависимости), поэтому я открываю Chrome и делаю еще кое-что. Если я открываю Chrome и позволяю двоичному файлу работать в фоновом режиме, весь Linux вообще зависает и ничего, даже мышь не реагирует. Мне нужно нажать кнопку выключения в течение 5 секунд до полного выключения. Но я не могу просто запустить его и уйти, я хочу поработать над другими вещами, поэтому я хочу как-то ограничить, возможно, и этот двоичный файл, и Chrome.

1
задан 24 October 2016 в 16:44

1 ответ

taskset, мог бы быть 'magical_command', который Вы ищете. Согласно его странице справочника:

"... taskset используется, чтобы установить или получить привязку ЦП рабочего процесса, учитывая его pid или запустить новую команду с данной привязкой ЦП. Привязка ЦП является свойством планировщика, которое "связывает" процесс с данным набором центральных процессоров в системе. Планировщик Linux будет соблюдать данную привязку ЦП, и процесс не будет работать ни на каких других центральных процессорах".

Это ограничило бы mybinary для работы первых двух ядер:

taskset --cpu-list 0,1 mybinary

, К сожалению, я не вижу параметр в taskset, который также ограничил бы, какой % времени ЦП Вы хотите выделить его для выполнения mybinary.

2
ответ дан 7 December 2019 в 13:40

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

Похожие вопросы: