¿Los contadores de rendimiento son parte de ETW? Si no, ¿cuál es la diferencia entre los dos?Contador de rendimiento frente a ETW
Respuesta
Los contadores de rendimiento y ETW son tecnologías distintas. Los contadores de rendimiento no están expuestos a través de ETW.
La diferencia básica: contadores de rendimiento proporcionan métricas de alto nivel sobre el comportamiento del sistema (contadores de tiempo de reflexión y de bytes leídos y objetos asignados), mientras que ETW es una función de seguimiento y registro de diagnóstico (piensa Debug.WriteLine
mensajes, pero más rica y más estructurado).
Actualmente, tanto ETW como los contadores de rendimiento tienen soporte completo de Windows, y como desarrollador, puede escribir código para producir y consumir datos para ambas tecnologías.
contadores de rendimiento
Performance counters, también conocidos como PDH (Rendimiento Ayudante de datos) contadores, son indicadores numéricos simples que le dan un resumen de alto nivel de cómo un sistema en particular se está comportando. Por ejemplo, % Processor Time
es un contador de rendimiento que le dice cuánto del tiempo del procesador se está utilizando para ejecutar el código de modo de usuario. Como ejemplo más complejo, # of Methods Jitted
en la categoría .NET CLR Jit
indica cuántos métodos .NET se compilaron JIT desde el inicio de una aplicación.
Los contadores de rendimiento se utilizan generalmente para controlar el estado del sistema y para diagnosticar problemas de rendimiento específicos. Son un buen indicador de problemas cuando algo va mal, pero no le dan muchos detalles sobre por qué está ocurriendo un problema en particular.
Para ver los contadores de rendimiento de Windows, simplemente puede ejecutar perfmon
. En Vista +, es posible que deba hacer clic en el nodo "Monitor de rendimiento" para ver el gráfico del contador. Para acceder mediante programación a los contadores de rendimiento, consulte la clase System.Diagnostics.PerformanceCounter
en .NET o PDH library para obtener el código nativo.
seguimiento de eventos para Windows (ETW)
ETW es un sistema de seguimiento integrado en Windows. Esencialmente, cualquier componente (por ejemplo, una aplicación de usuario, o incluso el kernel de Windows mismo) puede enviar información de rastreo de diagnóstico sobre eventos específicos que le preocupan al componente. Por ejemplo, el kernel envía eventos ETW cuando un proceso se inicia y se detiene, cuando una imagen (por ejemplo, DLL) se carga y descarga, cuando se crea o se destruye un hilo, o incluso cuando un hilo hace un cambio de contexto. Los datos registrados están en un formato serializado que es descrito por el componente en otro lugar, permitiendo que las herramientas de diagnóstico lean y entiendan los eventos ETW registrados durante una sesión. Consulte here para obtener un diagrama de cajas y líneas de cómo funciona todo junto.
ETW está destinado a ser rápido y no debe afectar significativamente el rendimiento del sistema cuando el registro no está habilitado. A partir de Vista, ETW es generalizado en todo Windows y está destinado a los desarrolladores de aplicaciones (es decir, específicamente, su aplicación puede ser un proveedor de ETW que registra eventos). ETW es la base del registro de eventos, y puede ser utilizado por perfiladores de rendimiento, depuradores o monitores de sistema.
Vea mi otra publicación SO here para algunos recursos en la interconexión con ETW.
Parece que basado en this document comenzando en Vista + los contadores de rendimiento tienen una fachada ETW para que puedan ser consumidos exactamente de la misma manera que ETW.
La nueva biblioteca de contador de rendimiento (PERFLIB versión 2.0) incluido en Windows Vista® ofrece una serie de ventajas a la promotora, incluyendo:
un mecanismo estándar de comunicación entre procesos (IPC) entre un proveedor y el consumidor que se basa en la notificación de Seguimiento de eventos para Windows (ETW) y que da como resultado un desarrollo simplificado y un código más uniforme y confiable.
- 1. Rendimiento: BinaryFormatter frente a XmlSerializer
- 2. Cronómetro de alto rendimiento frente a Cronómetro
- 3. Pruebas de rendimiento frente a perfiles
- 4. contador de rendimiento personalizado en C#/perfmon
- 5. Cómo restablecer contador de rendimiento personalizada
- 6. Cómo se elimina un contador de rendimiento
- 7. Datos principales frente a Sqlite y rendimiento
- 8. Raqueta interactiva frente a rendimiento compilado
- 9. Rendimiento frente a la calidad del código
- 10. Supervisión del rendimiento: Ganglia frente a grafito
- 11. WCF net.tcp rendimiento frente NamedPipes
- 12. Eliminación de categorías de contador de rendimiento de Windows
- 13. Variables privadas compartidas frente a variables locales/espacio de nombres ¿Contaminación frente a rendimiento?
- 14. El Contador de rendimiento solicitado no es un contador personalizado, tiene que inicializarse como ReadOnly
- 15. Contador de rendimiento: ¿tasa por tipo de minuto?
- 16. .net contador de rendimiento - Proceso (w3wp) \% de tiempo de procesador
- 17. Nombres de categorías de contador de rendimiento? (C#)
- 18. Rendimiento de la operación OR (||) frente a inArray()
- 19. rendimiento del selector de jQuery: una afirmación frente a dos
- 20. Rendimiento de Scala XML frente a Java XML
- 21. rendimiento: selección de unión simple frente a selecciones simples múltiples
- 22. Rendimiento MySQL del campo varchar único frente a bigint único
- 23. Rendimiento del bucle tradicional frente a iterador/foreach en Java
- 24. XML frente a rendimiento binario para serialización/deserialización
- 25. Rendimiento: Python 3.x frente a Python 2.x
- 26. Rendimiento de rendimiento comparativo en Java VM frente a .NET CLR
- 27. Contador de JPA NamedQuery
- 28. Consulta frente a vista
- 29. NUnit frente a MbUnit frente a MSTest frente a xUnit.net
- 30. ¿Cómo puedo añadir un contador de rendimiento a una categoría ya he creado