Могу ли я ограничить использование процессора одним приложением?

Ответы:

16

Так же, как альтернатива cpulimit:

Вы можете запустить clamscan с помощью команды nice, например:

nice -n 19 clamscan,

Смотрите man niceподробности.

Это НЕ ограничивает ЦП, но снижает приоритет процесса.

Также есть reniceвозможность изменить приоритет запущенных процессов.

Clausi
источник
2
Похоже, он все еще работает, съедая много процессора ...
Питто
4
Пока никакой другой процесс не требует cputime, clamscan получает много. Но как только другому процессу (который имеет более высокий приоритет) требуется cputime, у clamscan нет шансов. cpulimit ограничивает абсолютное cputime, и хорошие ограничения относительно cputime.
Клауси
2
+1. niceИнг - это традиционный путь, и на то есть веские причины.
loevborg
Существуют ли инструменты для определения значения по умолчанию для определенных приложений, с которыми нужно работать? Желательно инструмент, который позволяет сравнивать все ваши пресеты бок о бок.
Джонни Асмар
19

Установить cpulimit

sudo apt-get install cpulimit

Он предоставляет различные методы ограничения использования процессором процесса, fooскажем, 20%

  • По-процесса имя его: sudo cpulimit -e foo -l 20.

  • По абсолютному пути: sudo cpulimit -P /usr/bin/foo -l 20

  • По его PID:

    1. Найти PID процесса: pidof foo. (скажем, это выводит 1881)
    2. sudo cpulimit -p 1881 -l 20
Sid
источник
Целевой процесс не найден ... Может быть, это потому, что у меня есть скрипт для запуска clamscan? я делаю: sudo cpulimit -e /etc/cron.hourly/virusscan -l 15
Питто
@ Питто: Вы ввели неправильную команду, /etc/cron.hourly/virusscanэто не процесс. Если вам нужно ограничить clamscan, бегите sudo cpulimit -e clamscan -l 15.
Сид
Ой! Правильно! Поэтому я должен запустить cpulimit при запуске в rc.local, верно?
Питто
2
sudoне требуется, процесс не является системным процессом. Так же, как примечание
Анвар
Это было бы действительно аккуратное решение, если использовать его программно! Поддерживает ли он поиск по шаблону?
Джонни Асмар
4

Это должен был быть комментарий к ответу Клаузи (который, на мой взгляд, является наиболее «правильным» с точки зрения системного администрирования), но он превратился в нечто слишком большое, чтобы поместиться в поле для комментариев.

  • У Clamscan есть определенный объем работы, поэтому ограничение его до определенной скорости означает, что это займет больше времени. Это будет держать процессор в конкуренции дольше.

  • Разрешить ему работать так быстро, как только может, значит, вы используете свой процессор в полной мере. Делать его очень «хорошим» означает, что он позволит другим процессам выполнять свою работу раньше, чем он сам. Это означает, что если есть много других занятых процессов, да, это займет много времени, чтобы выполнить свою собственную работу, но если там ничего нет, он просто разделит свою рабочую нагрузку.

Оли
источник
3

Если вы используете clamd с systemd, вы можете использовать эту CPUQuotaопцию.

Изменить, /lib/systemd/system/clamav-daemon.serviceчтобы включить эту строку в [Service]раздел:

CPUQuota=20%

Затем перезапустите сервис

sudo systemctl daemon-reload
sudo systemctl reload-or-restart clamav-daemon
Кит
источник