Назад | Перейти на главную страницу

Windows / NTFS - можно ли измерить время завершения файловых операций?

Я ищу возможность измерить, сколько времени требуется для завершения операции с файлом, выданной драйверу NTFS (открыть файл, закрыть файл, удалить файл, записать, прочитать и т. Д.) И иметь возможность регистрировать его. Я не могу изменить приложение для измерения времени внутри приложения. Меня интересует, сколько времени проходит между вызовом и возвратом к выполнению приложения.

Приложение непрерывно записывает на том NTFS, размещенный в хранилище iSCSI. Также регулярно удаляются самые старые файлы. Размеры файлов от 100 до 200 МБ. На томе всегда имеется около 10% свободного места. В какой-то момент приложение не может записывать данные в обычном темпе, поэтому оно начинает буферизацию в памяти. Затем что-то происходит, буфер начинает опустошаться, и все возвращается в норму.

Я тестировал операции ввода-вывода как на физических, так и на логических томах - не вижу аномалий во время «простоя»

Теперь я хочу узнать, в приложении или где-то в ОС проблема. По этой причине я подумал, что если я смогу регистрировать все тайминги файловых операций, я смогу выяснить, является ли это системой, которая занимает больше времени, чем обычно, или операции выполняются быстро и что-то блокируется внутри приложения.

Платформа - 64-битная Windows Server 2008R2. Я попробовал монитор процессов sysinternals, но он не регистрирует время выполнения. Проблема может проявиться через несколько часов.

Вы можете предложить подходящий инструмент для этой работы?

Наймите кого-нибудь для написания монолитного или мини-драйвера фильтра для файловой системы. Вы сможете перехватывать все вызовы от конкретного интересующего приложения и отслеживать их прямо до NTFS или любых других точек входа драйвера FS. У OSR был какой-то комплект для перехвата данных (?) Или что-то еще, тоже могло пригодиться.

https://www.osr.com/dmk/