Я ищу возможность измерить, сколько времени требуется, чтобы завершить файловую операцию, выданную драйверу NTFS (открыть файл, закрыть файл, удалить файл, записать, прочитать и т. Д.), И иметь возможность войти в него. Я не могу изменить приложение, чтобы измерить время внутри приложения. Меня интересует, сколько времени проходит между выполнением вызова и возвратом к выполнению приложения.
Приложение непрерывно записывает на том NTFS, помещенный в хранилище iSCSI. Также регулярно удаляются самые старые файлы. Размер файла составляет от 100 до 200 МБ. На томе всегда есть около 10% свободного места. В какой-то момент приложение не может записывать данные в обычном темпе, поэтому оно начинает буферизоваться в памяти. Затем что-то происходит, и буфер начинает очищаться, и все возвращается в норму.
Я проверил операции ввода-вывода как на физическом, так и на логическом томах - я не вижу никаких аномалий во время «отключения»
Теперь я хочу выяснить, есть ли проблема в приложении или где-то в ОС. По этой причине я думал, что если мне удастся зарегистрировать все тайминги файловых операций, я смогу выяснить, если это система, которая занимает больше времени, чем обычно, или операции выполняются быстро и что-то блокируется внутри приложения.
Платформа является 64-битной Windows Server 2008R2. Я попытался монитор процесса sysinternals, но он не регистрирует время выполнения. Проблема может появиться через несколько часов.
Можете ли вы предложить правильный инструмент для этой работы?
источник
Ответы:
Наймите кого-нибудь, чтобы написать либо монолитный, либо мини-драйвер фильтра для файловой системы. Вы сможете перехватывать все вызовы из конкретного интересующего приложения и отслеживать их прямо в NTFS или любых других точках входа драйвера FS. У OSR был какой-то набор для перехвата данных (?) Или что-то еще, что могло пригодиться
https://www.osr.com/dmk/
источник