Ограничение определенных процессов к % ЦП - Linux

31
задан easwee 6 January 2015 в 08:38
поделиться

9 ответов

Я действительно не вижу, почему Вы хотите ограничить процессорное время... необходимо ограничить общую нагрузку на той машине, и загрузка определяется операциями IO главным образом. Исключая: если я создам некоторое время (1) {} цикл, то это получит общую нагрузку к 1,0, но если этот цикл делает некоторые записи на диск переходы загрузки к 2,0... 4.0. И это что, уничтожая Вашу машину, не использование ЦП. Использование ЦП может быть легко обработано nice/renice.

Так или иначе, Вы могли сделать сценарий, который делает, 'уничтожают-SIGSTOP PID' для определенного PID, когда загрузка становится слишком высокой, и уничтожьте-SIGCONT, когда все возвращается к нормальному... PID может быть определен при помощи 'пкс aux' команда, потому что я вижу, что это отображает использование ЦП, и необходимо смочь отсортировать список с помощью того столбца. Я думаю это, все это могло быть сделано в ударе...

-1
ответ дан 27 November 2019 в 22:14
поделиться

Вы могли уменьшить масштаб частоты ЦП. Затем Вы не должны волноваться об отдельных процессах. Когда Вы нуждаетесь в большем количестве CPU, сокращаете частоту.

-1
ответ дан 27 November 2019 в 22:14
поделиться

Бросок некоторых вызовов сна там должен вызвать процесс от ЦП в течение определенного времени. Если Вы спите 30 секунд однажды минута, Ваш процесс не должен составлять в среднем больше чем 50%-е использование ЦП в течение той минуты.

0
ответ дан 27 November 2019 в 22:14
поделиться

Это может быть сделано с помощью setrlimit (2) (конкретно параметром установки RLIMIT_CPU).

0
ответ дан 27 November 2019 в 22:14
поделиться

хороший команда, вероятно, поможет.

0
ответ дан 27 November 2019 в 22:14
поделиться

PS + GREP + ХОРОШИЙ

1
ответ дан 27 November 2019 в 22:14
поделиться

Почему ограничивают процент ЦП, когда можно просто скорректировать приоритет процесса с помощью renice? Используя renice и установку низкого приоритета позволяет процессу все еще использовать 100% процессора, если это доступно, но любой другой процесс с более высоким приоритетом получит процесс, когда этому будет нужен он почти ни с какой значимой задержкой.

6
ответ дан 27 November 2019 в 22:14
поделиться

Я не помню и не думаю, что в планировщике Unix было что-то вроде этого. Вам нужно немного программы, которая управляет другим процессом и делает следующее:

loop
    wait for some time tR
    send SIGSTOP to the process you want to be scheduled
    wait for some time tP
    send SIGCONT to the process.
loopEnd

отношение tR/tP управляет загрузкой ЦП.

<час>

Вот немного подтверждения концепции. "занятый" программа, которая израсходовала Ваше процессорное время и которая Вы хотите быть вниз замедленными "замедлением":

> cat > busy.c:
    main() { while (1) {}; }

> cc -o busy busy.c
> busy &
> top

Tasks: 192 total,   3 running, 189 sleeping,   0 stopped,   0 zombie
Cpu(s): 76.9% us,  6.6% sy,  0.0% ni, 11.9% id,  4.5% wa,  0.0% hi,  0.0% si
Mem:   6139696k total,  6114488k used,    25208k free,   115760k buffers
Swap:  9765368k total,  1606096k used,  8159272k free,  2620712k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
26539 cg        25   0  2416  292  220 R 90.0  0.0   3:25.79 busy
...

> cat > slowDown
while true; do
 kill -s SIGSTOP $1
 sleep 0.1
 kill -s SIGCONT $1
 sleep 0.1
done

> chmod +x slowDown
> slowDown 26539 &
> top
Tasks: 200 total,   4 running, 192 sleeping,   4 stopped,   0 zombie
Cpu(s): 48.5% us, 19.4% sy,  0.0% ni, 20.2% id,  9.8% wa,  0.2% hi,  2.0% si
Mem:   6139696k total,  6115376k used,    24320k free,    96676k buffers
Swap:  9765368k total,  1606096k used,  8159272k free,  2639796k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
26539 cg        16   0  2416  292  220 T 49.7  0.0   6:00.98 busy
...
<час>

хорошо, для того сценария нужна еще некоторая работа (например, чтобы заботиться о том, чтобы быть INTR-upted и позволить управляемому процессу продолжиться в случае, если это было остановлено в тот момент), но Вы понимаете. Я также записал бы, что мало сценария в C или подобный и вычисляет отношение CPU из аргумента строки команды....

отношения

13
ответ дан 27 November 2019 в 22:14
поделиться

Я вижу по крайней мере две опции:

  • Использование "ulimit-t" в оболочке, которая создает Ваш процесс
  • Использование, "хорошее" при создании процесса или "renice" во время времени выполнения
1
ответ дан 27 November 2019 в 22:14
поделиться
Другие вопросы по тегам:

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