Nasz model biznesowy wymaga obciążania użytkowników na podstawie godzin/zużycia procesora.Obliczanie użycia procesora
Początkowo myślałem o tym, aby po prostu użyć StopWatch
, a następnie użyć czasu, który upłynął jako jednostka miary.
Ale problem z tym podejściem polega na tym, że w dniu, w którym 5000 użytkowników trafia na serwer, czas, jaki upłynął dla tego samego fragmentu kodu, będzie wyższy niż w nocy, kiedy tylko 50 użytkowników uderza w serwer.
Inną opcją jest obciążanie użytkowników na podstawie iteracji wykonanych na danych przekazanych przez użytkowników. Istnieje kilka problemów związanych z tym podejściem.
- Niektóre funkcje nie wymagają żadnej iteracji danych.
- Wykorzystanie procesora dla
x + y
jest niższe niż w przypadkux + y * z
.
Jaki jest dobry sposób obliczania informacji o wykorzystaniu procesora w C#/.NET, aby pozostał taki sam dla wszystkich użytkowników dla tej samej operacji, niezależnie od obciążenia serwera?
Prawdopodobnie, całkowita liczba rzeczywistych instrukcji na poziomie zespołu? Czy istnieje sposób, aby uzyskać te informacje w języku C#?
Jakie inne podejścia, rekomendacje możesz udostępniać?
Wielkie dzięki za rozpatrzenie tego.
Czy możesz podzielić się przykładami wykonania kodu w oddzielnym procesie i uzyskaniem czasu procesora? – Moon
+1 dla "dla tych, którzy nie chcą czytać dokumentacji" (jak również dla otrzymania poprawnej odpowiedzi :-)) – phoog
BTW, co jeśli chcę śledzić użycie tylko jednej funkcji? Mogę zawinąć ten kod wewnątrz exe. Ale czy istnieje lepszy sposób? Jeśli funkcja wykonuje inne zadanie w wątku tła, czy będą one częścią tego samego procesu i będą miały wpływ na 'TotalProcessTime'? – Moon