Use perf to profile the redis daemon

perf record -a -g -p 12345
# After a while, Ctrl + c to interrupt it
perf report

The report shows:

Samples: 2K of event 'cycles', Event count (approx.): 795511519                                                                                                        
-   x.xx%  redis-server  redis-server          [.] ziplistFind                                                                                                        
   ziplistFind 

I could only see that function “ziplistFind” is very hot in redis but I can’t see how the code routine reaches the “ziplistFind”. By searching around I find this article. So I use perf as:

perf record -a -g -p 12345 --call-graph dwarf

The report indicates more details in program now:

Samples: 2K of event 'cycles', Event count (approx.): 795511519                                                                                                        
-   x.xx%  redis-server  redis-server          [.] ziplistFind                                                                                                        
   - ziplistFind                                                                                                                                                      
      - 99.35% hashTypeSet                                                                                                                                            
           hsetCommand                                                                                                                                                
           call                                                                                                                                                       
           processCommand                                                                                                                                             
           processInputBuffer                                                                                                                                         
           readQueryFromClient                                                                                                                                        
           aeProcessEvents                                                                                                                                            
           aeMain                                                                                                                                                     
           main                                                                                                                                                       
           __libc_start_main                                                                                                                                          
           _start