- 
                Notifications
    
You must be signed in to change notification settings  - Fork 1
 
rcu: Add RCU stall diagnosis information #18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: rcu-dev
Are you sure you want to change the base?
Conversation
| 
           Master branch: 54a118f  | 
    
| 
           Master branch: 54a118f  | 
    
c83c922    to
    ad723e6      
    Compare
  
    | 
           Master branch: 54a118f  | 
    
ad723e6    to
    56057a7      
    Compare
  
    | 
           Master branch: 54a118f  | 
    
56057a7    to
    a270b06      
    Compare
  
    | 
           Master branch: 54a118f  | 
    
a270b06    to
    ecb607e      
    Compare
  
    | 
           Master branch: 54a118f  | 
    
ecb607e    to
    265b145      
    Compare
  
    | 
           Master branch: 54a118f  | 
    
265b145    to
    3d6a081      
    Compare
  
    | 
           Master branch: 54a118f  | 
    
3d6a081    to
    453a959      
    Compare
  
    | 
           Master branch: 54a118f  | 
    
453a959    to
    168f792      
    Compare
  
    | 
           Master branch: 54a118f  | 
    
168f792    to
    988b5e3      
    Compare
  
    | 
           Master branch: 54a118f  | 
    
988b5e3    to
    ab0dbc8      
    Compare
  
    | 
           Master branch: 54a118f  | 
    
ab0dbc8    to
    6bb79dd      
    Compare
  
    | 
           Master branch: 54a118f  | 
    
6bb79dd    to
    53c32f8      
    Compare
  
    | 
           Master branch: 54a118f  | 
    
53c32f8    to
    7914328      
    Compare
  
    22ada48    to
    5e32782      
    Compare
  
    | 
           Master branch: fa70e60  | 
    
5e32782    to
    8e92346      
    Compare
  
    | 
           Master branch: fa70e60  | 
    
8e92346    to
    a879cb4      
    Compare
  
    | 
           Master branch: fa70e60  | 
    
a879cb4    to
    748121f      
    Compare
  
    | 
           Master branch: fa70e60  | 
    
748121f    to
    ace74c2      
    Compare
  
    | 
           Master branch: fa70e60  | 
    
ace74c2    to
    aef0813      
    Compare
  
    | 
           Master branch: fa70e60  | 
    
aef0813    to
    a15d4b2      
    Compare
  
    | 
           Master branch: fa70e60  | 
    
a15d4b2    to
    19600b0      
    Compare
  
    | 
           Master branch: fa70e60  | 
    
19600b0    to
    1cd1a12      
    Compare
  
    | 
           Master branch: fa70e60  | 
    
1cd1a12    to
    fbc41cb      
    Compare
  
    | 
           Master branch: fa70e60  | 
    
fbc41cb    to
    895146d      
    Compare
  
    | 
           Master branch: fa70e60  | 
    
895146d    to
    55f7614      
    Compare
  
    | 
           Master branch: fa70e60  | 
    
55f7614    to
    4883809      
    Compare
  
    Similar to kstat_cpu_irqs_sum(), it counts the sum of all software interrupts on a specified CPU. Signed-off-by: Zhen Lei <[email protected]>
Returns the number of context switches on the specified CPU, which can be used to diagnose rcu stall. Signed-off-by: Zhen Lei <[email protected]>
In some extreme cases, such as the I/O pressure test, the CPU usage may be 100%, causing RCU stall. In this case, the printed information about current is not useful. Displays the number and usage of hard interrupts, soft interrupts, and context switches that are generated within half of the CPU stall timeout, can help us make a general judgment. In other cases, we can preliminarily determine whether an infinite loop occurs when local_irq, local_bh or preempt is disabled. For example: rcu: INFO: rcu_preempt self-detected stall on CPU rcu: 0-....: (1250 ticks this GP) <omitted> rcu: hardirqs softirqs csw/system rcu: number: 624 45 0 rcu: cputime: 69 1 2425 ==> 2500(ms) The example above shows that the number of hard and soft interrupts is small, there is zero context switching, and the system takes up a lot of time. We can quickly conclude that the current task is infinitely looped with preempt_disable(). The impact on system performance is negligible because snapshot is recorded only one time after 1/2 CPU stall timeout. Signed-off-by: Zhen Lei <[email protected]>
| 
           Master branch: fa70e60  | 
    
4883809    to
    8b2b698      
    Compare
  
    
Pull request for series with
subject: rcu: Add RCU stall diagnosis information
version: 1
url: https://patchwork.kernel.org/project/rcu/list/?series=685780