Extraordinariamente alto nfs_inode_cache

4

Meu servidor está experimentando um alto uso de nfs_inode_cache = 11G, estou tentando descobrir o que está consumindo tudo isso, eu já sei que diretórios com um grande número de entradas e estruturas de diretório profundas são pesquisadas e percorridas por alguns aplicativos java. p>

Existe alguma maneira de olhar para o cache dentry para ver o que toda essa memória é (quais são os caminhos que estão sendo armazenados em cache)?

Aqui está o meu comando slabtop:

   OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME
8603424 8603424 100%    1.01K 2867808        3  11471232K nfs_inode_cache
3080826 3080737  99%    0.21K 171157       18    684628K dentry_cache
 24717  12515  50%    0.52K   3531        7     14124K radix_tree_node
 11365  11108  97%    0.74K   2273        5      9092K ext3_inode_cache

Aqui está minha pressão de cache: cat / proc / sys / vm / vfs_cache_pressure 100

    
por user1335838 17.06.2014 / 12:36

1 resposta

0

Você está enfrentando algum problema? Como é seu uso de RAM? (ex. free -m )

É perfeitamente normal que o Linux use qualquer memória RAM disponível para armazenamento em cache - alguns deles serão mostrados através de slabtop (dentries, inodes, etc.) e o resto através da memória cache em free -m '(pagecache / swapcache).

/proc/sys/vm/vfs_cache_pressure controla as proporções pelas quais o kernel as libertará. 100 se a configuração padrão "justa". Reduzir esse valor favorece a remoção de pagecache (ou seja, o conteúdo do arquivo), enquanto o aumento favorece a remoção de metadados do sistema de arquivos (inodes, etc ...). Em qualquer caso, a limpeza do cache só acontecerá sob a pressão da memória; se você tiver muita memória não utilizada, o kernel irá mantê-la usada para armazenamento em cache.

Provavelmente uma configuração muito mais importante é vm.swappiness - esta controla o comportamento do kernel para trocar memória versus recuperar memória cache. O valor padrão é bom na maioria dos casos, mas se você vir processos interrompidos / trocados durante períodos de E / S intensos com muito mais memória RAM em cache do que o necessário, é muito provável que você queira reduzi-lo. Além disso, se você tiver uma grande quantidade de memória e um kernel bastante antigo, pode ser necessário ajustar um desses parâmetros (a razão * bytes ou *, não os dois!):

  • dirty_background_bytes
  • dirty_background_ratio
  • dirty_bytes
  • dirty_ratio

Todas essas configurações estão totalmente documentadas aqui: link

No entanto, se você não tiver problemas, processos suspensos, troca excessiva etc., sugiro não alterar os padrões.

    
por 13.05.2015 / 07:10