La sobrecarga de la configuración de los contadores de rendimiento generalmente no es lo suficientemente alta como para preocuparse (configuración de una región de memoria compartida y algunos objetos .NET, junto con la sobrecarga de CLR porque CLR realmente hace la gestión por usted). Aquí me refiero a clases como PerformanceCounter.
La sobrecarga de registrar los contadores de rendimiento puede ser decentemente lenta, pero en general no es una preocupación porque se pretende que ocurra una vez en el tiempo de configuración porque quiere cambiar el estado de toda la máquina. Será eclipsado por cualquier copia que hagas. En general, no es algo que quieras hacer en tiempo de ejecución. Aquí me refiero a PerformanceCounterInstaller.
La sobrecarga de actualizar un contador de rendimiento generalmente se reduce al costo de realizar una operación de enclavamiento en la memoria compartida. Esto es más lento que el acceso a la memoria normal, pero es una primitiva del procesador (así es como se obtienen operaciones atómicas en todo el subsistema de memoria, incluidas las cachés). En general, este costo no es alto de qué preocuparse. Podría ser 10 veces más una operación de memoria normal, posiblemente peor dependiendo de la actualización y de la competencia entre subprocesos y CPU. Pero considere esto, es literalmente imposible hacer algo mejor que las operaciones entrelazadas para la comunicación entre procesos con actualizaciones atómicas, y no se mantienen bloqueos. Aquí me refiero a PerformanceCounter.Increment y métodos similares.
La sobrecarga de leer un contador de rendimiento generalmente es una lectura de la memoria compartida. Como han dicho otros, desea muestrear en un período razonable (al igual que cualquier otro muestreo), pero solo piense en PerfMon y trate de mantener el muestreo en una escala humana (piense segundos en vez de milisegundos) y probablemente no tendrá ningún problemas.
Finalmente, una apelación a la experiencia: los contadores de rendimiento son tan livianos que se usan en todas partes en Windows, desde el kernel hasta los controladores y las aplicaciones del usuario. Microsoft confía en ellos internamente.
Asesoramiento: La verdadera pregunta con contadores de rendimiento es la curva de aprendizaje en la comprensión (que es moderada) y una medición de las cosas correctas (parece fácil pero a menudo te equivocas).
Gracias. ¿Puede, por casualidad, señalarme algunos números? Tengo curiosidad sobre lo bien que lo obtuvieron ... – Boaz
Nunca lo he visto demostrado, pero no tengo motivos para dudarlo. Sería simple probar en una aplicación. – dpurrington
Hola dpurrington. Al decir "es la supervisión ... que causará una degradación del rendimiento", ¿quiere decir que la degradación se verá en el proceso que actualiza/publica los contadores o por el proceso que los está monitoreando? – urig