Pracuję nad programem działającym w tle, który będzie działał przez długi czas i mam program zewnętrznego rejestrowania (SmartInspect), który chcę okresowo podawać z niektórymi wartościami, aby monitorować go w czasie rzeczywistym podczas debugowania.Czy program C# może w jakiś sposób mierzyć wykorzystanie własnego procesora?
Wiem, że mogę po prostu uruchomić wiele programów, takich jak Menedżer zadań lub IARSN TaskInfo, ale chciałbym zachować wszystko w swoim własnym programie, ponieważ chcę również dodać proste zasady, takie jak program używa więcej niż X% CPU, zaznacz to w dzienniku.
Mam wątek tła, które okresowo żywi pewne statystyki do SmartInspect, jak zużycie pamięci, ustawić roboczą itp
Czy jest możliwe dla tego wątku, aby uzyskać dość dokładną miarę jak dużo zasobów procesora w komputerze to konsumuje? Główny program jest aplikacją jednowątkową (poza wątkiem watchdoga, który rejestruje statystyki), więc jeśli technika jest ograniczona do , to jak bardzo pojedynczy wątek będzie używać, to też byłoby dobre.
Znalazłem kilka wpisów związanych z czymś o nazwie rusage dla Linuksa i C. Czy jest coś podobnego mogę użyć do tego?
Edit: Ok, próbowałem drogę liczników wydajności, ale to dodaje sporo GC-danych za każdym razem o nazwie, więc wykres dla wykorzystania pamięci i zbierania śmieci gwałtownie wzrosła. Chyba zostawię tę część na razie.
To działało znacznie lepiej i nie dodało tak dużego nacisku na GC, tylko niewielki wzrost. Dzięki! –
@axk Artykuł nie wydaje się być dostępny, czy może ukończyć odpowiedź, która tylko wskazuje, jak odzyskać TYLKO bieżącą część procesora? – J4N