Diferente entre 'ulimit -e' e 'renice'?

4

Eu gostaria de executar um script de backup em baixa CPU e E / S de disco.

Existe alguma diferença entre isso:

#!/bin/bash

ulimit -e 19
ionice -c3 -p $$

e isso:

#!/bin/bash

ionice -c3 -p $$
renice -n 19 -p $$
    
por quanta 23.07.2014 / 05:28

1 resposta

7

Existe uma grande diferença entre eles.

  • ulimit -e apenas defina o RLIMIT_NICE , que é um valor limite superior para o qual o valor interessante do processo pode ser definido usando setpriority ou nice .

  • renice altera a prioridade do processo em execução.

Fazendo strace :

$ cat test.sh
#!/bin/bash

ulimit -e 19

Então:

$ strace ./test.sh
...................................................
read(255, "#!/bin/bash\n\nulimit -e 19\n", 26) = 26
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
getrlimit(RLIMIT_NICE, {rlim_cur=0, rlim_max=0}) = 0
getrlimit(RLIMIT_NICE, {rlim_cur=0, rlim_max=0}) = 0
setrlimit(RLIMIT_NICE, {rlim_cur=19, rlim_max=19}) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
read(255, "", 26)                       = 0
exit_group(0)

Você pode ver que ulimit só chama setrlimit syscall para alterar o valor de RLIMIT_NICE , nada mais.

Nota

por 23.07.2014 / 08:33