Qual é a memória máxima que um processo (MySQL) pode consumir em um sistema operacional de 32 bits?

1

Eu tenho o MySQL rodando em uma caixa RHEL de 32 bits. O servidor em si tem 4GB de memória total com 2GB alocados para o MySQL.

Eu gostaria de saber a quantidade máxima de memória que posso colocar na caixa e quanto disso eu posso alocar para o MySQL.

Eu ouvi 2GB e 4GB como o limite por processo em um sistema operacional de 32 bits ...

Por fim, gostaria de saber se posso aumentar a memória do MySQL sem atualizar para um sistema operacional de 64 bits.

    
por mmattax 30.03.2010 / 19:43

3 respostas

3

Depende do seu kernel e configuração. Geralmente é 2Gb ou 3Gb.

O aplicativo em si pode ter um limite inferior auto-imposto. Alguns aplicativos / serviços 32bti não usam mais do que 2G, mesmo se o sistema operacional permitir, porque o gerenciamento de memória interna deles usa (ou permite) inteiros de 32 bits assinados para tudo.

Se sua CPU, controlador de memória, sistema operacional e aplicativo suportarem PAE, isso permitirá que mais RAM seja usada pelo processo único. O PAE é suportado pelo kernel do Linux e não há dúvidas de pré-compilar os kernels nos repositórios do RHEL que o habilitaram (ele não está habilitado na maioria dos kernels padrão, pois há implicações de desempenho) - não sei se o MySQL terá suporte para isso, no entanto.

Se você estiver usando um kernel mais antigo, pode valer a pena olhar para a configuração do mapa de memória - enquanto a maioria dos novos kernels padrão para uma divisão 1G / 3G entre o kernel e o espaço de endereço mapeado em cada processo, em tempos antigos (quando máquinas com A RAM perto do limite de um espaço de endereçamento de 32 bits era praticamente desconhecida) uma divisão 2G / 2G era o padrão, mas poderia ser alterada se você precisasse de 1G / 3G.

Sem investigar profundamente o assunto, meu palpite seria que (a menos que você esteja usando um kernel antigo e é isso que está impondo o limite de 2G em vez de um 3G) o MySQL não usará mais do que 2G sem a atualização para o Compilação de 64 bits. É improvável que a RAM extra seja desperdiçada - o kernel a usará para cache / buffers, portanto, enquanto o MySQL a usar diretamente, ela seria muito mais eficiente (já que haveria muito menos casos de cache do MySQL e cache de OS mantendo os mesmos blocos de dados) não vai ficar parado por isso algum benefício será visto.

    
por 30.03.2010 / 20:24
1

A maioria das distribuições e processadores modernos suportam PAE, que é o conjunto de instruções da Intel que permite endereçamento de memória além da limitação de 32 bits. O PAE permite que um máximo de 64 GB de RAM seja acessado pelo processador. A PAE tem mais sobrecarga de CPU.

O Linux de 32 bits tem um limite por processo de 3 GB endereçável, mesmo com o PAE. Normalmente, o kernel reserva aproximadamente 1 GB.

O MySQL é um daemon de processo único. Como tal, não será possível endereçar fora da limitação de 32 bits, mesmo com o PAE.

Algumas referências úteis:

por 30.03.2010 / 19:52
0

Eu acho que cada processo pode ver (endereço) 4 GB, mas 2 GB disso é o espaço do kernel e não pode ser preenchido pelos dados do aplicativo.

Eu estou lá para assumir que o MySQL poderia potencialmente usar até 2 GB vezes o número de instâncias do MySQL GB de memória total (memória física e espaço de troca).

    
por 30.03.2010 / 19:46