Features/Tracing/Roadmap: Difference between revisions

From QEMU
No edit summary
No edit summary
Line 21: Line 21:


It would be good to have trace-events looged with timestamps, for debugging purposes.
It would be good to have trace-events looged with timestamps, for debugging purposes.
====Fix i386-linux-user build====
Owner: Prerna
LINK  i386-linux-user/qemu-i386
../simpletrace.o: In function `do_info_all_trace_events':
/home/stefanha/qemu/simpletrace.c:88: undefined reference to `monitor_printf'
../simpletrace.o: In function `do_info_trace':
/home/stefanha/qemu/simpletrace.c:77: undefined reference to `monitor_printf'


===Outstanding===
===Outstanding===
Line 37: Line 47:
* memory management
* memory management
* live migration
* live migration
====Fix i386-linux-user build====
Owner: Prerna
LINK  i386-linux-user/qemu-i386
../simpletrace.o: In function `do_info_all_trace_events':
/home/stefanha/qemu/simpletrace.c:88: undefined reference to `monitor_printf'
../simpletrace.o: In function `do_info_trace':
/home/stefanha/qemu/simpletrace.c:77: undefined reference to `monitor_printf'


====Out-of-line trace file write-out====
====Out-of-line trace file write-out====

Revision as of 12:03, 20 July 2010

Here are the outstanding tasks for a tracing patchset that can be proposed for merge:

Milestone 1

The first patchset that brings basic tracing features to QEMU.

Done

Documentation

Owner: Stefan

User documentation that explains how to collect traces and add new trace events. I have committed documentation to the tracing branch here:

http://repo.or.cz/w/qemu/stefanha.git/blob_plain/91fde34dc6bfe01af6d5e9265f6a81535d6add15:/docs/tracing.txt

Timestamps

Owner: Stefan

It would be good to have trace-events looged with timestamps, for debugging purposes.

Fix i386-linux-user build

Owner: Prerna

LINK  i386-linux-user/qemu-i386
../simpletrace.o: In function `do_info_all_trace_events':
/home/stefanha/qemu/simpletrace.c:88: undefined reference to `monitor_printf'
../simpletrace.o: In function `do_info_trace':
/home/stefanha/qemu/simpletrace.c:77: undefined reference to `monitor_printf'

Outstanding

Out-of-the-box trace events

Owner: ?

More tracepoints need to be added for instrumenting other qemu components such as virtio drivers, etc.

QEMU must come with a useful set of trace events that allows people to get up and running quickly. Focus areas include:

  • guest device emulation
  • host devices
  • lifecycle and runloop
  • memory management
  • live migration

Out-of-line trace file write-out

Owner: Stefan

Trace buffers are written out to file synchronously. The vcpu thread should not be blocked so an async write-out mechanism is needed.

Trace file command

Owner: Stefan

Traces are written out to hardcoded /tmp/trace.log. This must be configurable. Tracing at startup time should still be possible so configuration needs to happen early. It should also be possible to flush the trace buffer to the file.

Binary trace format finalization

Owner: Stefan

We should leave room for extension. I suggest partitioning the Event ID namespace into normal events and special events. The __trace_begin special event is defined to contain the file format version and/or trace record size in bytes as the first trace record in the file.

This way, post-processing tools can check the format of the binary trace file.

Future

Integration with QMP

Owner: Prerna

Currently the trace commands are available from the monitor but a QMP interface is needed.

QMP/monitor command review

Owner: Prerna, Stefan

Are we happy to support the trace commands in the longer term (i.e. did we get the commands and syntax right)? Is input being validated properly?

Minimal (zero?) overhead

Owner: Prerna

In its present format, the tracing infrastructure causes at least two function calls even for trace events that are disabled. Ideally, there should be minimal performance overhead for disabled trace events. Investigating scope for further optimization.

Bulk enable/disable using groups, source file, or tags

Owner: Prerna

Enabling trace events individually is tedious. A mechanism for selecting trace events in bulk would be useful.