I collected some stats for interrupts in 3 scenarios. We do get more
timer interrupts even if the VM is not running with just the kvm module
loaded. I collected the hrtimer_expire_entry tracing which aligns with
the interrupt data and your earlier findings from gdb. None of the timer
events related to KVM when VM is not running. So we can rule out
vcpu/kvm timer issues.

Periodic interrupt stats
------------------------------
Case 1: inner VM is running: 
root@debian:/mnt/host/timer_trace_logs# ./interrupt_stat_watch.sh
===== Δ /proc/interrupts @ 03:31:47 =====
IRQ 12     Δ =      +36 | SiFive PLIC  33 Edge      virtio1
IRQ 10     Δ =    +6395 | RISC-V INTC   5 Edge      riscv-timer
IRQ 14     Δ =      +22 | SiFive PLIC  35 Edge      virtio3
IRQ 16     Δ =       +5 | SiFive PLIC   8 Edge      virtio0

===== Δ /proc/interrupts @ 03:31:52 =====
IRQ 12     Δ =      +36 | SiFive PLIC  33 Edge      virtio1
IRQ 10     Δ =    +7484 | RISC-V INTC   5 Edge      riscv-timer
IRQ 14     Δ =       +6 | SiFive PLIC  35 Edge      virtio3
IRQ 16     Δ =       +6 | SiFive PLIC   8 Edge      virtio0

===== Δ /proc/interrupts @ 03:31:59 =====
IRQ 12     Δ =      +36 | SiFive PLIC  33 Edge      virtio1
IRQ 10     Δ =    +5992 | RISC-V INTC   5 Edge      riscv-timer
IRQ 14     Δ =      +14 | SiFive PLIC  35 Edge      virtio3
IRQ 16     Δ =       +6 | SiFive PLIC   8 Edge      virtio0

Case 2: inner VM shutdown with virtualization on 
root@debian:/mnt/host/timer_trace_logs# ./interrupt_stat_watch.sh 

===== Δ /proc/interrupts @ 03:31:01 =====
IRQ 12     Δ =      +36 | SiFive PLIC  33 Edge      virtio1
IRQ 10     Δ =    +4825 | RISC-V INTC   5 Edge      riscv-timer
IRQ 14     Δ =       +9 | SiFive PLIC  35 Edge      virtio3
IRQ 16     Δ =       +5 | SiFive PLIC   8 Edge      virtio0

===== Δ /proc/interrupts @ 03:31:06 =====
IRQ 12     Δ =      +36 | SiFive PLIC  33 Edge      virtio1
IRQ 10     Δ =    +5454 | RISC-V INTC   5 Edge      riscv-timer
IRQ 14     Δ =      +30 | SiFive PLIC  35 Edge      virtio3
IRQ 16     Δ =       +6 | SiFive PLIC   8 Edge      virtio0

===== Δ /proc/interrupts @ 03:31:12 =====
IRQ 12     Δ =      +36 | SiFive PLIC  33 Edge      virtio1
IRQ 10     Δ =    +4823 | RISC-V INTC   5 Edge      riscv-timer
IRQ 14     Δ =     +137 | SiFive PLIC  35 Edge      virtio3
IRQ 16     Δ =       +6 | SiFive PLIC   8 Edge      virtio0
Case 3:  inner VM shutdown with virtualization off (kvm module is removed)
root@debian:/mnt/host/timer_trace_logs# ./interrupt_stat_watch.sh 

===== Δ /proc/interrupts @ 03:32:18 =====
IRQ 12     Δ =      +36 | SiFive PLIC  33 Edge      virtio1
IRQ 10     Δ =    +1578 | RISC-V INTC   5 Edge      riscv-timer
IRQ 14     Δ =       +8 | SiFive PLIC  35 Edge      virtio3
IRQ 16     Δ =       +6 | SiFive PLIC   8 Edge      virtio0

===== Δ /proc/interrupts @ 03:32:19 =====
IRQ 12     Δ =      +36 | SiFive PLIC  33 Edge      virtio1
IRQ 10     Δ =    +1525 | RISC-V INTC   5 Edge      riscv-timer
IRQ 16     Δ =       +6 | SiFive PLIC   8 Edge      virtio0

===== Δ /proc/interrupts @ 03:32:21 =====
IRQ 12     Δ =      +36 | SiFive PLIC  33 Edge      virtio1
IRQ 10     Δ =    +1524 | RISC-V INTC   5 Edge      riscv-timer
IRQ 14     Δ =      +12 | SiFive PLIC  35 Edge      virtio3
IRQ 16     Δ =       +5 | SiFive PLIC   8 Edge      virtio0

=========================================
hrtimer_expire_entry trace enable 
=========================================

Case 1: inner VM is running:
./group_trace_by_process_and_function.sh timer_trace_with_vm_vm_running | head 
-n 10
2980 <idle> tick_nohz_handler
890 mosh tick_nohz_handler
690 systemd tick_nohz_handler
566 <idle> dl_task_timer
300 rcu_sched inactive_task_timer
167 <idle> inactive_task_timer
126 sshd tick_nohz_handler
100 kworker/u75:2 tick_nohz_handler
80 sshd inactive_task_timer
70 dbus tick_nohz_handler
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                      
Case 2: inner VM shutdown with virtualization on                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                
./group_trace_by_process_and_function.sh timer_trace_with_vm_virt_on | head -n 
10                                                                              
                                                                                
                                                                                
                                                                                
                                                                             
3086 <idle> tick_nohz_handler                                                   
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
1332 mosh tick_nohz_handler                                                     
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
792 systemd tick_nohz_handler                                                   
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
601 <idle> dl_task_timer                                                        
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
369 rcu_sched inactive_task_timer                                               
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
148 <idle> inactive_task_timer                                                  
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
142 sshd tick_nohz_handler                                                      
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
130 utempter tick_nohz_handler                                                  
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
110 kworker/u71:2 tick_nohz_handler
78 sshd inactive_task_timer

Case 3:  inner VM shutdown with virtualization off (kvm module is removed)
./group_trace_by_process_and_function.sh timer_trace_with_vm_virt_off | head -n 
10                                                                              
                                                                                
                                                                                
                                                                                
                                                                            
1632 <idle> tick_nohz_handler                                                   
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
382 <idle> dl_task_timer                                                        
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
272 systemd tick_nohz_handler                                                   
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
250 mosh tick_nohz_handler                                                      
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
146 rcu_sched inactive_task_timer                                               
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
136 <idle> inactive_task_timer                                                  
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
58 sshd inactive_task_timer                                                     
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
54 systemd inactive_task_timer                                                  
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
44 kworker/u80:1 tick_nohz_handler                                              
                                                                                
                                                                                
                                                                                
                                                                                
                                                                              
38 systemd dl_task_timer

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2112578

Title:
  riscv64: KVM does not release harts

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2112578/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to