A memória slab será liberada quando necessário pelos programas do usuário?

4

Gostaria de esclarecer se a memória slab do Linux será liberada (ou principalmente liberada) se os programas do espaço de usuário precisarem.

Eu notei que um dos meus sistemas Linux tinha uma grande quantidade de memória alocada para "slab":

(do slabtop)

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                   
834768 834766  99%    0.94K  24552       34    785664K ext4_inode_cache
694092 354151  51%    0.19K  33052       21    132208K dentry

Sei que posso limpá-lo manualmente se quiser com (sync; echo 3 > / proc / sys / vm / drop_caches) mas preciso ou o Linux o liberará sozinho quando necessário?

    
por MT. 24.02.2012 / 19:27

1 resposta

2

Em suma, sim, o kernel irá liberar placas para criar espaço para aplicativos de espaço do usuário.

A "memória slab" a que você se refere é memória alocada pelo kernel usando uma técnica para reduzir a fragmentação de RAM. Não é um certo tipo de memória ou espaço reservado para alguns dados extras especiais. Está disponível desde a versão 2.2 do kernel. O truque é alocar trechos de memória de tamanho fixo para uso de objetos que se encaixam nesses trechos e gerenciar a alocação e a desalocação dos trechos como um todo quando necessário.

O Linux mantém tantos dados residentes na RAM quanto possível para acelerar o acesso. Os caches inode e dentry estão lá para acelerar o acesso ao seu sistema de arquivos. Se você tem processos extremamente agressivos que o Linux está matando porque eles estão tentando reivindicar muita memória, ajustar os parâmetros de limpeza do cache pode ajudar, mas é improvável. Para esse tipo de informação, consulte a documentação do vfs_cache_pressure .

    
por 25.02.2012 / 04:29

Tags