En el pasado utilicé herramientas de perfilado de rendimiento como nprof, perfilador Equatec y perfilador Yourkit para identificar y eliminar/reducir cuellos de botella de rendimiento en código que se ejecuta principalmente en un subproceso (ejecución serializada). Hoy en día escribo muchos códigos de subprocesos múltiples que pueden ralentizarse por contención de bloqueo; ¿Qué herramientas y trucos se pueden usar para identificar dónde se produce la contención del bloqueo y en qué medida?Conflicto de bloqueo de sincronización de subprocesos de perfil
Respuesta
Esto está disponible pronto, actualmente se envía en Visual Studio 2010 beta 2. Aquí hay un video of the tool.
Pruebe ThreadChecker de Intel. Funciona tanto en Windows como en Linux. Si está trabajando en Windows, intente con Parallel Studio. Proporciona un generador de perfiles de bloqueos y esperas fácil de usar. Muestra concurrencia general durante el tiempo de ejecución, lo que da pistas sobre contenciones de bloqueo y concurrencia deficiente. Las herramientas están haciendo ahora lo que quieres.
Para desarrollar en Windows, la verificación de software tiene algunos (http://www.softwareverify.com/thread.html).
Para C, C++, Delphi try Thread Validator.
Para Java, también hay Java Thread Validator.
También hay versiones experimentales para Python y Ruby.
- 1. Sincronización simple de subprocesos
- 2. sincronización de subprocesos: sin interfaz de usuario
- 3. Algunas preguntas sobre la sincronización de subprocesos
- 4. Sincronización de subprocesos en tiempo real con subprocesos normales
- 5. Java: sincronización de subprocesos en varios servidores
- 6. grupo de subprocesos, datos compartidos, Sincronización Java
- 7. Cassandra bloqueo de exclusión mutua (sincronización)
- 8. La confusión de problema de sincronización de subprocesos
- 9. Sincronización en subprocesos para Java
- 10. entendimiento sincronización de hilos de bloqueo y no Thread.MemoryBarrier
- 11. Implementación de cola de bloqueo de subprocesos en .NET
- 12. Sincronización de subprocesos de Java, la mejor utilidad concurrente, operación de lectura
- 13. Java: sincronización de varios subprocesos según el paso del tiempo
- 14. Tarea Biblioteca paralela vs Sincronización nativa de subprocesos
- 15. sobreasignación de subprocesos de subprocesos de Java
- 16. ¿Cómo se implementa la sincronización de subprocesos en el nivel de lenguaje ensamblador?
- 17. sincronización de objetos
- 18. CONFLICTO (contenido): Conflicto de combinación en
- 19. Comprensión de varios subprocesos
- 20. bloqueo intrínseco de hilo
- 21. Patrones de diseño de OO para la sincronización de subprocesos múltiples
- 22. ¿Determinar el alcance de sincronización?
- 23. Seguridad de subprocesos de JTextArea.append
- 24. Contador de bloqueo negativo de la sección crítica
- 25. Volcados de subprocesos de JVM que contienen monitores sin hilos de bloqueo
- 26. Conflicto de intercalación
- 27. Resolviendo conflicto de árbol
- 28. Perfilado de subprocesos de Python
- 29. Subprocesos de aplicación vs Subprocesos de servicio
- 30. Prioridad de subprocesos y precisión de subprocesos
Muy interesante. Esto es más o menos exactamente lo que estaba buscando. Para aquellos interesados, estas herramientas están disponibles en Visual Studio 2010 Beta 2, disponible gratuitamente; Sin embargo, asegúrese de obtener las ediciones Premium o Ultimate. Además, las visualizaciones de subprocesos que se muestran en el video vinculado solo están disponibles en algunos sistemas operativos; no estaban disponibles en mi cuadro de XP, pero estaban habilitadas en mi cuadro de Vista (ambos de 64 bits por cierto). – redcalx