Linux: Qual aplicativo está usando meu cache de ram

5

Eu estou querendo saber se posso ver qual aplicativo está usando meu buffer e cache de memória RAM. Também existe algum tempo especificado no kernel, quando os dados são descartados do cache. Meu Ram está sendo usado por buffer e cache, e ele também começa a trocar.

Saída do free -m:

$ free -m 
             total       used       free     shared    buffers     cached
Mem:         14034      13878        156          0         10      11362
-/+ buffers/cache:       2505      11528
Swap:         8187        478       7709
    
por Deven 31.01.2015 / 10:25

1 resposta

1

Não, não come swap. Ele serve apenas como um cache de bloco. Na maior parte do cache, o cache não pode entrar em swap, mas algumas exceções também existem para essa regra. Por exemplo, o armazenamento em cache de um disco rígido lento em um SSD rápido pode ser bom.

Mas, no seu caso, a situação é muito mais simples: Linux (e qualquer outro sistema operacional) usa todos (ou quase todos) do RAM livre no cache do disco rígido. E, não, isso não é um problema, porque se uma nova página de memória for necessária, uma página de cache de leitura pode ser sempre liberada. E usar o maior número possível de cache de blocos faz com que a velocidade média de operação de arquivos seja melhor.

Na verdade, se você quiser conhecer a memória livre real do seu sistema, você deve calcular os "buffers" e "cache" como se estivessem livres.

O que você pode ler no título "livre" é, na verdade, o tamanho de memória (na maioria das vezes muito pequeno), que não é (não podia ser) usado até mesmo para o cache. Não é um problema, e se o seu sistema é lento, não é por causa disso.

A causa do seu uso de swap: algum bloco de memória, que pareça muito inutilizado para o kernel , pode ser totalmente trocado. Estas são especialmente as regiões de memória de diferentes daemons, que só ficam no RAM e não fazem nada. Trocar sua memória não é um problema, porque eles não são usados para nada, mas usando suas páginas RAM agora livres para cache pode tornar seu sistema mais rápido .

Qual processo usa o cache? É realmente difícil descobrir, praticamente impossível. O cache de bloco não é preenchido por processos, é preenchido por operações de leitura de disco. Se um bloco de disco está atualmente no cache (o que significa que ler este bloco novamente não precisa esperar pelo seu disco rígido), isso significa que alguém lê este bloco, mas ele não está registrado, o que processo foi isso. Se você quiser saber esses dados, você precisa assistir ao seu uso de leitura de disco enquanto isso acontece!

Existe uma ferramenta para isso, seu nome é blkmon . É capaz de assistir o dispositivo de bloco ler (e escrever) operações, o google é seu amigo (ou estamos aguardando sua próxima pergunta, aqui ou no unix SE, também).

    
por 31.01.2015 / 11:55