Existe uma maneira de saber quanta memória o Linux está usando?

4

Estou procurando uma maneira de saber o tamanho da memória que o sistema operacional Linux está usando (não estou preocupado com o tamanho da memória dos outros aplicativos). Estou usando a distribuição do Ubuntu (Ubuntu 15.10).
Obrigado pela sua ajuda

    
por Younes 30.11.2015 / 00:03

2 respostas

4

Memória do SO versus Memória do Ubuntu v. Memória do Kernel

Você pediu para saber o quanto o "Linux OS" está usando (e não quanto de memória está sendo usada por "aplicativos"). "Linux" é apenas um kernel (embora não monolítico; os módulos do kernel contribuem para o alcance efetivo). Muitas coisas que os usuários finais vêem como "o sistema operacional" não fazem parte do kernel, mas fazem parte da distribuição maior do Ubuntu. Em uma instalação típica de desktop, isso inclui o sistema de janelas (normalmente xorg), o gerenciador de janelas e o ambiente de desktop (Unity no Ubuntu por padrão, outros incluem o Gnome eo KDE), além de uma série de outros processos que executam operações essenciais. que você pode interagir com o seu sistema.

A palavra "aplicativos", para usuários finais, geralmente significa coisas como "navegador da Web", "planilha eletrônica" etc. Referir-me-ei a eles como "aplicativos do usuário".

Existem maneiras de estimar o tamanho do seu kernel , mas se você quiser estimar a quantidade de memória que o Ubuntu está usando, você terá que identificar e adicionar todos os processos relacionados (xorg, init, etc.). A outra opção é usar algo como top quando não houver outros aplicativos de usuário em execução e subtrair a memória usada por top e seu emulador e shell de terminal.

Memória total

Existem muitas maneiras, algumas mais precisas que outras, de ver o uso de memória de um sistema Linux. Existem também muitas definições de "memória em uso". Dito isso, para a maioria dos usos não técnicos, o topo (1) fará o trabalho muito bem:

top - 17:23:50 up 7 days, 19:15,  3 users,  load average: 0.00, 0.01, 0.05
Tasks: 172 total,   2 running, 170 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.8 us,  0.1 sy,  0.0 ni, 99.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   2049992 total,  1735420 used,   314572 free,   372420 buffers
KiB Swap:  2095100 total,      192 used,  2094908 free.   679116 cached Mem

Como um bônus adicional, já que a próxima pergunta é frequentemente " o que está usando a memória?", as próximas linhas mostram os processos em execução e (entre outras coisas), quanta memória virtual eles estão usando.

Note que a memória "gratuita" no Linux é geralmente um número muito pequeno, e isso é uma coisa boa. A memória livre é essencialmente um recurso desperdiçado, então o Linux a aloca para vários usos de cache. Se um aplicativo precisar dessa memória, ainda estará disponível; O Linux está apenas colocando isso em bom uso enquanto isso.

    
por 30.11.2015 / 00:26
0

O kernel básico é o arquivo vmlinuz em /boot . O 'z' significa 'compactado com a biblioteca z'. Infelizmente, eu não sei como descomprimi-lo para ver o tamanho uma vez descompactado.

Também como mencionado por @type_outcast, o kernel usa módulos para acessar o hardware e lidar com alguns outros recursos. Estes são encontrados em /lib/modules/<version> . Você pode determinar quais módulos são carregados usando lsmod . Essa lista inclui uma coluna Size com o tamanho de cada módulo.

Então, se você quisesse saber o tamanho que o kernel está usando, seria uma aproximação relativamente próxima.

Além disso, você tem o arquivo de memória. Tente cat /proc/meminfo . Isso fornecerá dois parâmetros adicionais: KernelStack e Buffers .

Além disso, você pode obter as informações de vários processos, como o processo 1. Este é o processo init e pode ser considerado parte do kernel. Suas informações podem ser encontradas em /proc/1 . O uso de memória mostra alguns números que são explicados abaixo . Você pode encontrar uma lista de processos de baixo nível usando ps -ef | less e olhando para a coluna CMD . As coisas que aparecem entre colchetes '[... name ...]' são realmente entradas de baixo nível (entradas relacionadas ao módulo, podem ser tarefas criadas pelos módulos, mas eu não tenho certeza sobre isso.)

me $ cat /proc/1
46511 1381 790 348 0 37483 0

Observe que esses números são medidos em páginas . Na maioria dos casos, isso significa que você deseja multiplicar o número por 4096 para ter o tamanho em bytes.

   /proc/[pid]/statm
          Provides information about memory usage, measured in pages.
          The columns are:

              size       (1) total program size
                         (same as VmSize in /proc/[pid]/status)
              resident   (2) resident set size
                         (same as VmRSS in /proc/[pid]/status)
              shared     (3) number of resident shared pages (i.e., backed by a file)
                         (same as RssFile+RssShmem in /proc/[pid]/status)
              text       (4) text (code)
              lib        (5) library (unused since Linux 2.6; always 0)
              data       (6) data + stack
              dt         (7) dirty pages (unused since Linux 2.6; always 0)

Se você estiver interessado em vários outros processos, todos os dados estarão disponíveis em /proc .

    
por 13.12.2016 / 08:05