Qual é a RAM máxima endereçável para um processo no Linux em 2P Opteron

4

Estou fazendo um trabalho de bioinformática em que a limitação é quantidade de memória (ou seja, o processo não é paralelizável). Vejo servidores como o Dell R715 que possuem dois soquetes para os processadores Opteron 6100 e 128 GB de RAM com 16 x 8 GB DIMMs.

Cada CPU tem um banco de DIMMs associados a ela.

A minha pergunta é, se eu colocar o Linux em uma máquina assim, é apenas metade da RAM endereçável por cada CPU? Em outras palavras, se eu rodar um programa single-threaded sob o Linux, esse processo terá acesso a 128 GB de RAM ou apenas 64 GB de RAM?

    
por jed877 14.05.2011 / 04:11

2 respostas

5

Estritamente falando, esse processo single-threaded terá acesso a toda a memória disponível para o servidor. Você não precisa se preocupar com isso.

O processo terá acesso a todo memória na RAM, mas o acesso a metade dele será (em teoria) mais lento que o acesso à outra metade dele. Eu sei que o VMWare-ESX está ciente da localidade de memória, pois tenta manter toda a memória para uma VM específica no mesmo nó de memória que a execução do processo, a fim de manter um bom desempenho.

A tecnologia é chamada acesso não uniforme à memória (NUMA). É provável que sua máquina Linux já tenha os bits para ela ( numastat deve retornar dados). O programa numactl atribui uma política de memória aos seus processos, o que pode ser muito útil se você estiver escrevendo seu próprio código e quiser otimizar a velocidade da memória. A memória local da CPU buscará mais rápido que a memória no nó de memória de outra CPU, o que pode ser útil para você, dependendo do que você está fazendo com ela.

    
por 14.05.2011 / 04:37
0

O Linux é um sistema paginado de demanda que apresenta um espaço de endereço virtual de 2 ^ 64 -1 em um sistema de 64 bits. o VMM irá acessar todo o RAM na caixa. O kernel do linux manipula a criação da tabela de páginas e não o processo.

    
por 14.05.2011 / 05:13