From: "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com>
To: rostedt@goodmis.org
Cc: linux-trace-devel@vger.kernel.org
Subject: [PATCH v15 00/18]Timestamp synchronization of host - guest tracing session
Date: Thu, 28 Nov 2019 10:53:51 +0200 [thread overview]
Message-ID: <20191128085409.289684-1-tz.stoyanov@gmail.com> (raw)
Basic infrastructure for host - guest timestamp synchronization and a
POC implementation of PTP-like algorithm.
[
v15 changes:
- Removed the patch for "--proc-map" from the series, as it should not
be part of it.
v14 changes:
- Bring back the PTP-like algorithm and removed the ftrace event based logic.
- Reimplemented the PTP-like algorithm to use raw ftrace markers, instead of clock_gettime() API.
- Refactored the logic to be algorithm independent and plugin friendly.
- Implemented continuous timestamps synchronization, while the trace is running.
- Moved logic from trace-cmd application to libtracecmd, as new library APIs.
- Implemented new trace id functionality.
- Implemented new guest section in host trace.dat file.
v13 changes:
- Remove few patches from the set, as they were merged.
- Rebased to the latest master, Slavomirs patchest "Add VM kernel tracing over
vsockets and FIFOs" got merged!
v12 changes:
- Rebased on top of Slavomir's v13 "Add VM kernel tracing over vsockets and FIFOs"
v11 changes:
- Rebased on top of Slavomir's v10 "Add VM kernel tracing over vsockets and FIFOs"
- Addressed Slavomir's commnents from version 10 of the patch series.
v10 changes:
- Fixed broken compilation, call to timestamp_correction_calc() in timestamp_correct
was smashed.
- Replaced deprecated tep_data_event_from_type() API with tep_find_event().
- Fixed a warning on assignment const to non const.
v9 changes:
- Fixed implementation of binary search algorithm in timestamp_correct()
v8 changes:
- Added rmdir() call in tracecmd_remove_instance(), to completely remove the instance.
However, there is an issue with deleting the instances using rmdir(), which is investigated.
- Few changes in read_qemu_guests_pids(), timestamp_correct(), tsync_offset_load()
tracecmd_clock_context_new() and find_raw_events() suggested by Slavomir.
v7 changes:
- Added warning messages in case time synchronization cannot be negotiated or fails.
- Few optimizations and checks in read_qemu_guests_pids(), tsync_offset_load(),
and find_raw_events(), suggested by Slavomir Kaslev.
- Reworked timestamp_correct() to not use static variables.
- Check TRACECMD_OPTION_TIME_SHIFT before reading time sync samples from the trace.dat file
v6 changes:
- Refactored tracecmd_msg_snd_time_sync() and tracecmd_msg_rcv_time_sync() functions:
removed any time sync calculations logic as separate functions in trace-timesync.c file
- Defined TSYNC_PROBE, TSYNC_REQ and TSYNC_RESP messages, in order to make the time sync
protocol comprehensible.
- Addressed Steven Rostedt comments.
- Addressed Slavomir Kaslev commnets.
v5 changes:
- Rebased to Slavomir's v8 "Add VM kernel tracing over vsockets and FIFOs"
patch series.
- Implemented an algorithm for time drift correction.
- Addressed Slavomir's commnets.
- Refactored the code: moved all time sync specific implementation in trace-timesync.c
- Isolated all hardcoded event specific stuff in a structure, so it could be easily
moved to external plugins.
- Added a check for VSOCK support: do not perform vsock dependent time synchronisation
in case there is no VSOCK support.
v4 changes:
- Removed the implementation of PTP-like algorithm. The current
logic relies on matching time stamps of kvm_exit/virtio_transport_recv_pkt
events on host to virtio_transport_alloc_pkt/vp_notify events on guest.
- Rebased to Slavomir's v7 "Add VM kernel tracing over vsockets and FIFOs"
patch series.
- Decreased the time synch probes from 5000 to 300.
- Addressed Steven Rostedt comments.
- Code cleanup.
v3 changes:
- Removed any magic constants, used in the PTP-like algorithm,
as Slavomir Kaslev suggested.
- Implemented new algorithm, based on mapping kvm_exit events
in host context to vsock_send events in guest context,
suggested by Steven Rostedt.
v2 changes:
- Addressed Steven Rostedt comments.
- Modified PTP-like timestamps sync algorithm to gain more accuracy, with the
help of Yordan Karadzhov and Slavomir Kaslev.
]
Tzvetomir Stoyanov (7):
trace-cmd: Implement new lib API: tracecmd_local_events_system()
trace-cmd: Add support for negative time offsets in trace.dat file
trace-cmd: Add implementations of htonll() and ntohll()
trace-cmd: Add new library APIs for ftrace instances.
trace-cmd: Find and store pids of tasks, which run virtual CPUs of
given VM
trace-cmd: Implement new API tracecmd_add_option_v()
trace-cmd: Implement new option in trace.dat file:
TRACECMD_OPTION_TIME_SHIFT
Tzvetomir Stoyanov (VMware) (11):
trace-cmd: Add new library API for local CPU count
trace-cmd: Add new library API for reading ftrace buffers
trace-cmd: Add new API to generate a unique ID of the tracing session
trace-cmd: Store the session tracing ID in the trace.dat file
trace-cmd: Exchange tracing IDs between host and guest
trace-cmd: Add guest information in host's trace.dat file
trace-cmd: Add host trace clock as guest trace argument
trace-cmd: Refactor few trace-cmd internal functions.
trace-cmd: Basic infrastructure for host - guest timestamp
synchronization
trace-cmd: [POC] PTP-like algorithm for host - guest timestamp
synchronization
trace-cmd: Debug scripts for PTP-like algorithm for host - guest
timestamp synchronization
Documentation/trace-cmd-record.1.txt | 6 +
include/trace-cmd/trace-cmd.h | 116 +++-
include/trace-cmd/trace-msg.h | 10 +
include/traceevent/event-parse.h | 1 +
lib/trace-cmd/Makefile | 3 +
lib/trace-cmd/include/trace-cmd-local.h | 33 +-
lib/trace-cmd/include/trace-tsync-local.h | 36 ++
lib/trace-cmd/trace-input.c | 314 +++++++++-
lib/trace-cmd/trace-msg.c | 164 +++++-
lib/trace-cmd/trace-output.c | 116 +++-
lib/trace-cmd/trace-timesync-ptp.c | 668 ++++++++++++++++++++++
lib/trace-cmd/trace-timesync.c | 469 +++++++++++++++
lib/trace-cmd/trace-util.c | 358 ++++++++++--
scripts/debug/tsync_hist.py | 57 ++
scripts/debug/tsync_readme | 13 +
scripts/debug/tsync_res.py | 46 ++
tracecmd/Makefile | 3 +-
tracecmd/include/trace-local.h | 33 +-
tracecmd/trace-agent.c | 48 +-
tracecmd/trace-list.c | 2 +-
tracecmd/trace-profile.c | 2 +-
tracecmd/trace-read.c | 4 +-
tracecmd/trace-record.c | 600 ++++++++++---------
tracecmd/trace-show.c | 2 +
tracecmd/trace-stat.c | 24 +-
tracecmd/trace-tsync.c | 265 +++++++++
tracecmd/trace-usage.c | 4 +
27 files changed, 2953 insertions(+), 444 deletions(-)
create mode 100644 lib/trace-cmd/include/trace-tsync-local.h
create mode 100644 lib/trace-cmd/trace-timesync-ptp.c
create mode 100644 lib/trace-cmd/trace-timesync.c
create mode 100644 scripts/debug/tsync_hist.py
create mode 100644 scripts/debug/tsync_readme
create mode 100644 scripts/debug/tsync_res.py
create mode 100644 tracecmd/trace-tsync.c
--
2.23.0
next reply other threads:[~2019-11-28 8:54 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-28 8:53 Tzvetomir Stoyanov (VMware) [this message]
2019-11-28 8:53 ` [PATCH v15 01/18] trace-cmd: Implement new lib API: tracecmd_local_events_system() Tzvetomir Stoyanov (VMware)
2019-11-28 8:53 ` [PATCH v15 02/18] trace-cmd: Add support for negative time offsets in trace.dat file Tzvetomir Stoyanov (VMware)
2019-11-28 8:53 ` [PATCH v15 03/18] trace-cmd: Add implementations of htonll() and ntohll() Tzvetomir Stoyanov (VMware)
2019-11-28 8:53 ` [PATCH v15 04/18] trace-cmd: Add new library APIs for ftrace instances Tzvetomir Stoyanov (VMware)
2019-11-28 8:53 ` [PATCH v15 05/18] trace-cmd: Add new library API for local CPU count Tzvetomir Stoyanov (VMware)
2019-11-28 8:53 ` [PATCH v15 06/18] trace-cmd: Add new library API for reading ftrace buffers Tzvetomir Stoyanov (VMware)
2019-11-28 8:53 ` [PATCH v15 07/18] trace-cmd: Find and store pids of tasks, which run virtual CPUs of given VM Tzvetomir Stoyanov (VMware)
2019-11-28 8:53 ` [PATCH v15 08/18] trace-cmd: Implement new API tracecmd_add_option_v() Tzvetomir Stoyanov (VMware)
2019-11-28 8:54 ` [PATCH v15 09/18] trace-cmd: Add new API to generate a unique ID of the tracing session Tzvetomir Stoyanov (VMware)
2019-11-28 8:54 ` [PATCH v15 10/18] trace-cmd: Store the session tracing ID in the trace.dat file Tzvetomir Stoyanov (VMware)
2019-11-28 8:54 ` [PATCH v15 11/18] trace-cmd: Exchange tracing IDs between host and guest Tzvetomir Stoyanov (VMware)
2019-11-28 14:34 ` Slavomir Kaslev
2019-11-28 14:58 ` Tzvetomir Stoyanov
2019-11-29 10:22 ` Tzvetomir Stoyanov
2019-11-28 8:54 ` [PATCH v15 12/18] trace-cmd: Implement new option in trace.dat file: TRACECMD_OPTION_TIME_SHIFT Tzvetomir Stoyanov (VMware)
2019-11-28 8:54 ` [PATCH v15 13/18] trace-cmd: Add guest information in host's trace.dat file Tzvetomir Stoyanov (VMware)
2019-11-28 8:54 ` [PATCH v15 14/18] trace-cmd: Add host trace clock as guest trace argument Tzvetomir Stoyanov (VMware)
2019-11-28 14:45 ` Slavomir Kaslev
2019-11-28 15:05 ` Tzvetomir Stoyanov
2019-11-28 8:54 ` [PATCH v15 15/18] trace-cmd: Refactor few trace-cmd internal functions Tzvetomir Stoyanov (VMware)
2019-11-28 14:51 ` Slavomir Kaslev
2019-11-28 15:08 ` Tzvetomir Stoyanov
2019-11-28 8:54 ` [PATCH v15 16/18] trace-cmd: Basic infrastructure for host - guest timestamp synchronization Tzvetomir Stoyanov (VMware)
2019-11-28 15:08 ` Slavomir Kaslev
2019-11-28 15:27 ` Tzvetomir Stoyanov
2019-11-28 8:54 ` [PATCH v15 17/18] trace-cmd: [POC] PTP-like algorithm " Tzvetomir Stoyanov (VMware)
2019-11-28 8:54 ` [PATCH v15 18/18] trace-cmd: Debug scripts for " Tzvetomir Stoyanov (VMware)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191128085409.289684-1-tz.stoyanov@gmail.com \
--to=tz.stoyanov@gmail.com \
--cc=linux-trace-devel@vger.kernel.org \
--cc=rostedt@goodmis.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).