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
