Nuestro modelo de negocio requiere que los usuarios cobren en función de horas/uso de la CPU.Cálculo del uso de CPU
Inicialmente estaba pensando simplemente en usar StopWatch
y luego usar el tiempo transcurrido como una unidad de medida.
Pero el problema que veo con este enfoque es que, en el día cuando 5000 usuarios están accediendo al servidor, el tiempo transcurrido para el mismo código será mayor que en la noche cuando solo 50 usuarios están accediendo al servidor.
Otra opción es cobrar a los usuarios en función de las iteraciones realizadas en los datos que los usuarios pasaron. También hay un par de problemas con este enfoque.
- Algunas funciones no requieren ninguna iteración sobre los datos.
- El uso de CPU para
x + y
es inferior al dex + y * z
.
¿Cuál es una buena forma de calcular la información de uso de CPU en C#/.Net para que todos los usuarios mantengan la misma operación independientemente de la carga del servidor?
Posiblemente, ¿cantidad total de instrucciones reales del nivel de ensamblaje? ¿Hay alguna manera de obtener esa información en C#?
¿Qué otras recomendaciones se pueden abordar?
Muchas gracias por investigar sobre esto.
¿Puede compartir algunos ejemplos de ejecutar un código en un proceso separado y obtener su tiempo de CPU? – Moon
+1 para "para aquellos que no están dispuestos a leer la documentación" (así como para tener una respuesta correcta :-)) – phoog
BTW, ¿qué ocurre si quiero rastrear el uso de una sola función? Puedo envolver ese código dentro de un exe. ¿Pero hay alguna forma mejor? Si la función ejecuta alguna otra tarea en el hilo de fondo, ¿serán parte del mismo proceso y afectarán al 'TotalProcessTime'? – Moon