j000rn Skrevet 1. juli 2008 Del Skrevet 1. juli 2008 (endret) 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 1. juli 2008 av jorn79 Lenke til kommentar
j000rn Skrevet 2. juli 2008 Forfatter Del Skrevet 2. juli 2008 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå