Monitor quando leitura / gravação em metadados ou arquivos mmaped acertam o disco

3

Em um servidor que hospeda uma grande variedade de sites, muitas vezes vejo o IO se tornar um gargalo sem poder identificar os processos responsáveis pelas operações de IO com ferramentas como iotop, iostat ou sar.

Eu suspeito que esses processos estão executando muito IO em metadados (lendo e / ou escrevendo atributos, criando ou removendo muitos arquivos vazios, etc). Infelizmente, parece que essas operações não são contabilizadas "por processos", nem são executadas usando arquivos mapeados na memória (mmap).

A minha pergunta é: Existe uma maneira de monitorar e / ou conta (por exemplo, usando cgroups e blkio) IO por processo ou (talvez ainda melhor) por arquivo, incluindo io em metadados e arquivos mapeados na memória?

Atualmente, estou tentando explicar "quais solicitações atingiram o disco" usando systemtap, sondando handle_mm_fault () (mm / memory.c no kernel) para falhas de página principais, mas não consegui verificar se A manipulação de metadados do sistema de arquivos gera falhas de página tratadas por esta função.

Obrigado pelas suas ideias!

    
por Martin Richard 31.03.2014 / 23:05

2 respostas

1

Eu criei um script systemtap que é parecido com o que eu queria fazer, mas ele não rastreia gravações.

O código está em uma essência: link

    
por 14.04.2014 / 11:51
0

Após o meu comentário, acabei de me lembrar deste ótimo comando: iotop

iotop  watches I/O usage information output by the Linux kernel (requires
2.6.20 or later) and displays a table of current I/O usage by processes or 
threads on the system.

No entanto, geralmente não é instalado, pois o seu servidor parece estar em produção, você pode querer dar uma olhada aqui se você não puder instalá-lo.

O lsof também é um ótimo comando para verificar arquivos abertos pelo processo.

    
por 01.04.2014 / 02:20