Il nostro modello di business richiede l'addebito agli utenti in base alle ore di utilizzo/CPU.Calcolo dell'utilizzo della CPU
Inizialmente stavo pensando di utilizzare semplicemente StopWatch
e quindi utilizzare il tempo trascorso come unità di misura.
Ma il problema che vedo con questo approccio è che nel momento del giorno in cui 5000 utenti stanno colpendo il server, il tempo trascorso per lo stesso pezzo di codice sarà maggiore rispetto alla notte quando solo 50 utenti stanno colpendo il server.
Un'altra opzione è addebitare gli utenti in base alle iterazioni eseguite sui dati inviati dagli utenti. Ci sono anche due problemi con questo approccio.
- Alcune funzioni non richiedono alcuna iterazione sui dati.
- L'utilizzo della CPU per
x + y
è inferiore a quello dix + y * z
.
Che cosa è un buon modo per calcolare le informazioni sull'utilizzo della CPU in C# /. Net in modo che rimanga lo stesso per tutti gli utenti per la stessa operazione indipendentemente dal carico del server?
Possibilmente, quantità totale di istruzioni a livello di assemblaggio effettivo? C'è un modo per ottenere quell'informazione in C#?
Quale altro approccio, quali consigli puoi condividere?
Grazie mille per aver esaminato questo.
Puoi condividere alcuni esempi di esecuzione di un codice in un processo separato e tempo di CPU? – Moon
+1 per "per coloro che non sono disposti a leggere la documentazione" (così come per avere una risposta corretta :-)) – phoog
BTW, cosa succede se voglio monitorare l'utilizzo di una sola funzione? Posso avvolgere quel codice all'interno di un exe. Ma c'è un modo migliore? Se la funzione esegue qualche altra attività nel thread in background, faranno parte dello stesso processo e avranno un impatto su 'TotalProcessTime'? – Moon