¿Hay alguna herramienta disponible para el perfil .Net Discusión del hilo. He agregado un contador de rendimiento para los hilos de un servicio de Windows que se está ejecutando lentamente. Muestra alrededor de 150 conflictos de hilos. Me gustaría crear un perfil de qué área del código es responsable de gran parte de las disputas de subprocesos. ¿Hay alguna herramienta disponible que pueda indicarme los bloques de código correctos?Creación de perfiles .Net thread contention
Respuesta
No es un generador de perfiles, pero windbg con la extensión sosex.dll puede decirle qué interbloqueos tiene. Búsquelo here y lea sobre el comando! Dlk.
Me encontré con el mismo problema con un proyecto de Visual Studio 2008, por lo que no pude usar el generador de perfiles de contención de hilos de VS2010. En su lugar, escribí una clase de diagnóstico, TimedMonitor, que rastrea la cantidad de tiempo que se pasa esperando bloqueos.
Para usarlo, debería reemplazar:
object myLock = new object();
lock (myLock) { /* do work */ }
con:
TimedMonitor timedLock = new TimedMonitor();
using (timedLock.Lock()) { /* do work */ }
Console.WriteLine("Lock was entered {0} times; total wait time: {1}.",
timedLock.EnterCount, timedLock.WaitTime);
Si sólo está utilizando un pequeño número de bloqueos simples (es decir, con Monitor.Enter o el bloqueo palabra clave), reemplazarlos con TimedMonitor y registrar el resultado puede ayudar a identificar qué bloqueo es responsable de la mayor cantidad de tiempo de espera. Sin embargo, si está utilizando bloqueos administrados más complejos (por ejemplo, ReaderWriterLock) o sincronización nativa (por ejemplo, ManualResetEvent), no será útil, ya que no los rastrea.
- 1. Creación de perfiles de aplicaciones .NET con Cronómetro
- 2. Creación de perfiles de un pinvoke dinámico
- 3. Herramientas de generación de perfiles .NET
- 4. Creación de perfiles de un complemento dll
- 5. Herramienta de creación de perfiles para Clojure?
- 6. Creación de perfiles de aplicaciones jQuery
- 7. Instrucciones de seguimiento/creación de perfiles
- 8. Creación de perfiles de sitios web ASP.NET con EQATEC Profiler
- 9. .NET Thread Synchronization
- 10. ¿Existe una herramienta de supervisión y creación de perfiles para soluciones .Net como VisualVM para Java?
- 11. Aplicaciones de generación de perfiles C#/.NET
- 12. Creación de perfiles de módulos de núcleo de Linux
- 13. Creación de perfiles Tiempo de inicio de Vim
- 14. Programa de creación de perfiles por tipo de actividad
- 15. Creación de perfiles de un conjunto de multiprocesos python
- 16. Creación de perfiles de una aplicación de Chrome
- 17. Recomendaciones para las herramientas de creación de perfiles de C++
- 18. Creación de perfiles de una aplicación Java Spring
- 19. ¿Qué significa frame_dummy en el contexto de creación de perfiles?
- 20. Creación de perfiles en sistemas embebidos baremetal (ARM)
- 21. Diferencia entre muestreo y creación de perfiles en jVisualvm
- 22. Thread Pool vs Thread Spawning
- 23. Creación de EPUB en .Net
- 24. ¿perfiles maven o perfiles de resorte?
- 25. herramientas de visualización de perfiles?
- 26. Creación de scripts de objetos .NET
- 27. std :: thread detect principal thread
- 28. Thread ID vs. Thread Handle
- 29. Thread sleep y thread join
- 30. Creación de proyectos .NET 4 con Nant
Sí, estoy buscando algo así. Pero desafortunadamente estoy en VS.Net 2005 – Amitabh
@Amitabh: puede descargar VS2010 aquí: http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx –
VS2010 puede orientar .NET 2.0. Solo necesita actualizar los archivos del proyecto (.csproj, .vbproj) y las soluciones (.sln). No es necesario migrar el código. No estoy seguro de si puede usar el generador de perfiles con proyectos .NET 2.0, pero creo que vale la pena. –