[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] top(1) utility implementation in QEMU

From: prashanth sunder
Subject: [Qemu-devel] top(1) utility implementation in QEMU
Date: Mon, 26 Sep 2016 19:14:33 +0530

Hi All,

Summary of the discussion and different approaches we had on IRC
regarding a top(1) tool in qemu

Implement unique naming for all event loop resources.  Sometimes a
string literal can be used but other times the unique name needs to be
generated at runtime (e.g. filename for an fd).

Approach 1)
For a built-in QMP implementation:
We have callbacks from fds, BHs and Timers
So everytime one of them is registered - we add them to the list(what
we see through QMP)
and when they are unregistered - we remove them from the list.
Ex: aio_set_fd_handler(fd, NULL, NULL, NULL) - unregistering an fd -
will remove the fd from the list.

set-event-loop-profiling enable=on/off
[interval=seconds] [iothread=name] and it emits a QMP event with
[{name, counter, time_elapsed}]

It works on all systems.
Information present inside glib is exposed only via systemtap tracing
- these will not be available via QMP.
For example - I/O in chardevs, network IO etc

Approach 2)
Using Trace:
Add trace event for each type of event loop resource (timer, fd, bh,
etc) in order to see when a resource fires.
Write top(1)-like SystemTap script to get data from the trace backend.

No performance overhead using trace

The data available from trace depends on the trace-backend that qemu
is configured with.
It is dependent on availability of SystemTap and is backend specific

Approach 3)
Use Trace and extract trace backend data through QMP

No performance overhead using trace

User has to configure QMP to point to the trace backend.

Please let me know which implementation it is that I should follow and work on.

If I've missed out on anything important. Please add those points to this mail.

Prashanth Sunder

reply via email to

[Prev in Thread] Current Thread [Next in Thread]