Hello,

I have some systems with CONFIG_WQ_CPU_INTENSIVE_REPORT enabled, and rcu
workqeues are in the top offenders with the following messages:

        workqueue: kfree_rcu_monitor hogged CPU for >13333us 515 times, 
consider switching to WQ_UNBOUND
        workqueue: kfree_rcu_work hogged CPU for >13333us 1027 times, consider 
switching to WQ_UNBOUND

Chatting to Paul privately, he suggested me getting the time spend in
the two workqueues/functions above, and I created the following script
to get the histogram for these two functions:

        
https://github.com/leitao/debug/blob/main/examples/rcu_timer/rcu-timer.bt

And this is the histogram I get, when running it for a few minutes
(where the lines are in msecs):


        == monitor ==
        @all_monitor:
        [8, 16)               59 |@@@@@                                         
      |
        [16, 32)             300 |@@@@@@@@@@@@@@@@@@@@@@@@@@@                   
      |
        [32, 64)               2 |                                              
      |
        [64, 128)              7 |                                              
      |
        [128, 256)            51 |@@@@                                          
      |
        [256, 512)           157 |@@@@@@@@@@@@@@                                
      |
        [512, 1K)            356 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@              
      |
        [1K, 2K)             381 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@            
      |
        [2K, 4K)             480 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  
      |
        [4K, 8K)             567 
|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
        [8K, 16K)            263 |@@@@@@@@@@@@@@@@@@@@@@@@                      
      |
        [16K, 32K)            25 |@@                                            
      |
        [32K, 64K)             3 |                                              
      |

        == work ==
        @all_work:
        [32, 64)              27 |@@@@@@@@@                                     
      |
        [64, 128)              2 |                                              
      |
        [128, 256)             1 |                                              
      |
        [256, 512)             7 |@@                                            
      |
        [512, 1K)             15 |@@@@@                                         
      |
        [1K, 2K)              24 |@@@@@@@@                                      
      |
        [2K, 4K)              32 |@@@@@@@@@@                                    
      |
        [4K, 8K)              46 |@@@@@@@@@@@@@@@                               
      |
        [8K, 16K)            154 
|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
        [16K, 32K)            85 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@                  
      |
        [32K, 64K)             3 |@                                             
      |


I also broke it down for pid if it is useflu, and the output could be
found at:

        https://paste.debian.net/1324062/


Thanks
--breno

Reply via email to