Liberar o cache de páginas usando o echo 3 / proc / sys / vm / drop_caches não funciona?

2
free -m
             total       used       free     shared    buffers     cached
Mem:         24055      22439       1615       8969         16       9096
-/+ buffers/cache:      13326      10728
Swap:            0          0          0

Então, eu estou aqui inicialmente, eu gostaria de um pouco de espaço extra de memória RAM para que meu spotify pare de funcionar ou então eu possa iniciar outro servidor java ou qualquer outra coisa.

Eu tento echo 3 > /proc/sys/vm/drop_caches , mas não há dados. readout é o mesmo depois. Mesmo depois de fechar o chrome e todas as coisas que consomem muita memória, o cache de páginas ainda está aguentando, até reiniciar realmente.

O que causa isso?

    
por MikePatel 14.04.2015 / 17:32

4 respostas

2

Eu sempre fiz:

echo 3 | sudo tee /proc/sys/vm/drop_caches
    
por gorgoth 29.04.2016 / 03:01
1

De um prompt sudo , aqui está um verso que você pode usar:

# free -m  && sync && echo 3 > /proc/sys/vm/drop_caches && free -m
              total        used        free      shared  buff/cache   available
Mem:           7840        1958        2775         739        3106        4795
Swap:          7999           0        7999
              total        used        free      shared  buff/cache   available
Mem:           7840        1958        4698         734        1183        4860
Swap:          7999           0        7999

Isso liberou 2 GiB de buffer / cache. Passou de 3,1 GB para 1,2 GB.

Por isso, funciona como deveria, no entanto, no seu caso, você não tinha armazenamento em buffer na RAM que poderia ser liberado.

    
por WinEunuuchs2Unix 10.09.2017 / 21:11
1

O Linux (kernel) faz uso de memória não utilizada para cache de páginas (e cache de buffer - ele ainda existe) para desempenho.

free - > não usado para qualquer coisa

echo 3 > /proc/sys/vm/drop_caches libera pagecache, dentries e inodes que retornarão cache de página / cache de buffer para "liberar".

Ubuntu 14.04

# free -m
             total       used       free     shared    buffers     cached
Mem:          1375       1289         85          5        112        302
-/+ buffers/cache:        875        500
Swap:            0          0          0

# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0  87660 115120 309500    0    0     1     9    4   18  0  0 100  0  0
# echo 3 > /proc/sys/vm/drop_caches
# vmstat
fprocs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 512720   2236  25756    0    0     1     9    4   18  0  0 100  0  0
# free -m
             total       used       free     shared    buffers     cached
Mem:          1375        874        500          5          2         25
-/+ buffers/cache:        847        528
Swap:            0          0          0

buffers e cached serão reduzidos e free aumentará, mas isso não significa que você tenha mais memória disponível para aplicativos.

No seu caso, olhando para + buffers/cache , que é 10728MB, essa era a memória disponível atualmente para aplicativos.

Para mais informações, verifique Linux comeu minha memória RAM!

% bl0ck_qu0te%

A saída combina buff / cache e removeu o pouco confuso -/+ buffers/cache .

Podemos ver claramente que buff/cache caiu, mas available não mudou. Eu pessoalmente acho que é uma melhor implementação / interpretação.

# free -m
              total        used        free      shared  buff/cache   available
Mem:           1874         117          18           1        1737        1708
Swap:             0           0           0
# echo 3 > /proc/sys/vm/drop_caches
# free -m
              total        used        free      shared  buff/cache   available
Mem:           1874         117        1654           1         102        1708
Swap:             0   
    
por Terry Wang 26.11.2015 / 00:05
0

Considere adicionar algum espaço de troca. Quando o sistema começa a ficar sem memória, o killer OOM (Out Of Memory) começará a matar aplicativos para liberar recursos. Muitas vezes mata os aplicativos que você precisa executar.

dd if=/dev/zero of=/mnt/swapfile bs=1024 count=1048576

lhe dará um arquivo de swap de 1GB em seu diretório / mnt. Em seguida, transforme-o em espaço de troca real com:

mkswap /mnt/swapfile

e depois ligá-lo:

swapon /mnt/swapfile

você também vai querer persistir durante a reinicialização, então edite seu arquivo / etc / fstab para incluir:

/mnt/swapfile   none            swap    sw              0       0
    
por Ken S. 04.05.2015 / 17:52