Existe algum uso para o RLIMIT_NICE?

5

Estou usando o prlimit no Ubuntu para fazer algumas restrições de recursos no meu caixa de areia que tem sido muito útil. No entanto, não sei bem o que fazer com RLIMIT_NICE . Os docs dizem:

RLIMIT_NICE (since Linux 2.6.12, but see BUGS below) Specifies a ceiling to which the process's nice value can be raised using setpriority(2) or nice(2).

No entanto, de acordo com getpriority (2) , um processo pode elevar seu desempenho valor somente se pertencente a um superusuário em primeiro lugar. Mas, se esse for o caso, o valor RLIMIT_NICE não adicionará nenhuma funcionalidade porque um usuário privilegiado pode arbitrariamente diminuir ou aumentar os valores RLIMIT de qualquer maneira.

Então, não entendo como usar ou interpretar RLIMIT_NICE . Para usuários não privilegiados, a coisa toda parece inútil, porque eles não podem priorizar em primeiro lugar, e não faz sentido configurá-la abaixo da prioridade atual. No entanto, para superusuários, ele não adiciona nada porque os limites% e nice e RLIMIT_NICE de soft e hard podem ser aumentados arbitrariamente.

Então, qual é a ideia por trás de RLIMIT_NICE ?

    
por Jeroen 30.07.2012 / 23:10

1 resposta

4

Na verdade, RLIMIT_NICE permite que você ignore a regra básica que diz que "um processo pode elevar seu valor interessante somente se pertencer a raiz".

Demonstração:

# ulimit -e 30
# su nobody
$ nice -n -10 top

Você verá que o processo top é executado com niceness -10 .

Agora, se você tentar nice -n -11 top , ele será executado com niceness 0 , porque -11 não é permitido por RLIMIT_NICE=30 .

A fórmula é dada na manpage: a máxima niceness permitida é 20-rlimit . Então:

  • 0 significa "você pode aumentar a gentileza para 20", a.k.a. inútil;
  • 20 significa "você pode aumentar a bondade para 0", o que permite voltar para 0 se você diminuiu sua prioridade;
  • 40 significa "você pode iniciar processos até nice -n -20 .
por 07.10.2013 / 20:48