Descritores máximos de arquivos do Debian

Descritores máximos de arquivos do Debian

Debian Lenny. Para cada usuário, incluindo root:

# cat /proc/sys/fs/file-max
262144

# sysctl fs.file-max
fs.file-max = 262144

# ulimit -Hn
1024

# ulimit -Sn
1024

O arquivo /etc/security/limits.confnão possui linhas não comentadas.

De onde vem esse 1024?

Responder1

Ofs.file-maxsysctlmostra quantos identificadores de arquivo podem ser alocadosNo âmbito do sistema, enquanto ulimitos limites de recursos são por processo (ou por UID). O primeiro é descrito emDocumentation/sysctl/fs.txt:90:

arquivo-max e arquivo-nr:

O valor em file-max denota o número máximo de arquivos
identificadores que o kernel do Linux irá alocar. Quando você ganha muito
de mensagens de erro sobre a falta de identificadores de arquivo, você pode
deseja aumentar esse limite.

O rlimit de 1024 arquivos não está explicitamente definido em nenhum lugar; está codificado no kernel como o valor padrão para pid 1, eminclude/asm-generic/resource.h:81:

/*
 * padrões de limite de tempo de inicialização para a tarefa init:
 */
#define INIT_RLIMOTS \
{ \
        ...
        [RLIMIT_NOFILE] = { INR_OPEN_CUR, INR_OPEN_MAX }, \
        ...
}

quais referências INR_OPEN_CURe INR_OPEN_MAXdeinclude/linux/fs.h:26:

#define INR_OPEN_CUR 1024 /* Configuração inicial para nfile rlimits */
#define INR_OPEN_MAX 4096 /* Limite rígido para nfile rlimits */

Outros processos simplesmente herdam o limite de init(ou o que quer que seja pid 1).

Por que /proc/1/limitsno Debian reporta 1024 como softe difícillimite de arquivo? Não sei: nem as fontes do sysvinit nem os patches do kernel do Debian mudam isso. Podem ser os scripts initramfs, talvez. (Eu executo o Arch, que tem o padrão 1024/4096.)

Responder2

Para a questão levantada pelo @grawity, este commit do kernel pode explicar:

confirmar 0ac1ee0bfec2a4ad118f907ce586d0dfd8db7641
Autor: Tim Gardner
Data: Terça-feira, 24 de maio 17:13:05 2011 -0700

    ulimit: aumenta o ulimit padrão no número de arquivos para 4096

Alugado no RHEL5.4 é 1024/1024 e no RHEL6.2 é 1024/4096.

informação relacionada