[Spice-devel] [PATCH v5 0/6] Implement record/replay
Frediano Ziglio
fziglio at redhat.com
Fri Aug 21 01:46:02 PDT 2015
With this series of patches is possible to record what happens to
spice-server and replay it.
The main purpose is debugging.
These are part of a long series of patches.
Started playing with it quite a lot and are very useful for profiling
and debugging.
Actually valgrind shows some leaks due to a missing proper
spice_server_destroy function (actually does not much). This is
not however causing problems using with Qemu/Xspice.
Many formatting strings use signed (%d) numbers however this does not
make sense for some data (like binary lengths!), IMHO should be converted
to unsigned (%u).
Changes from v4:
- fix positive stripe surfaces;
- removed server/make_recorder.sh.
Changes from v3:
- added a missing patch causing problems, removed my former fix,
tested again.
Changes from v2:
- more strong tests (using with client) revealed that loop code
is not working as expected as there were 2 loops, one for commands
and another for spice event however only commands one was running
leading to client not connecting or working. Added a new patch but I
think to squash into second one and remove comment for glib loop;
- renamed replay executable to spice-server-replay (still not
installed);
- renamed dispatch handler;
- add a patch to support filtering the output. This avoid to add code
to compress the output as compression can be done with a filter
(setting SPICE_WORKER_RECORD_FILTER environmen to "gzip" just works
for me compression ratio is about 9% so quite good). This make it
automatically use more cpu cores and support multiple compressors.
I would remove code to support zlib compression if this patch is
accepted. Also we should update link to xz file then.
Probably would be better to define a
gboolean red_record_open_file(FILE **file_out)
function instead which manage even the SPICE_WORKER_RECORD_FILENAME
environment and reduce red_worker.c changes;
- remove useless check for record_fd;
- fix recording images if stripe is negative.
Changes from v1:
- merged some later pacthes by Marc-André Lureau;
- removed first patch that added an argument to normal callbacks;
- removed record_clock_id, not use anymore;
- fixed start of record file;
- register callback only if we need to register something;
- moved exported symbols to new version, removed old ones;
- some typos;
- fixed some comments for program arguments;
- use glib functions for debug/warnings.
Alon Levy (4):
server/dispatcher: add extra_dispatcher, hack for red_record
server/red_{record, replay}.[ch]: introduce
server/red_worker: record to SPICE_WORKER_RECORD_FILENAME
server/tests/replay: introduce
Frediano Ziglio (1):
Allow to specify a filter for record output
Marc-André Lureau (1):
tests: use glib main loop
server/Makefile.am | 2 +
server/dispatcher.c | 10 +
server/dispatcher.h | 12 +
server/red_record_qxl.c | 877 +++++++++++++++++++++++++++
server/red_record_qxl.h | 36 ++
server/red_replay_qxl.c | 1243 +++++++++++++++++++++++++++++++++++++++
server/red_replay_qxl.h | 34 ++
server/red_worker.c | 40 +-
server/spice-server.syms | 4 +
server/tests/Makefile.am | 11 +
server/tests/basic_event_loop.c | 285 +++------
server/tests/replay.c | 346 +++++++++++
12 files changed, 2707 insertions(+), 193 deletions(-)
create mode 100644 server/red_record_qxl.c
create mode 100644 server/red_record_qxl.h
create mode 100644 server/red_replay_qxl.c
create mode 100644 server/red_replay_qxl.h
create mode 100644 server/tests/replay.c
--
2.4.3
More information about the Spice-devel
mailing list