O OpenBSD tem um limite para o número de descritores de arquivos?

5

Qual é o número máximo de descritores de arquivos que um processo pode obter no OpenBSD com sucesso?

Por exemplo, há um limite openfiles em login.conf ( 5) no OpenBSD. Se eu quiser ter tantos descritores de arquivos quanto possível, mas ainda assim não permitir que um processo de fuga atinja o sistema, qual seria um valor sensato a ser definido?

Por exemplo se eu especificar, digamos, 20000 , o kernel será capaz de fornecer ao meu aplicativo todos esses 20000 FDs? E se eu estiver executando várias instâncias de um determinado aplicativo (por exemplo, vários processos de trabalho)?

    
por cnst 12.12.2013 / 22:25

2 respostas

3

Há uma boa chance de que os valores padrão já estejam configurados para valores razoáveis que suportarão a maioria, se não todos os casos de uso, eles seriam baseados em valores encontrados necessários para executar sistemas usados pelos desenvolvedores e administradores do OpenBSD ao longo dos anos. de desenvolvimento e uso. Acredito que quaisquer limites seriam executados de forma programada e limitados apenas pelos recursos disponíveis.

No FreeBSD, temos valores de sysctl para kern.maxfiles e kern.maxfilesperproc - espero que o OpenBSD tenha o mesmo. Os limites padrão atuais são muito mais altos do que há alguns anos, já que a maioria dos sistemas agora tem recursos suficientes para que não seja necessário limitá-los.

Na minha máquina desktop tenho maxfilesperproc no padrão 18000 - Estou executando o xfce4 com chrome, liferea, blender, gimp, editores de texto e terminais em execução - o ps mostra 215 processos e o kern.openfiles está em 2683

Se você receber erros de muitos arquivos abertos, aumente-os, mas duvido que precise e duvido que você sobrecarregue seu sistema aumentando-os demais.

    
por 13.12.2013 / 01:32
2

Analisando o código-fonte, para obter o valor padrão do máximo de arquivos abertos:

Código bem documentado

extern int maxfiles;                 /* kernel limit on number of open files */

maxfiles, em param.c define a fórmula para maxfiles

int maxfiles = 5 * (NPROCESS + MAXUSERS) + 80;

OK, nós encontramos.

NPROCESS =

#define NPROCESS (30 + 16 * MAXUSERS)

MAXUSERS = - Vamos pegar a arquitetura amd64 como exemplo:

machine         amd64
include         "../../../conf/GENERIC"
maxusers        80                      # estimated number of users

Vamos resumir todas as coisas:

maxfiles = 5 * ((30 + 16 * 80) + 80) + 80
maxfiles = 5 * ((30 + 1280) + 80) + 80
maxfiles = 5 * (1390) + 80
maxfiles = 6950 + 80
maxfiles = 7030

Para aumentar o total de arquivos abertos máximos, você precisará primeiro de tudo aumentar o limite máximo do kernel de arquivos abertos com sysctl kern.maxfiles=20000 e aumentar o número de arquivos que um processo / usuário pode abrir, editando login.conf . Esta Configuração do daemon do Tor tem dois exemplos para você.

    
por 13.12.2013 / 01:52