Como posso limpar meu cache?

0

Estou executando uma distro linux live CD e estou ficando sem exceções de memória.

>java -version
#Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000646e00000, 264241152, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 264241152 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/hs_err_pid50274.log

Eu executei o comando free -m e ele mostra ~ 250Mb de RAM livre e 19Gb usados para cache.

>free -m
            total       used       free     shared    buffers     cached
Mem:        24128      23827        301          0         15      18929
-/+ buffers/cache:      4881      19247
Swap:            0          0          0

Aqui está o despejo de memória:

---------------  S Y S T E M  ---------------

OS:RapidLinux 20151103

uname:Linux 3.18.22 #1 SMP Fri Oct 9 19:28:11 UTC 2015 x86_64
libc:glibc 2.21 NPTL 2.21 
rlimit: STACK 8192k, CORE infinity, NPROC 96487, NOFILE 4096, AS infinity
load average:2.08 1.73 1.30

/proc/meminfo:
MemTotal:       24708040 kB
MemFree:          307572 kB
MemAvailable:     173696 kB
Buffers:           15612 kB
Cached:         19383916 kB
SwapCached:            0 kB
Active:          3784768 kB
Inactive:       19327244 kB
Active(anon):    3742084 kB
Inactive(anon): 19303520 kB
Active(file):      42684 kB
Inactive(file):    23724 kB
Unevictable:       15016 kB
Mlocked:           15016 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                96 kB
Writeback:             0 kB
AnonPages:       3727472 kB
Mapped:            55972 kB
Shmem:          19327344 kB
Slab:             671580 kB
SReclaimable:     116376 kB
SUnreclaim:       555204 kB
KernelStack:       23664 kB
PageTables:        24588 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    12354020 kB
Committed_AS:   28666748 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      738156 kB
VmallocChunk:   34346400260 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
DirectMap4k:       11748 kB
DirectMap2M:     2072576 kB
DirectMap1G:    23068672 kB

Memory: 4k page, physical 24708040k(307572k free), swap 0k(0k free)

Eu tentei limpar o cache executando sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches como uma verificação de integridade e surpreendo a surpresa de que o cache não caiu, mas o comando foi concluído com êxito.

Havia uma tonelada de registros antigos que eu deletei (do aufs / que deveria estar na RAM), executei o comando para limpar o cache - ainda nada.

O restante do sistema de arquivos leva apenas ~ 9Gb. Como posso forçar meu cache a limpar?

    
por ventsyv 14.03.2016 / 19:20

2 respostas

1

Você tem 19 GB de RAM livres para os programas usarem. Não há necessidade de limpar o cache de disco: o sistema irá recuperá-lo se precisar da memória para outra finalidade, como executar um programa. A única coisa que você pode fazer limpando o cache de disco é tornar sua máquina mais lenta.

O espaço em disco é irrelevante. A exclusão de arquivos não ajudará você.

Você tem 19 GB de RAM e o programa alega não alocar 26 MB. Faça as contas: 26MB < 19GB. Este é um bug no programa, seja na maneira como ele aloca memória ou na maneira como relata erros. Verifique /tmp/hs_err_pid50274.log para ver se ele contém mais pistas.

    
por 15.03.2016 / 01:45
1

Shmem: 19327344 kB

Você tem 19 GB em tmpfs ou algum outro objeto de memória compartilhada.

Geralmente é tmpfs . Verifique df -h -t tmpfs .

A memória compartilhada do System V pode ser mostrada por ipcs -m .

Algumas, mas não todas, outras memórias compartilhadas podem ser encontradas digitalizando /proc . Há um pequeno script python na minha resposta aqui: Posso ver a quantidade de memória alocada como buffers GEM?

EDIT: no seu caso, você pode ter algo segurando aberto um arquivo excluído. Isso significaria que o uso do espaço seria exibido em df , mas não em du . É possível varrer /proc/ para arquivos apagados ... Eu não tenho um script tão prático para isso, mas talvez você possa fazer ls -lR /proc | less e procurar a string (deleted) usando o comando / de %código%. Parece possível que você veria que seus arquivos de log excluídos ainda estavam sendo mantidos abertos por algum processo.

    
por 23.11.2018 / 23:45