FR: Output Folded Stacks Format

Abierto
#658 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

  • #669 de @mhansen — cerrado sin fusionar

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Necesita aclaración
Estado de actividad
Estancado
Stack tecnológico
go
Área
performance

Línea de trabajo

Empieza examinando las rutas de salida existentes de pprof para -callgrind y -dot, y cómo seleccionan un valor de perfil para los pesos del gráfico. Compara la salida propuesta con difffolded.pl y flamegraph.pl de Brendan Gregg y con el formato plegado de pprofutils de Felixge. Para darlo por terminado, habría que decidir el formato y el comportamiento de la opción, incluido si se emite un valor o varias columnas y cómo se gestionan labels y los demás datos del perfil.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Priority: p3 type: feat

I think if we built an exporter to Brendan Gregg's folded stacks format, we could:

  1. Enable people to do differential flamegraphs using difffolded.pl and flamegraph.pl, perhaps addressing the user need in #483
  2. Allow post-processing the profiles using text tools like grep & sed
  3. Hook into some more profile analysis tools: see profilerpedia, folded stacks is a very well-connected format.

I'm picturing an option like -callgrind and -dot, perhaps -folded.

The trouble might be that folded stacks format only accepts one output number per stack, but pprof can have multiple numbers per stack. So we'd probably have to choose the number to output with a flag, if it was ambiguous. But perhaps parts of pprof already handle this? e.g. the -dot output probably chooses an event to use as the weight of the graph size?

Prior art in this space: @felixge's pprofutils folded: https://github.com/felixge/pprofutils#folded. Felix has an extension to the folded stacks format to have numbers with multiple columns. I think that's a neat idea for representing pprof and allows roundtripping back to pprof format. It would be nice if this extension caught on, but I wonder if it might limit the interoperability with other folded stacks tools.

Another idea might be to output only one number column per-file (e.g. pprof -folded=cpu-cycles and pprof -folded=instructions), and then to roundtrip, we could output multiple files, convert both of them back to pprof, then concatenate the files with pprof -proto <profile1> <profile2>.

There are plenty of other challenges with roundtripping too (labels, filenames, mappings...) but perhaps just solving part of the problem would still be useful and enable more analyses. Anyway, I mostly wanted to open a discussion about this. Thoughts?

Lenguaje dominante
Go
Estrellas
9.3k
Forks
687
Merge medio
2 d 2 h
PR fusionados (30 d)
9

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de google/pprof

Todos los issues de google/pprof

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.