Запуск процесса xinetd с отрицательной славой

Я использую xinetd для Firebird Server.

Есть ли способ запустить процесс fb_inet_server с отрицательным приятно? Когда я набираю "-20" в xinetd.conf, он пропускается xinetd. Я посмотрел исходный код xinetd, а параметр "nice" представляет собой целое число без знака, поэтому я не смог указать здесь "-20".:/

Есть ли обходной путь для этого?

Мой конфиг (Debian GNU/Linux 8):

    cps             = 1500 10
    instances       = UNLIMITED
    per_source      = UNLIMITED

    flags           = NODELAY KEEPALIVE NOLIBWRAP
    socket_type     = stream
    user            = firebird
    wait            = no

    disable         = no
    nice            = 1
    max_load        = 20
    rlimit_as       = UNLIMITED
    rlimit_files    = UNLIMITED
    rlimit_cpu      = UNLIMITED
    rlimit_data     = UNLIMITED
    rlimit_rss      = UNLIMITED
    rlimit_stack    = UNLIMITED

    server          = /opt/firebird/bin/fb_inet_server

2 ответа

Решение

Я получил обходной путь от друга - не мог найти его в Интернете, поэтому я публикую это здесь.

Чтобы автоматически установить nice -20 для новых процессов fb_inet_server:

  1. Выключите вашу базу данных
  2. Остановить xinetd
  3. Задавать nice = 0 в конфиге firebird xinetd (/etc/xinetd.d/firebird)
  4. выполнять renice -n -20 по процессу xinetd
  5. Сделайте свою базу данных онлайн

Каждый новый процесс fb_inet_server является подпроцессом xinetd, и он наследует милость xinetd.

xinetd.conf утверждает, что полагается на nice(3), который в свою очередь утверждает:

Максимальное значение nice 2*{NZERO}-1 и минимальное значение nice 0 устанавливаются системой. Запросы значений выше или ниже этих пределов должны приводить к тому, что значение nice устанавливается равным соответствующему пределу. Только процесс с соответствующими привилегиями может снизить значение nice.

Таким образом, независимо от того, когда вы предоставите отрицательное значение или нет, результат всегда будет положительным. Эффективное значение nice может быть без знака, но вычисление для его получения будет поддерживать вычитание. Вы можете выполнить вычитание беззнаковых значений, результаты всегда будут>= 0.

Кроме того, понижение значения nice запущенного приложения требует соответствующих разрешений.

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