Gå til innhold

System.Diagnostics.PerformanceCounter går *SAKTE*


Anbefalte innlegg

System.Diagnostics.PerformanceCounter går sakte. Det går helt greit å bruke denne til å hente ut et par verdier. For å overvåke flere maskiner er den derimot ganske håpløs.

 

Jeg prøver å overvåke flere maskiner (1 maskin pr. thread), med helst 50+ performance countere pr. maskin.

 

Selv om hver maskin blir monitorert fra sin egen tråd bruker PerformanceCounter lengre tid jo flere maskiner/tråder som blir kjørt. Med 6 maskiner og ca. 20 countere pr maskin bruker den over 10 sekunder pr. maskin. Det blir da også brukt mye CPU på maskinen som kjører programmet.

 

Om jeg fjerner .NextValue() (eller .RawValue) fra koden går programmet lynkjapt og oppfører seg fint.

 

Noen forslag til en bedre løsning før jeg begynner å grave meg ned i PerformanceCounter koden i Reflector?

Endret av jorn79
Lenke til kommentar
Videoannonse
Annonse

Problemet er løst :)

PerformanceCounter klassen henter ut ALLE countere innen en kategori hver gang man spør om 1 counter. F.eks. spurte jeg om CPU bruk på en 8 kjerners maskin. Dette gjorde at alle counterene ble hentet ut 8 ganger...

 

Løsningen er å bruke PerformanceCounterCategory.ReadCategory() for å hente ut alle counterene for de kategoriene jeg trenger.

 

I mitt tilfelle leses det nå 6 ganger (kategorier) istedenfor 60 ganger (ant countere) pr. maskin...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...