Ноя 26 2010

VeryNice

Published by

VeryNice — утилита для динамического регулирования приоритета процессов для UNIX систем. Она также может использоваться для завершения вышедших из-под контроля (быстро растущих) процессов и увеличить приоритет мультимедийных приложений, в то же время правильно обрабатывать группы вычислительных заданий и интерактивных приложений с долгими периодами высокой нагрузки на CPU.

В отличие от других утилит по изменению приоритетов, VeryNice это не только возможность снижать приоритет требовательных процессов, но и также возможность поддерживать высокий приоритет при недостаточной нагрузке на CPU. VeryNice также можно настроить так, что он будет определять пользователей и приложения и действовать соответственно. Например, VeryNice может быть настроен отслеживать определённую программу (такую как netscape), которая имеет склонность использовать CPU на 100%, но программа будет завершена только в строго определённых условиях, так что это исключает возможность неправильного завершения программы.

Установка
Gentoo:

emerge app-admin/verynice

Arch:

yaourt -S verynice

Запуск
В зависимости от системы инициализации это может быть одна из следующих команд:

# /etc/init.d/verynice start
# /etc/rc.d/verynice start

Или добавляем демон в автозагрузку (Gentoo):

# rc-update add verynice default

Арч: в /etc.rc.conf добавляем verynice в секцию DAEMONS:

DAEMONS=(... @verynice ...)

Сигналы завершения VeryNice
Сигналы можно использовать в качестве параметра команды kill, меняя тем самым поведение VeryNice при завершении.

  • SIGTERM, SIGINT, SIGQUIT — сбросить приоритеты всех процессов и выйти;
  • SIGHUP — перезапустить, очистив все уровни приоритетов;
  • SIGUSR1 — дамп базы данных процесса в журнал;
  • SIGUSR2 — пересчитать все конфигурационные файлы (не влияет на уже запущенные процессы).

Настройка
Обычно настройки хранятся в /etc/verynice.conf или /usr/local/etc/verynice.conf (в зависимости от используемого PREFIX при сборке), а также в ~/.verynicerc. Формат этих файлов один и тот же. Настройки в глобальной конфигурации (etc/verynice.conf) имеют более высокий приоритет по сравнению с пользовательскими настройками. Настройки в ~/.verynicerc будут влиять только на процессы данного пользователя. Пример файла verynice.conf обычно устанавливается в /etc/verynice.conf или /usr/local/etc/verynice.conf.

Параметр Функция Значение по умолчанию Допустимые значения Разрешения Множественные?
notnice Устанавливает приоритет «goodexe» процессов -4 Любое отрицательное число больше -20 Глобально нет
batchjob Устанавливает приоритет «badexe» процессов 18 Любое положительное число меньше 20 Глобально нет
runaway Устанавливает уровень «плохой кармы», при котором runawayexe процесс будет завершён с сигналом SIGTERM 20 Любое положительное число Глобально нет
kill Устанавливает уровень «плохой кармы», при котором runawayexe процесс будет завершён с сигналом SIGKILL 22 Любое положительное число Глобально нет
badkarmarate Устанавливает количество «плохой кармы», которая генерируется каждую секунду 100% использования CPU (для малых уровней «плохой кармы») .0167 Любое положительное действительное число Глобально нет
badkarmarestorationrate Устанавливает количество снимаемой «плохой кармы» за каждую секунду 0% использования CPU .0167 Любое отрицательное действительное число Глобально нет
periodicity> Устанавливает приблизительно количество секунд между итерациями процесса анализа кода VeryNice 60 Любое положительное целое число. Большие значения — меньшее использование CPU. Малые значения дают большую производительность. Глобально нет
rereadcfgperiodicity Устанавливает приблизительно число циклов программы (периодичность) между попытками пересчитать конфигурационные файлы VeryNice 60 Любое положительное целое число. Помните, что изменение этого параметра потребует найти все .verynicerc в домашних папках пользователей и данная настройка не окажет влияния на существующие процессы. Глобально нет
immuneuser Запрещает VeryNice изменять приоритеты процессов указанных пользователей, за исключением «goodexe» процессов, которые указаны ниже в параметре goodexe, если они («goodexe») установлены в глобальном конфигурационном файле не задано Имя любого пользователя, неограниченно Глобально да
immuneexe Запрещает VeryNice изменять приоритет указанным программ не задано Любая подстрока, включающая полный пусть к исполняемому файлу, заключенная в двойные кавычки. Если путь начинается с «/», то полный путь должен быть указан точно. Глобально/
Локально
да
badexe Принудительно устанавливает приоритет указанным программам, заданный в параметре BATCHJOB не задано (Как и выше) Глобально/
Локально
да
goodexe Принудительно устанавливает приоритет указанным программам, заданный в параметре NOTNICE. Это обычно используется для пользовательских (десктоп) приложений, которым нужен высокий приоритет не задано (Как и выше) Глобально/
Локально
да
runawayexe Отмечает исполняемые файлы как потенциально неподконтрольные процессы. Только специально отмеченные процессы буду завершены VeryNice не задано (Как и выше) Глобально/
Локально
да
hungryexe Отмечает исполняемые файлы, «поедающие CPU», Такие процессы будут рассматривается, как если бы они использовали 100% CPU, вне зависимости от реального использования CPU. Это подходит для программ, которые создают множество недолго живущих дочерних процессов, например, make. не задано (Как и выше) Глобально/
Локально
да

Замечание по поводу «кармы»
Процессы отслеживаются и перераспределяются в соответствии с их «плохой кармой». «Плохая карма» накапливается всякий раз, когда процесс «прибирает к рукам» CPU, и уменьшается, если процесс бездействует. У «goodexe» процессов негативная «плохая карма» (т.е. «хорошая карма»).

Замечание по поводу процессов
В параметрах goodexe, hungryexe и badexe нужно прописывать не только полный путь до исполняемого файла, но и команду запуска (посмотреть можно, например в системном мониторе KDE, поставив галочку Отображать «Команду запуска»). В частности, долго не мог понять, почему не отрабатывает с Firefox’ом.
Примеры:

goodexe "/usr/lib/firefox-4.0b7/firefox-bin"
goodexe "kwin"
goodexe "/usr/bin/X"
goodexe "kdeinit4 dolphin"
badexe "/usr/bin/eiskaltdcpp-qt"
badexe "/usr/bin/ktorrent"

Оригинал статьи можно почитать тут.
Дефолтный конфиг можно посмотреть здесь.

No responses yet

Trackback URI | Comments RSS

Leave a Reply


*

Powered by WordPress