Limite suave versus limite rígido

1

Eu tive um problema de:

fork: Resource temporarily unavailable

Eu sei que nproc é o problema Alguns sugeriram aumentar o limite flexível de nproc , enquanto outros sugeriram o limite máximo.

Qual devo aumentar? O limite suave não está lá apenas para avisar o usuário e o limite rígido é o que realmente limita eventualmente?

    
por Liron Cohen 09.11.2016 / 12:15

2 respostas

1

Na verdade, é outra maneira de contornar.

O (s) valor (es) do (s) limite (s) são realmente implementados, ou seja, em uso, você pode aumentar o limite até o (s) valor (es) relevante (s) (supondo que você não seja super usuário ou não tenha CAP_SYS_RESOURCE ). p>     

por 09.11.2016 / 12:20
0

Pense nos limites hard e soft como limites obrigatórios e discricionários, resp. O limite rígido é imposto pelo sistema (através de configuração adequada, por exemplo, limits.conf(5) ) e pode ser aumentado apenas pelo superusuário (ou seja, raiz), enquanto o usuário pode medir limites suaves a seu critério dentro do intervalo dos limites rígidos correspondentes.

Na página de manual getrlimits(2) :

The soft limit is the value that the kernel enforces for the corresponding resource. The hard limit acts as a ceiling for the soft limit: an unprivileged process may set only its soft limit to a value in the range from 0 up to the hard limit, and (irreversibly) lower its hard limit.

Assim, se você atingir um limite de recurso, verifique se você pode aumentar o limite flexível de acordo; se não, então o limite rígido precisa ser aumentado.

Resposta ao comentário

Não existe apenas o limite rígido . Os limites são definidos por setrlimit(2) , que se refere a struct rlimit . Este, por sua vez, tem membros para limite de hardware e software ( rlim_cur e rlim_max , resp.). Se um limite flexível não for explicitamente definido, o padrão será algum valor; provavelmente o limite rígido de acordo, mas isso é até o processo que define os limites. ( setrlimits(2) rejeita rlim_cur excedendo rlim_max , então RLIM_INFINITY normalmente não é um padrão válido para rlim_cur .)

    
por 09.11.2016 / 13:19