2011-03-23 20 views
8

¿Hay alguna forma de que valgrind use múltiples procesadores?¿Vallin/Valgrind puede usar múltiples procesadores?

Estoy haciendo algunos perfiles de cuello de botella con callgrind valgrind y noté un comportamiento de uso de recursos significativamente diferente en mi aplicación vs cuando se ejecuta fuera de valgrind/callgrind.

Cuando se ejecuta fuera de valgrind, maximiza varios procesadores, pero se ejecuta dentro de valgrind solo usa uno. Esto me hace preocuparme de que mis cuellos de botella estén en diferentes lugares y, por lo tanto, invalidar mi perfil.

+2

¿No puedes usar otro generador de perfiles, por ejemplo, 'oprofile'? – ninjalj

Respuesta

15

De acuerdo con la Valgrind Docs, que no son compatibles con múltiples procesadores:

Lo más importante a señalar con respecto a los programas de rosca es que su programa utilizará el librería de hilos nativa, pero Valgrind serializa la ejecución para que solo se ejecute un subproceso (kernel) a la vez. Este enfoque evita los problemas de implementación horribles de implementar una versión verdaderamente multiproceso de Valgrind, pero sí significa que roscados aplicaciones se ejecutan en un solo CPU, incluso si usted tiene una máquina multiprocesador o multinúcleo .

Valgrind no programa los hilos . Simplemente garantiza que solo se ejecute un hilo a la vez, utilizando un esquema de bloqueo simple . La programación actual de subprocesos permanece bajo el control del kernel del sistema operativo. Sin embargo, lo que significa esto es que su programa verá una programación muy diferente cuando se ejecuta en Valgrind que cuando funciona normalmente. Esto es porque Valgrind está serializando los hilos, y porque el código ejecuta mucho más lento de lo normal.

Esta diferencia en la programación puede causar su programa a comportarse de manera diferente , si tiene algún tipo de concurrencia, crítica de la raza, de bloqueo, o similares, bichos. En ese caso, usted podría considerar el uso de las herramientas Helgrind y/o DRD para rastrearlas hacia abajo.

Cuestiones relacionadas