Suchakra Sharma | bd8370e | 2017-04-04 09:11:19 -0400 | [diff] [blame] | 1 | Demonstrations of kvm_hypercall.py, showing eBPF/bcc based hypercall analysis |
| 2 | |
| 3 | This example demonstrates how we can statefully save static tracepoint |
| 4 | events based on conditions being met for other events with which they are |
| 5 | associated. Here, we wish to record kvm_exit and kvm_entry events which are |
| 6 | linked to the kvm_hypercall event. We are interested in kvm_exit with exit |
| 7 | reason as VMCALL (18). This may be useful to analyze latency caused by a |
| 8 | hypercall itself. |
| 9 | |
| 10 | To test this, while the python script is run, induce a hypercall from a |
| 11 | guest based on the following example: |
| 12 | https://gist.github.com/abenbachir/344822b5ba9fc5ac384cdec3f087e018 |
| 13 | |
| 14 | # ./kvm_hypercall.py |
| 15 | TIME(s) COMM PID MESSAGE |
| 16 | 2445.577087000 CPU 0/KVM 8896 KVM_EXIT exit_reason : 18 |
| 17 | 2445.577122000 CPU 0/KVM 8896 HYPERCALL nr : 0 |
| 18 | 2445.577129000 CPU 0/KVM 8896 KVM_ENTRY vcpu_id : 0 |
| 19 | 2445.577136000 CPU 0/KVM 8896 KVM_EXIT exit_reason : 18 |
| 20 | 2445.577145000 CPU 0/KVM 8896 HYPERCALL nr : 1 |
| 21 | 2445.577149000 CPU 0/KVM 8896 KVM_ENTRY vcpu_id : 0 |
| 22 | 2445.577155000 CPU 0/KVM 8896 KVM_EXIT exit_reason : 18 |
| 23 | 2445.577160000 CPU 0/KVM 8896 HYPERCALL nr : 2 |
| 24 | 2445.577164000 CPU 0/KVM 8896 KVM_ENTRY vcpu_id : 0 |
| 25 | 2445.577170000 CPU 0/KVM 8896 KVM_EXIT exit_reason : 18 |
| 26 | 2445.577175000 CPU 0/KVM 8896 HYPERCALL nr : 3 |
| 27 | 2445.577179000 CPU 0/KVM 8896 KVM_ENTRY vcpu_id : 0 |
| 28 | 2445.577185000 CPU 0/KVM 8896 KVM_EXIT exit_reason : 18 |
| 29 | 2445.577190000 CPU 0/KVM 8896 HYPERCALL nr : 4 |
| 30 | 2445.577194000 CPU 0/KVM 8896 KVM_ENTRY vcpu_id : 0 |
| 31 | |
| 32 | This output shows a sequence of exit -> hypercall -> entry where the |
| 33 | exit_reason was VMCALL. |