Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Windows. Как в автотестах проверять использование кэша в оперативной памяти? Частоту обращений к hard drive?

csharp
windows
performance
stress
load
.net
Теги: #<Tag:0x00007fedb87971f8> #<Tag:0x00007fedb87970b8> #<Tag:0x00007fedb8796f50> #<Tag:0x00007fedb8796e10> #<Tag:0x00007fedb8796b68> #<Tag:0x00007fedb87969d8>

(Tatyana Durova) #1

В требованиях к приложению под windows сказано, что при обращений к часто используемым данным они должны сохраняться в кэше в оперативной памяти для уменьшения обращений к жесткому диску. Т.е. возможно даже кэш в приложении используется не для ускорения работы приложения, а для меньшего износа HD. Какие классы/библиотеки можно использовать, можно ли вообще написать такой автотест? (C#)


(Дмитрий Мирошник) #2

Очень трудно сказать что-либо конкретное, поскольку непонятна архитектура приложения.
Если приложение построено на сервисах, можно попытаться с некоторой долей вероятности это проверить, используя следующий метод:
1). Создаём достаточно ресурсоёмкий запрос (чтобы ответ без кэширования занимал несколько секунд).
2). Запускаем его вторично. В случае перемещения данных в кэш, запрос выполнится значительно быстрее.

Для повторяемости результатов, референсный тест необходимо запускать с pragma=no-cache.
Разумеется, это только догадки, поскольку реализация алгоритма, считающего данные “часто используемыми”, мне неизвестна. Возможно, придётся повторить п.1 несколько раз или выполнить запрос с каким-нить специальным ключом, запускающим данный алгоритм безоговорочно или ещё что-нить в том же духе.


(Tatyana Durova) #3

А если основное требование это частота обращений к жесткому диску, это вообще можно замерить как то (в .net/windows)?


(Дмитрий Мирошник) #4

Ну, чисто технически, наверное, можно, поскольку task manager умеет отображать использование HDD. Значит, данная задача выполнима. Я бы не рекомендовал таким заморачиваться, поскольку ускорение обработки запроса - 1 из признаков кеширования, вне зависимости от целей его применения, но если Вам так хочется, то попробуйте.
В таком случае Ваш тест должен выглядеть так:
1). Запускаем запрос, меряем read / write bytes для Вашей программы.
2). Запускаем его вторично (или сколько там раз потребуется, чтобы он посчитался часто используемым и закешировался) и проверяем, что прирост read / write bytes замедлился.


(Сергей Кузьмин) #5

resource manager,
performance counters.
wmi
https://msdn.microsoft.com/en-us/library/aa394569(v=vs.85).aspx