[RFC,v5,00/11] Add VM kernel tracing over vsockets and FIFOs
mbox series

Message ID 20190204065848.8248-1-kaslevs@vmware.com
Headers show
Series
  • Add VM kernel tracing over vsockets and FIFOs
Related show

Message

Slavomir Kaslev Feb. 4, 2019, 6:58 a.m. UTC
This patchset adds support for tracing guest kernels to trace-cmd.

Changes in v5:
 - add FIFOs transport for tracing data
 - fixed a bug in tracecmd_msg_wait_close

Changes in v4:
 - detect and use splice(2) on vsock sockets if possible
 - switch port numbers to unsigned int
 - trace-cmd record --date flag is now set for all guests if provided by the user
 - removed grow_cap and exponential buffer size growth

Changes in v3:
 - addressed Steven's feedback
 - detect and disable guest tracing if <linux/vm_sockets.h> is not available
 - the --date flag is now treated as global for all guest instances
 - fixed a bug that caused --date to be ignored for host tracing data when tracing guests

Changes in v2:
 - rebased on top of protocol V3
 - fixed system clock timestamps with the --date flag


Slavomir Kaslev (10):
  trace-cmd: Add tracecmd_create_recorder_virt function
  trace-cmd: Add TRACE_REQ and TRACE_RESP messages
  trace-cmd: Add buffer instance flags for tracing in guest and agent
    context
  trace-cmd: Add VM kernel tracing over vsockets transport
  trace-cmd: Use splice(2) for vsockets if available
  trace-cmd: Add `trace-cmd setup-guest` command
  trace-cmd: Try to autodetect number of guest CPUs in setup-guest if
    not specified
  trace-cmd: Make setup-guest auto attach FIFOs to the guest VM config
  trace-cmd: Set both input and output to non-blocking when recording is
    stopped
  trace-cmd: Add VM tracing over FIFOs transport

Steven Rostedt (VMware) (1):
  trace-cmd: Detect if vsockets are available

 Makefile                       |   7 +
 include/trace-cmd/trace-cmd.h  |  17 +-
 lib/trace-cmd/trace-recorder.c |  69 ++-
 tracecmd/Makefile              |   7 +-
 tracecmd/include/trace-local.h |  26 ++
 tracecmd/trace-agent.c         | 257 +++++++++++
 tracecmd/trace-cmd.c           |   4 +
 tracecmd/trace-msg.c           | 222 +++++++++-
 tracecmd/trace-record.c        | 759 +++++++++++++++++++++++++++++++--
 tracecmd/trace-setup-guest.c   | 243 +++++++++++
 tracecmd/trace-usage.c         |  21 +-
 11 files changed, 1557 insertions(+), 75 deletions(-)
 create mode 100644 tracecmd/trace-agent.c
 create mode 100644 tracecmd/trace-setup-guest.c

--
2.19.1

Comments

Steven Rostedt Feb. 8, 2019, 9:03 p.m. UTC | #1
On Mon,  4 Feb 2019 08:58:37 +0200
Slavomir Kaslev <kaslevs@vmware.com> wrote:

> This patchset adds support for tracing guest kernels to trace-cmd.

IIRC, you mentioned I should ignore these because you had another
series coming? Let me know if that's not what you said.

Also, I looked at the splice code wrt. the buffer percentage. The
splice code will return if either the file descriptor has O_NONBLOCK or
the splice command has SPLICE_F_NONBLOCK set.

Or do you think that we need to do something in case the flag changes?
To make everything non-block, we need to send a single to the code,
which should cause the code to start again.

Once the trace_fd is set to O_NONBLOCK the splice fd should return
immediately when there's nothing it can read left.

-- Steve


> 
> Changes in v5:
>  - add FIFOs transport for tracing data
>  - fixed a bug in tracecmd_msg_wait_close
>