Memória virtual de 100 GB no servidor de 64 GB sem swap [duplicado]

1

Temos o seguinte processo:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                         
10684 root       8 -15 89.6g  13g 1.1g S 406.9 21.8 316:34.89 java 

Esta quantidade de memória virtual está ok, assumindo o fato de que temos apenas 64GB de RAM. Também aqui está a informação sobre a memória física:

Mem:  65995412k total, 64967388k used,  1028024k free,  3976288k buffers
Swap: 32764556k total,     1236k used, 32763320k free, 19534812k cached

Como você pode ver, há apenas 1236k trocados.

Estamos nos perguntando onde estão faltando 30 GB + RAM? Eles estão no disco?

Quanta memória virtual é aceitável para um processo específico? Qual é a conexão entre a memória virtual e a RAM?

    
por divaka 19.11.2012 / 16:58

1 resposta

4

O VIRT reflete a quantidade de Memória Virtual alocada por um processo, não um real. O espaço de endereçamento de um processo pode conter certas áreas mapeadas para arquivos correspondentes que não estão localizados na RAM.

Pelo menos as bibliotecas executáveis e compartilhadas do programa são mapeadas para o espaço de endereço virtual de um processo. Durante a execução do programa, o processo pode mapear outros arquivos para seu espaço de endereçamento e, às vezes, seu tamanho pode ser grande (imagens, filmes, bancos de dados) - ainda maior do que a quantidade disponível de RAM - é limitado pela quantidade total de memória endereçável. arquitetura do processador.

O Linux também usa a estratégia de alocação de memória otimista. Isso significa que, mesmo se um processo chamar malloc() , a alocação de memória física poderá ser adiada até que a página seja usada. Isso significa que o processo pode alocar mais RAM do que o disponível.

O Linux também pode dispersar páginas idênticas na memória. Se dois processos usarem as mesmas páginas na memória, o kernel pode mapear a página virtual em uma real (e liberar a segunda).

Então, sim, é normal quando um processo aloca mais memória virtual do que a quantidade de memória física disponível.

    
por 19.11.2012 / 18:34