2009-03-12 17 views
7

¿Ha utilizado alguna herramienta de creación de perfiles, como el analizador Intel Vtune?Perfilado de aplicaciones C++ de subprocesos múltiples

¿Cuáles son sus recomendaciones para una aplicación multiproceso C++ en Linux y Windows? Estoy principalmente interesado en errores de caché, uso de memoria, pérdidas de memoria y uso de CPU.

Uso valgrind (solo en UNIX), pero principalmente para encontrar errores de memoria y fugas.

+0

Recientemente me encontré con este documento sobre la creación de perfiles: http://www.iop.org/EJ/article/1742-6596/119/4/042030/jpconf8_119_042030.pdf?request-id=6fb45e59-676f-4728- 86bd-f324abdc5053. igprof https://twiki.cern.ch/twiki/bin/view/CMS/IgProfAnalysis parece una herramienta ingeniosa (aunque todavía tengo que probarla). –

Respuesta

8

Las siguientes son las buenas herramientas para aplicaciones multiproceso. Puedes probar la copia de evaluación.

  1. herramienta de comprobación de validez de tiempo de ejecución
    • Thread Checker - Intel Thread Checker/VTune, here
  2. memoria herramientas consistencia de verificación (uso de memoria, pérdidas de memoria) - Memoria Validador, here
  3. Análisis de rendimiento. (Uso de la CPU) - AQTime, here

EDITAR: Intel corrector de rosca se puede utilizar para diagnosticar razas de datos, interbloqueos, hilos estancadas, cerraduras abandonadas, etc. Por favor, tienen mucha paciencia en el análisis de los resultados, ya que es fácil confundirse.

algunos consejos:.

  1. desactivar las características que no son necesarios (En el caso de la identificación de los puntos muertos, la raza de datos se pueden desactivar y viceversa.)
  2. nivel de uso Instrumentación función de sus necesidades. Niveles como "Todas las funciones" e "Imagen completa" se utilizan para carreras de datos, donde como "Importaciones API" se pueden usar para la detección de interbloqueos)
  3. utilice el menú sensible al contexto "Ayuda diagnóstica" a menudo.
1

La suite Rational PurifyPlus incluye un detector de fugas bien probado y un buen perfilador. Sin embargo, no estoy seguro de si se reduce al nivel de fallas en el caché, es posible que necesite VTune para eso.

PurifyPlus está disponible en varios Unices y Windows, por lo que debe cubrir sus necesidades, pero desafortunadamente, a diferencia de Valgrind, no es gratuito.

3

VTune le da muchos detalles sobre lo que hace el procesador y, a veces, me resulta difícil ver la madera de los árboles. VTune no informará sobre fugas de memoria. Necesitarás purificar más para eso, o si puedes ejecutar en una caja de Linux valgrind es bueno para pérdidas de memoria a un gran precio.

VTune muestra dos vistas, una es útil la tabular, la otra, creo que es solo para vendedores, para impresionar a la gente pero no tan útil.

Para la opción rápida y barata iría con valgrind. Valgrind también tiene una parte de rutina de caché pero no la he usado, pero sospecho que también es muy buena.

aplausos, Martin.

5

En Linux, intente oprofile. Es compatible con varios contadores de rendimiento.

En Windows, vale la pena mirar el CodeAnalyst de AMD (gratis, a diferencia de VTune). Solo admite la creación de perfiles de eventos en hardware AMD a través de (en Intel CPU es solo un práctico generador de perfiles basado en temporizador).

Un colega intentó recientemente Intel Parallel Studio (beta) y lo calificó favorablemente (encontró algunos problemas interesantes relacionados con el paralelismo en algún código).

2

Pondré otra respuesta para valgrind, especialmente la parte callgrind con la interfaz de usuario. Puede manejar múltiples hilos al perfilar cada hilo para errores de caché, etc. También tienen un verificador de errores de múltiples hilos llamado helgrind, pero nunca lo he usado y no sé qué tan bueno es.

+2

Helgrind es bastante bueno para encontrar posibles problemas de subprocesos como incoherencias de orden de bloqueo de mutex, condiciones de carrera, etc. Sin embargo, solo funciona con pthreads, por lo que los usuarios de otras bibliotecas de subprocesos pueden no tener suerte. Sin embargo, funciona mucho más lento que valgrind en mi máquina, ¡así que la paciencia es la clave cuando se usa! –

1

para perfilar sencilla gprof es bastante bueno ..

2

Usted puede probar perfilador CPU de AMD CodeXL. Es gratis y está disponible para Windows y Linux.

El perfilador de CPU AMD CodeXL reemplaza a la herramienta CodeAnalyst que ya no se admite (que se mencionó en una respuesta dada anteriormente por el tiempo). Para obtener más información y descargar vínculos, visite: AMD CodeXL web page.

Cuestiones relacionadas