O que está usando minha RAM no VPS?

1

Estou no topo e vejo que, de 502968 KB, 48064 KB é usado, deixando 16884 KB livres. Mas quando eu olho para os processos individuais, vejo que o mysql está consumindo 9,4% da minha RAM de vez em quando - mas nada mais parece estar consumindo nada. O que está consumindo toda a minha memória RAM?

Aqui está uma captura de tela da parte superior:

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 de graça:

            total       used       free     shared    buffers     cached
Mem:        502968     355252     147716          0      10816     111548
-/+ buffers/cache:     232888     270080
Swap:       524284          0     524284
    
por David Mackey 15.09.2013 / 22:40

3 respostas

6

Nada.

É o Linux e é como funciona .

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

Quando um processo quer mais memória, ele pede pelo kernel, e (geralmente), pega.

Oh .. 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.

    
por 15.09.2013 / 23:47
2

É apenas o que acontece com o lixo na memória, no entanto, foi usado por último. Provavelmente, são dados lidos do disco ou gravados no disco. O sistema operacional não libera a memória porque é um desperdício por três motivos:

  1. Se a memória não for usada em breve, torná-la livre não conseguirá nada.

  2. Se a memória for usada em breve, liberá-la é apenas um trabalho que precisa ser desfeito, já que precisa ser usado novamente.

  3. Se a informação que estava na memória for necessária novamente, tornar a memória livre significará ter que obter essa informação do disco em vez da memória, o que é muito mais lento.

Os sistemas operacionais modernos apenas tornam a memória livre se não tiverem absolutamente outra escolha. Se você está pensando: "Eu quero essa memória livre agora para que eu possa usá-la mais tarde", pare. Você não precisa da memória para estar livre agora para usá-la mais tarde. Não há trocas aqui, é uma vitória pura para manter a memória em uso até que seja necessário.

    
por 16.09.2013 / 00:38
-1

A saída da parte superior do log para análise futura é a melhor maneira de responder à sua pergunta. Não há solução rápida, alguma investigação observada ao longo do tempo será necessária. Um único que usei para percorrer a superfície do que está usando minha memória é colocar isso no crontab da raiz.

/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. Esse estouro de pilha após o link tem alguns exemplos mais abrangentes de como usar o topo dessa maneira e personalizar superior via .toprc , para estatísticas de CPU, mas pode ser facilmente adaptado para atender às suas necessidades.

    
por 15.09.2013 / 23:43