Настроить предупреждение монитора производительности для процесса, который запускается время от времени?
Я играл с Performance Monitor в Windows 7 и смог создать набор сборщиков данных, который отслеживает процесс и регистрирует оповещение, когда частные байты превышают некоторый порог. Я хочу использовать это, когда мы запускаем определенные тесты, как грубый улов для серьезных утечек памяти.
Кажется, я должен запустить свое приложение, а затем вручную запустить набор сбора данных. Есть ли какой-нибудь способ, которым набор сбора данных может просто продолжать работать, даже если не отслеживается процесс, который он отслеживает? Если это невозможно, могу ли я связать начало набора данных с запуском моего приложения?
1 ответ
Решение
После осмотра я обнаружил, что могу программно запустить набор сбора данных. Мой код выглядит примерно так:
#include <pla.h>
void start_perfmon_data_collection_set(const wchar_t* dcs_name)
{
IDataCollectorSet* pdcs;
HRESULT hr = CoCreateInstance(__uuidof(DataCollectorSet),
NULL,
CLSCTX_SERVER,
__uuidof(IDataCollectorSet),
(void**) &pdcs);
if (FAILED(hr))
{
TRACE(L"CoCreateInstance(__uuidof(DataCollectorSet) failed with 0x%x.\n", hr);
return;
}
if (FAILED(pdcs->Query(dcs_name, NULL)))
{
TRACE(L"unable to query %s\n", dcs_name);
}
else
{
if (FAILED(pdcs->Start(false)))
{
DataCollectorSetStatus status;
pdcs->get_Status(&status);
TRACE(L"status = %d\n", status);
}
}
pdcs->Release();
}