4 ms·
I don’t know if it helps, but this is how I read through the graph from the first article after reading the authors conclusion. (I’m an idiot) - okay, we’re an
by starkrights 2y ago
I don’t know if it helps, but this is how I read through the graph from the first article after reading the authors conclusion. (I’m an idiot)
- okay, we’re analyzing DvrDrawImage
- Let’s analyze the function on the left, GpBitmap::PipeLockBits
- Up through ::Decode, takes up 100% of the time from PipeLockBits, so we’re just racing down the call stack to get to that point, and then other stuff starts taking up time
- Lots of WindowsCodecs calls, I guess we kind of expect those to be valid since image processing needs codecs and stuff and things
- Okay, now there’s a bar taking up ~45-50% of the ::Decode call, that’s not a codec or drawing related thing- it’s an os level pagefault. That’s fucky.
- Since the ::Decode call is ~55-65% of the ::DvrDrawImage call, that pagefault is (~40% of ~60% =)~25% of this draw image call
So essentially I looked and saw a stack of bars altogether and went ‘okay, the call at the top of this is the only reason the call 6 bars up the stack (ie, 6 bars down on the flamegraph) is taking time, why?’, and start applying the same process recursively from there.
That is, until $why == ‘due to codec calls and an ntkernel call’, and the question becomes ‘is that valid?’ Then the question becomes “are these codec calls taking the amount of time I would expect?”, and “
iiuc peaks and colors don’t matter. Tbf I think the colorscheming on this chart is shit- afaik flamegraph coloring is just a way of marking the same (or from the same library? Implementation dependent?) function for easy spotting. Like why not make the functions wildly different colors. Redness != hotness of a certain codepath.
The only thing peaks indicate is calls that have deeply nested function calls, which I guess would be important if you’re having recursion issues.