[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.
QMP API:
set-event-loop-profiling enable=on/off
[interval=seconds] [iothread=name] and it emits a QMP event with
[{name, counter, time_elapsed}]
Pros:
It works on all systems.
Cons:
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.
Pros:
No performance overhead using trace
Cons:
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
Pros:
No performance overhead using trace
Cons:
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.
Regards,
Prashanth Sunder
- [Qemu-devel] top(1) utility implementation in QEMU,
prashanth sunder <=