2010-08-10 7 views
1

J'ai un assez grand programme python qui cause beaucoup d'E/S disque (sur top, %wa peut atteindre 80, et iotop dit que mon processus est le coupable).Quels sont les fichiers qui prennent le plus de temps d'E/S de mon processus?

Plusieurs raisons peuvent être à l'origine de cette situation: j'écris dans plusieurs fichiers journaux et j'économise les résultats mis en cache sur plusieurs disques, il n'est donc pas évident de savoir où je devrais porter mon attention.

Existe-t-il un outil linux ou une astuce python qui me permettra de voir quel sous-système provoque le plus d'opérations d'E/S?

+2

Peut-être que cela aidera? http://wiki.python.org/moin/PythonSpeed/PerformanceTips#ProfilingCode –

+0

Peut-être regarder dans 'lsof'? –

+0

Lorsque vous avez exécuté le profileur, qu'avez-vous appris? –

Répondre

1

Vous devriez jeter un coup d'œil à SystemTap. Il est très puissant mécanisme de traçage et profilage pour les appels système Linux: http://sourceware.org/systemtap/wiki

Je suis sûr qu'il est possible de tracer exactement quel descripteur de fichier est responsable de la charge IO - mais il se complique à commencer par systemtap.