Você pode desenvolver seu próprio script SystemTap . Você precisa considerar os dois subsistemas a seguir:
- VFS: representa todas as solicitações de E / S antes do cache do Buffer (ou seja, absolutamente todas as solicitações de E / S); revise os probes "vfs.read", "vfs.write" e "kernel.function (" vfs_ * ")"; você precisa filtrar os dispositivos de bloco que deseja monitorar por seus respectivos números maiores + menores.
- Bloco: representa todas as solicitações de E / S enviadas aos dispositivos de bloco antes do planejador de E / S (que também mescla + reordenar as solicitações de E / S); aqui nós sabemos quais solicitações foram perdidas pelo cache Buffer; revise a análise "ioblock.request".
O desenvolvimento do SystemTap leva algum tempo para aprender. Se você é um desenvolvedor moderado e tem um bom conhecimento em Linux, você deve ser feito em 3-4 dias. Sim, leva tempo para aprender, mas você ficará muito feliz com os resultados - o SystemTap oferece a você a oportunidade de (com segurança) colocar testes em praticamente qualquer lugar no kernel Linux.
Note que o seu kernel deve ter suporte para carregar e descarregar módulos do kernel. A maioria dos núcleos de estoque hoje em dia suportam isso. Você também precisará instalar os símbolos de depuração para o seu kernel. Para o meu sistema Ubuntu, isso foi tão fácil quanto fazer o download de um arquivo .deb de várias centenas de MB, que a equipe de desenvolvimento do kernel do Ubuntu compilou para mim. Isto é explicado na página Wiki SystemtapOnUbuntu , por exemplo.
P.S. Pegue a abordagem do SystemTap somente se você não tiver outra solução, porque é uma estrutura totalmente nova que você precisa aprender e que custa tempo / dinheiro e às vezes frustração.