0

I am trying to monitor all system calls being invoked inside a virtual machine from host OS. I tried this at host:

perf trace -a | grep qemu

This gives an output like this:

0.000 ( 0.000 ms): qemu-system-x8/7511  ... [continued]: poll()) = 0 Timeout
10.060 (10.043 ms): qemu-system-x8/7511 poll(ufds: 0x7f5d300008f8, nfds: 20, timeout_msecs: 10                ) = 0 Timeout
20.161 (10.079 ms): qemu-system-x8/7511 poll(ufds: 0x7f5d300008f8, nfds: 20, timeout_msecs: 10                ) = 0 Timeout
30.226 (10.044 ms): qemu-system-x8/7511 poll(ufds: 0x7f5d300008f8, nfds: 20, timeout_msecs: 10                ) = 0 Timeout

Can anyone explain what are these calls that are shown in this output? Are these system calls being invoked inside virtual machine? or are these invoked by host OS itself in response to the calls invoked by VM?

cout_display_name
  • 313
  • 1
  • 2
  • 14

1 Answers1

0

These poll() calls are being performed by qemu to check for events from the virtual machine which it needs to handle.

System calls being performed within the virtual machine are generally invisible to the host OS. (Keep in mind that the virtual machine may be running an OS other than Linux, or may even not be running an OS at all.) If you want to trace those calls, you will probably need to run perf within the VM.

  • Thanks for the answer. There are other calls like read, write, sigprocmask, madvise etc. in the output as well. Are these also invoked by qemu and not by the VM? Or can we say that these are the calls that qemu invokes in response to the calls invoked inside VM? – cout_display_name Oct 13 '16 at 10:34