Ao descartar o cache de páginas, quem está liberando-o?

0

Quando eu corro

echo 1 > /proc/sys/vm/drop_caches

E o bloco de memória em cache está desmarcado, como posso saber quem liberou essa memória? Ou está liberando memória de não mais executar processos?

    
por JackLeo 15.08.2017 / 16:40

1 resposta

2

echo 1 > /proc/sys/vm/drop_caches libera o cache da página. Esta é a memória do kernel que contém o conteúdo dos blocos de disco. Esta memória pertence ao kernel.

É um pouco enganador descrevê-lo como "liberar" a memória. A memória não foi mantida em primeiro lugar: é um cache. As páginas de cache são removidas da memória se a memória for necessária para um propósito mais importante. Isso é possível precisamente porque eles não são mantidos - ninguém precisa deles.

O conteúdo das entradas de cache pode pertencer a qualquer número de processos. Muitas vezes, uma página de memória não pertence a um único processo. Por exemplo, se a página contiver uma página em cache de um arquivo, pode-se dizer que ela pertence a qualquer um dos processos que tenham o arquivo aberto. Mas também pode-se dizer que pertence ao sistema como um todo, já que a entrada do cache é útil mesmo se nenhum processo tiver o arquivo aberto no momento.

Observe que descartar o cache é útil apenas para uma coisa: fazer benchmarks de I / O com um cache pristine. Os caches de disco são vitais para o desempenho, e descartá-los é um grande sucesso de desempenho (e por isso não está deixando espaço suficiente na RAM para caches, a propósito).

    
por 17.08.2017 / 02:18