dendibakh
- https://easyperf.net/blog/2018/08/26/Basics-of-profiling-wit...
- https://easyperf.net/blog/2019/04/03/Precise-timing-of-machi...
- https://easyperf.net/blog/2019/02/09/Top-Down-performance-an...
But in the end, my almost every article contains a Linux perf use case scenario.
A Programmer’s Guide to Performance Analysis and Tuning on Modern CPUs
Everything you wanted to know about Intel Processor Traces
This one:
> It is important that you understand one thing before we start. If you use all the advices in this article it is not how your application will run in practice. If you want to compare two different versions of the same program you should use suggestions described above. If you want to get absolute numbers to understand how your app will behave in the field, you should not make any artificial tuning to the system, as the client might have default settings.
I would better go for analyzing not the whole function (all basic blocks of the function) but only the Hyper Blocks (typical hot path through the function). Here is the example of how to do it: https://lwn.net/Articles/680985/ chapter "Hot-path analysis".
Precise timing of machine code with Linux perf
How to collect CPU performance counters on Windows?
Performance optimization contest
In the same row for DRAM_bound metric there is precise event PEBS specified that we can use for locating the issue. Sampling on the precise event will let us detect exact place in the code where we have the most amount of L3 misses.
Let me know if you have further questions!
How good of a performance optimizer you are? Contest
Improving performance by better code locality
Advanced profiling topics. PEBS and LBR
PMU counters and profiling basics
Regarding your example with 1000 muls followed by 1000 loads... That's why in my experiments I interleaved loads and bswaps, because that's what (hopefully) every decent compiler will do.
MicroFusion in Intel CPUs
Thanks to everybody who commented the post. With your help I was able to close the gap in my knowledge and summarized it in my new post: https://dendibakh.github.io/blog/2018/02/15/MicroFusion-in-I...