O que está consumindo minha RAM no VPS?

O que está consumindo minha RAM no VPS?

Estou executando o top e vejo que de 502.968 KB, 48.064 KB são usados, deixando 16.884 KB livres. Mas então, quando olho para os processos individuais, vejo que o mysql está consumindo 9,4% da minha RAM ocasionalmente - mas nada mais parece estar consumindo nada. O que está consumindo toda a minha RAM?

Aqui está uma captura de tela do topo:

top - 20:46:07 up 1 min,  1 user,  load average: 0.18, 0.05, 0.02
Tasks:  81 total,   1 running,  80 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.4 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:    502968 total,   241236 used,   261732 free,    10488 buffers
KiB Swap:   524284 total,        0 used,   524284 free,   106756 cached

PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
1584 dmackey   20   0 20508 1372 1000 R   0.4  0.3   0:00.01 top
1 root      20   0 26664 2456 1340 S   0.0  0.5   0:00.69 init
2 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kthreadd
3 root      20   0     0    0    0 S   0.0  0.0   0:00.01 ksoftirqd/0
4 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kworker/0:0
5 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/0:0H
6 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kworker/u:0
7 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/u:0H
8 root      rt   0     0    0    0 S   0.0  0.0   0:00.00 migration/0
9 root      20   0     0    0    0 S   0.0  0.0   0:00.00 rcu_bh
10 root      20   0     0    0    0 S   0.0  0.0   0:00.24 rcu_sched
11 root      rt   0     0    0    0 S   0.0  0.0   0:00.00 watchdog/0
12 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 cpuset
13 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 khelper
14 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kdevtmpfs
15 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 netns
16 root      20   0     0    0    0 S   0.0  0.0   0:00.00 bdi-default

E aqui está um grátis:

            total       used       free     shared    buffers     cached
Mem:        502968     355252     147716          0      10816     111548
-/+ buffers/cache:     232888     270080
Swap:       524284          0     524284

Responder1

Nada.

É Linux, e isso écomo funciona.

Ele usará memória "livre" para cache de disco, porque qual é o sentido de ter um recurso subutilizado?

Quando um processo deseja mais memória, ele a solicita ao kernel e (geralmente) a obtém.

Ah.. e o MySQL usará o quanto for necessário (conforme configurado em /etc/my.cnf) para que índices, consultas e tabelas sejam armazenados em cache do disco, na memória para tornar os tempos de acesso mais rápidos.

Responder2

É apenas qualquer lixo que resta na memória, da forma como foi usado por último. Provavelmente, são dados que foram lidos ou gravados no disco. O sistema operacional não libera memória porque isso é um desperdício por três motivos:

  1. Se a memória não for usada logo, liberá-la não resultará em nada.

  2. Se a memória for usada em breve, liberá-la será apenas um trabalho que deverá ser desfeito, pois deverá ser reutilizada.

  3. Se as informações que estavam na memória forem necessárias novamente, liberar a memória significará ter que obter essas informações do disco em vez da memória, o que é muito mais lento.

Os sistemas operacionais modernos só liberam memória se não tiverem outra escolha. Se você está pensando: “Quero essa memória livre agora para poder usá-la mais tarde”, pare. Você não precisa que a memória esteja livre agora para usá-la mais tarde. Não há nenhuma compensação aqui, é uma pura vitória manter a memória em uso até que seja necessária.

Responder3

Registrar a saída do top para análise futura é a melhor maneira de responder à sua pergunta. Não há solução rápida, será necessária alguma investigação observada ao longo do tempo. Uma coisa única que uso para percorrer a superfície do que está usando minha memória é colocar isso no crontab do root.

/bin/bash top -b -n 1 | head > `/var/log/date +%e_%T`

Então eu uso alguma manipulação de texto e pager-fu para rastrear tendências. Esta postagem de estouro de pilhahttps://stackoverflow.com/questions/7908953/how-to-measure-cpu-usagetem alguns exemplos mais abrangentes de uso de top como este e de personalização de top via .toprc, para estatísticas de CPU, mas pode ser facilmente adaptado para atender às suas necessidades.

informação relacionada