Estou procurando a possibilidade de medir quanto tempo leva para concluir a operação de arquivo emitida para o driver NTFS (abrir arquivo fechar arquivo excluir arquivo, gravar, ler etc.) e poder registrá-lo. Não consigo alterar o aplicativo para medir o tempo dentro do aplicativo. Estou interessado em quanto tempo passa entre a emissão de uma chamada e o retorno à execução do aplicativo.
O aplicativo está gravando continuamente no volume NTFS colocado no armazenamento iSCSI. Ele também remove rotineiramente os arquivos mais antigos. Os tamanhos dos arquivos estão entre 100 e 200 MB. Sempre há cerca de 10% de espaço livre no volume. Em algum momento, o aplicativo não consegue gravar dados em ritmo regular e, portanto, começa a armazenar em buffer na memória. Então, algo acontece e o buffer começa a esvaziar e tudo volta ao normal.
Testei para operações de E / S em volumes físicos e lógicos - não vejo anomalias durante a "interrupção"
Agora, quero descobrir se o problema está no aplicativo ou em algum lugar do SO. Por esse motivo, eu estava pensando se sou capaz de registrar todos os tempos de operações de arquivo, poderei descobrir se é um sistema que leva mais tempo do que o normal ou se as operações são rápidas e se algo bloqueia o aplicativo.
A plataforma é Windows Server 2008R2 de 64 bits. Eu tentei o sysinternals process monitor, mas ele não registra o tempo de execução. Pode demorar algumas horas para o problema aparecer.
Você pode sugerir a ferramenta certa para este trabalho?
fonte
Respostas:
Contrate alguém para escrever um driver de filtro monolítico ou mini filtro para o sistema de arquivos. Você poderá interceptar todas as chamadas de aplicativos específicos de seu interesse e rastreá-las diretamente no NTFS ou em qualquer outro ponto de entrada do driver FS. O OSR tinha algum kit de interceptação de dados (?) Ou o que quer que fosse, também pode ser útil.
https://www.osr.com/dmk/
fonte