Esclarecimento na coluna Memória compartilhada no utilitário top do Linux

0

Estamos tendo problemas de alocação de memória com um programa em execução no Linux. Estamos usando o utilitário principal para tentar determinar a causa raiz do problema. Uma coisa que notamos é que um processo tem um valor excessivamente alto para a memória compartilhada (a coluna SHR no topo).

A leitura da página MAN para o topo leva-me a acreditar que a coluna SHR representa a quantidade de memória para comunicações entre processos através da memória partilhada. Está correto?

Se sim, então faz sentido que QUALQUER processo tenha alocado 50 - 60 megabytes de memória compartilhada (o X11 aloca apenas 11MB, o que parece razoável com base no que ele tem a fazer).

Obrigado ...

    
por user7029 28.09.2009 / 02:31

2 respostas

3

A coluna SHR representa simplesmente a quantidade de memória compartilhada usada pelo processo. Ele pode ser usado para comunicações entre processos, mas um cenário mais comum é que essa é a memória usada pelas bibliotecas compartilhadas nas quais um aplicativo está vinculado.

De O kernel do Linux: Gerenciamento de memória :

Shared Virtual Memory

Although virtual memory allows processes to have separate (virtual) address spaces, there are times when you need processes to share memory. For example there could be several processes in the system running the bash command shell. Rather than have several copies of bash, one in each processes virtual address space, it is better to have only one copy in physical memory and all of the processes running bash share it. Dynamic libraries are another common example of executing code shared between several processes.

Shared memory can also be used as an Inter Process Communication (IPC) mechanism, with two or more processes exchanging information via memory common to all of them. Linux supports the Unix TM System V shared memory IPC.

O que a página do manual top diz sobre esta coluna:

   t: SHR  --  Shared Mem size (kb)
      The amount of shared memory used by a task.  It simply reflects mem‐
      ory that could be potentially shared with other processes.
    
por 28.09.2009 / 02:46
1

does it make sense for ANY process to have allocated 50 - 60 megabytes of shared memory

Sim.

Por exemplo, os guias de ajuste do Oracle recomendam tamanhos de memória compartilhada de gigabytes.

Dito isto, se o processo for "gato", provavelmente não faz muito sentido.

    
por 28.09.2009 / 02:58