Comment interpréter strace de sortie?

J'ai besoin pour le profil de la performance d'une application pour lequel je suis à l'aide de strace. Cependant, je ne sais pas vraiment comment interpréter les différents appels au système de la strace émet. Exemples de quelques-uns d'entre eux sont ci-dessous:

(A) lseek(3, 1600, SEEK_SET)                = 1600
(B) write(3, "G_DATA    300        0          "..., 800) = 800
(C) close(3)                                = 0
(D) mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b600b179000
(E) munmap(0x2b600b179000, 4096)            = 0
(F) fstat(3, {st_mode=S_IFREG|0644, st_size=1600, ...}) = 0

Je vous serais reconnaissant si quelqu'un pouvait expliquer brièvement en anglais de ce que ces lignes de (A) à (F) signifie vraiment en termes d'I/O, les données transférées, de l'importance sur les performances etc.

Je suis allé à travers les pages de manuel de strace, mais je suis encore pas très confiante. Si vous d'autres conseils pour moi de lire, ce serait génial.

J'ai un peu de fond sur les Systèmes d'Exploitation et de comprendre ce que les appels-système, de la mémoire, de la mémoire virtuelle, la programmation, etc. sont.

  • strace est plus de l'outil de débogage qu'un profiler. Êtes-vous vraiment à la recherche de quelque chose comme gprof?
  • Je suis d'accord. Puisque "strace" ne vous montrer les appels système, le meilleur que vous pouvez faire est de voir un grand écart de temps entre les appels système et essayer de comprendre ce que le programme a été fait entre ces appels qui a pris si longtemps. Ce n'est pas une bonne façon de profil. Au lieu de cela, utilisez 'callgrind" (partie de la "valgrind') et analzye les résultats avec "kcachegrind'. Ou utiliser gprof, sysprof, oprofile, ou similaire.
  • Vous devriez lire la page de manuel du système d'appels préformé ici. exécuter man lseek , man open , man mmap et ainsi de suite.
InformationsquelleAutor mkc | 2011-06-13