Como posso iniciar todos os meus processos com gentileza 5

8

Eu sei que os valores de gentileza são herdados do valor de gentileza do processo pai, mas posso alterar globalmente o valor de gentileza padrão para um usuário específico (eu mesmo).

Nesse caso, tenho em mente um pequeno servidor de conveniência, que é acessado exclusivamente via ssh. Então, acho que poderia mudar meu shell padrão de /bin/bashpara /etc/bash5while /etc/bash5é este script:

#!/bin/sh
nice -n 5 /bin/bash

#file privileges: root:root 755

Isso me parece um hack terrível e propenso a erros. Deve haver uma maneira melhor.

Estou interessado principalmente em soluções gerais, que também se aplicariam a um sistema de desktop / laptop.


Edit: Tentei a limits.confalteração sugerida , mas ela não funciona conforme o esperado:

root@server# addgroup nice
root@server# adduser myself nice
root@server# echo '@nice soft nice 5' >> /etc/security/limits.conf

Então, na minha máquina cliente, eu digo

myself@client$ ssh server
myself@server$ sleep 1h &
myself@server$ htop

Agora, o sleepprocesso tem um valor de gentileza inicial de0 , mas se eu alterar o valor F8para 19 e tentar reduzi-lo novamente com F7 ele para5 .

Edit2: Solução

Em vez de usar o niceitem limits.conf, você realmente precisa usá- prioritylo, embora seja contra-intuitivo.

@nice soft priority 5
bitmask
fonte
Talvez colocar um renice -n 5no seu ~/.profile?
Jw013
@ jw013: Essa é uma ideia melhor do que minha bash5abordagem, eu dou a você isso. Mas ainda quebra se eu disser ssh myserver -- somecommand, não?
Bitmask
@bitmask. Não posso reproduzir o seu resultado para limits.conf. Para que serve a sua saída ps -o pid,nice,cmd?
donothingsuccessfully
1
Poste soluções para seus próprios problemas como respostas , em vez de editar sua pergunta. Obrigado! (Não há problema em fornecer sua própria resposta à sua própria pergunta.)
mattdm
Em outra nota: não foi isso que você pediu, mas você pode achar que o cgroups fornece uma maneira mais eficaz de fazer o que (prioridade reduzida para um determinado usuário) você deseja nice.
mattdm

Respostas:

7

Você pode definir a prioridade para um usuário específico no /etc/security/limits.confarquivo.

root       hard/soft     priority    10

Dessa forma, você pode definir um limite rígido ou flexível para qualquer usuário em particular. Portanto, todos os processos que esse usuário raiz iniciará terão 5 como o valor de prioridade padrão.

De acordo com a página da Wikipedia :

O efeito matemático exato de definir um valor de gentileza específico para um processo depende dos detalhes de como o planejador é projetado nessa implementação do Unix.

Aqui está o instantâneo que mostra o procedimento acima funciona:

Esta imagem é a captura de tela do arquivo /etc/security/limits.conf

Este é um instantâneo do limits.confarquivo que mostra uma linha que eu adicionei finalmente como

root     hard     priority    15

Depois de mudar isso, iniciei uma sessão ssh usando o comando ssh root@localhost

insira a descrição da imagem aqui

Essa captura de tela mostra as duas últimas linhas, que mostram o bom valor dos dois últimos processos -bashe os sshd: root@pts/315.

Editar

Aqui está o instantâneo que mostra que você pode aumentar e diminuir a gentileza de um processo insira a descrição da imagem aqui

Edição 2:

Aqui está o snapshort que mostra que mesmo o usuário normal pode alterar o valor da gentileza.

insira a descrição da imagem aqui

pradeepchhetri
fonte
Eu estava falando sobre gentileza , não prioridade. E como eu disse na outra resposta, isso não parece ser aceito. Preciso reiniciar algum daemon ou algo assim?
Bitmask
@bitmask: este é um trabalho em meu ... Eu estou indo para adicionar instantâneo na minha resposta espera ...
pradeepchhetri
@bitmask: Eu atualizei a resposta com os instantâneos .. :)
pradeepchhetri
Há uma diferença entre gentileza e prioridade . Compreendo totalmente que você pode mudar a prioridade difícil , mas quero mudar a gentileza suave . Isso é diferente.
Bitmask
@bitmask: Acesso à página da wiki A niceness of −20 is the highest priority and 19 or 20 is the lowest priority,. Então, primeiro u tem que entender que amabilidade e prioridade são same..And Quero esclarecer que estes são hard and soft limits, mas não é como hard prioritye soft niceness..
pradeepchhetri
1

Ele se parece com você pode definir uma prioridade padrão para um usuário em limits.conf, com uma linha como:

username    soft  priority  5

Veja man limits.conf .

donutingsuccessfully
fonte
Parece bom. Eu apenas dei-lhe um tiro (usando um grupo especial embora) @nice soft nice 5, mas sshing na máquina e executar sleep 1hprogramas como tendo niceness 0no htop. Alguma pista de por que a configuração não foi aceita? Estou no debian squeeze.
bitmask
o que está @niceno comentário acima .. deve ser o do usuário da sua máquina linux.
Pradeepchhetri
@pradeepchhetri: Veja a edição do meu OP, por favor. É um nome de grupo.
bitmask
Por que @ na frente do nome do grupo enquanto coloca uma entrada no limits.confarquivo?
Pradeepchhetri
@pradeepchhetri: Porque a página de manual diz isso?
Bitmask