Definindo nice e ionice para rsync via xinetd

4

Estou tentando definir o nice e o ionice para o rsync via xinetd. Estou executando o Fedora 16. O motivo pelo qual eu gostaria de usar esses valores é reduzir o processo de rsync para um estado ocioso para que outros processos não sejam afetados.

Eu tentei usar /etc/default/rsync para definir valores bons e de ionização, mas parece que eles não estão funcionando para mim. O processo de rsync é sempre iniciado com um bom valor de 0, mesmo quando eu o defino como 19. Essas configurações funcionam no xinetd? Existe outra maneira de rsync agradável via xinetd?

Aqui estão meus arquivos de configuração:

/etc/rsync.conf:

log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[share]
<shares go here>

/etc/xinetd.d/rsync:

service rsync
{
    disable = no
    flags           = IPv6
    socket_type     = stream
    wait            = no
    user            = root
    server          = /usr/bin/rsync
    server_args     = --daemon
    log_on_failure  += USERID
}

/ etc / default / rsync:

RSYNC_ENABLE=inetd
RSYNC_OPTS=''
RSYNC_NICE='19'
RSYNC_IONICE='-c3'
    
por eyesnz 05.02.2012 / 10:55

2 respostas

3

Graças aos ponteiros de sr_, parece que tenho uma solução.

Em /etc/xinet.d/rsync eu adicionei / alterei estas linhas:

service rsync
{
...
    nice            = 19
    server          = /usr/bin/ionice
    server_args     = -c 3 /usr/bin/rsync --daemon
...
}

Para usar ionice , precisei alterar o valor do servidor para ionice em vez de rsync . Em seguida, adicione rsync à seção de argumentos para que ionice lance-a.

    
por 17.02.2012 / 10:52
2

Este trecho do /etc/default/rsync do Debian (o Fedora provavelmente não desviou muito),

# run rsyncd at a nice level?
# ...
RSYNC_NICE=''

# run rsyncd with ionice?
# ...
# RSYNC_IONICE='-c3'

me faz pensar que os valores *NICE afetam apenas o daemon rsyncd . Olhando para /etc/init.d/rsync , encontramos

if [ -s $RSYNC_DEFAULTS_FILE ]; then
    . $RSYNC_DEFAULTS_FILE
    case "x$RSYNC_ENABLE" in
        xtrue|xfalse)   ;;
        xinetd)         exit 0
# ... the next lines examine the *NICE variables...

ou seja, se rsync for usado com inetd , os valores de *NICE não importam.

Você pode tentar substituir a linha rsync em inetd.conf ,

rsync   stream  tcp     nowait  root   /usr/bin/rsync rsyncd --daemon
                                       ^^^^^^^^^^^^^^

com alguma linha de comando definindo seus valores [io]nice , suponho.

Editar Raspe essa última observação, você está usando xinetd e, portanto, se quiser tentar, tem que alterar o comando rsync no recorte incluído:

service rsync
{
...
    server          = /usr/bin/rsync
...
}

Edit2 A julgar pelo presente , há um item xinetd config chamado nice para a gentileza do comando:

nice    Changes the server priority like the nice command does.

Você pode tentar uma combinação de configuração de nice=19 em /etc/xinetd.d/rsync e prefixar o comando server com alguns ionice call , por exemplo ionice -c3 .

(Eu não tenho certeza se isso funciona, porém. Mas se isso não acontecer, você ainda pode executar rsyncd como daemon e deixar o script /etc/init.d cuidar de tudo.)

    
por 05.02.2012 / 13:21