
Eu quero aumentar ogentileza de um serviço(diminuir a prioridade da CPU) iniciado como um usuário ou grupo dedicado durante o processo de inicialização. Não consigo definir a gentileza ou prioridade no diretório /etc/security/limits.conf
ou ./limits.d/
para o usuário desejado porque a entrada não será observada para serviços. (?)
Exemplo
Em particular, tenho alguns vServers pequenos com CentOS 6.6 e quero executar um tor relay (O roteador cebola) em cada. O daemon tor inicia na inicialização como um serviço, configurado via sudo /sbin/chkconfig
(nível de execução: 2,3,4,5). O usuário e o grupo do processo tor são _tor
.
Onde devo alterar o nível legal ou de prioridade para cada processo do qual o usuário _tor é o proprietário? O valor nice deve ser aplicado em cada inicialização e no início manual do serviço ( service tor start
).
Responder1
A abordagem clássica é usar nice
e/ou ionice
dentro do script de inicialização do serviço. Você provavelmente tem algo como:
case "$1" in
start)
echo "Starting tor daemon"
/path/to/tor-daemon
e mude isso para
echo "Starting tor daemon"
nice /path/to/tor-daemon
Alternativamente, o script de inicialização geralmente registra o PID de um daemon /var/run/pid-of-tor-daemon
ou similar e você pode usar renice
esse PID após o daemon ser iniciado.
Uma abordagem melhor é com cgroups. Isso é um pouco longo demais para uma resposta aqui, mas oDocumentação da Red Hatpode ser um começo útil.