Onde o tamanho máximo do processo é especificado?

2

Eu tenho uma máquina RHEL4 com 1TB de memória e descobri que malloc e mmap se recusam a alocar qualquer memória acima de 512GB. Enquanto isso, não pareço ter um problema com as máquinas RHEL5. Estou presumindo, então, que é apenas uma questão de configuração do kernel. Alguém sabe o que controla o tamanho máximo do processo (assumindo um tamanho de página fixo)?

    
por dromodel 05.12.2012 / 21:28

1 resposta

1

O porta inicial do Linux para amd64 suportava apenas um de 40 bits espaço de endereçamento virtual, dividido em 512GB para o processo e 512GB para o kernel. As versões atuais suportam 48 bits de espaço de endereço virtual, divididos em 128TB / 128TB. Esta última limitação é intrínseca na versão atual da arquitetura amd64: simplesmente não há como configurar a MMU para tornar mais bits significativos. Veja Como o Linux suporta mais de 512GB de intervalo de endereços virtuais em x86-64? para obter uma explicação sobre o amd64 MMU, ou o Manual do Programador de Arquitetura AMD64 (§5.1) para a história completa.

Eu não sei exatamente quando esta limitação mudou, mas seu kernel 2.6.9 é muito antigo. A Red Hat publica uma tabela de recursos e limites para o RHEL 3 até o RHEL 6. O máximo O espaço de endereço por processo no RHEL4 é de 512 GB. O RHEL5 lhe dará 2TB, mas você pode querer atualizar diretamente para o RHEL6, que suporta 128TB completos.

    
por 06.12.2012 / 21:01