Ответ 1
Я нашел решение. Спасибо за все ваши комментарии, все они были очень полезны.
Первым шагом является нормальная установка нового PerformanceCounterCategory
, самое главное - установить его как PerformanceCounterCategoryType.MultiInstance
например.
var countersToCreate = new CounterCreationDataCollection();
var memoryCounterData = new CounterCreationData("Memory Usage", "Memory Usage", PerformanceCounterType.NumberOfItems64);
countersToCreate.Add(memoryCounterData);
PerformanceCounterCategory.Create("KB Memory Usage", "KB Memory Usage", PerformanceCounterCategoryType.MultiInstance, countersToCreate);
Следующим шагом должен быть простой сервис Windows или консольное приложение, которое должно читать значения для каждого процесса из process.WorkingSet64
и устанавливать их на PerformanceCounter
. Это приложение или служба должны запускаться во время выполнения вашего теста нагрузки и, конечно, в режиме x64.
например.
static void Main(string[] args)
{
while (true)
{
Thread.Sleep(500);
foreach (var process in Process.GetProcesses())
{
var memoryUsage = new PerformanceCounter("KB Memory Usage", "Memory Usage", process.ProcessName, false);
memoryUsage.RawValue = process.WorkingSet64/1024;
}
}
}