[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH V5 0/6] icount: Implement delay algorithm between gu
From: |
Sebastian Tanase |
Subject: |
[Qemu-devel] [PATCH V5 0/6] icount: Implement delay algorithm between guest and host clocks |
Date: |
Fri, 25 Jul 2014 11:56:27 +0200 |
The icount option already implemented in QEMU allows the guest to run at a
theoretical
frequency of 1/(2^N) GHz (N is the icount parameter). The goal of this patch is
to have a
real guest frequency close to the one imposed by using the icount option.
The main idea behind the algorithm is that we compare the virtual monotonic
clock and the
host monotonic clock. For big icounts (on our test machine, an i5 CPU @
3.10GHz, icounts
starting at 6) the guest clock will be ahead of the host clock. In this case,
we try to
sleep QEMU for the difference between the 2 clocks. Therefore, the guest would
have
executed for a period almost equally to the one imposed by icount. We should
point out
that the algorithm works only for those icounts that allow the guest clock to
be in front
of the host clock.
The first patch adds support for QemuOpts for the 'icount' parameter. It also
adds a
suboption called 'shift' that will hold the value for 'icount'. Therefore we
now have
-icount shift=N|auto or -icount N|auto.
The second patch adds the 'align' suboption for icount.
The third patch exports 'icount_time_shift' so that it can be used in places
other than
cpus.c; we need it in cpu-exec.c for calculating for how long we want QEMU to
sleep.
The forth patch implements the algorithm used for calculating the delay we want
to sleep.
It uses the number of instructions executed by the virtual cpu and also the
icount_time_shift.
The fifth patch prints to the console whenever the guest clock runs behind the
host
clock. The fastest printing speed is every 2 seconds, and we only print if the
align option
is enabled. We also have a limit to 100 printed messages.
The sixth patch adds information about the difference between the host and
guest clocks
(taking into account the offset) in the 'info jit' command. We also print the
maximum
delay and advance of the guest clock compared to the host clock.
v4 -> v5
* Use existing offset value (timers_state.cpu_clock_offset) for computation ->
patch 4
* Use cpu_get_clock and cpu_get_icount for showing drift information -> patch 6
Important note: This patch series relies on the bug fix discussed here
http://lists.gnu.org/archive/html/qemu-devel/2014-07/msg03208.html
Sebastian Tanase (6):
icount: Add QemuOpts for icount
icount: Add align option to icount
icount: Make icount_time_shift available everywhere
cpu_exec: Add sleeping algorithm
cpu_exec: Print to console if the guest is late
monitor: Add drift info to 'info jit'
cpu-exec.c | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++
cpus.c | 59 +++++++++++++++++++++--
include/qemu-common.h | 9 +++-
include/qemu/timer.h | 1 +
monitor.c | 1 +
qemu-options.hx | 17 +++++--
qtest.c | 13 +++++-
vl.c | 39 +++++++++++++---
8 files changed, 248 insertions(+), 18 deletions(-)
--
2.0.0.rc2
- [Qemu-devel] [PATCH V5 0/6] icount: Implement delay algorithm between guest and host clocks,
Sebastian Tanase <=
- [Qemu-devel] [PATCH V5 1/6] icount: Add QemuOpts for icount, Sebastian Tanase, 2014/07/25
- [Qemu-devel] [PATCH V5 3/6] icount: Make icount_time_shift available everywhere, Sebastian Tanase, 2014/07/25
- [Qemu-devel] [PATCH V5 2/6] icount: Add align option to icount, Sebastian Tanase, 2014/07/25
- [Qemu-devel] [PATCH V5 6/6] monitor: Add drift info to 'info jit', Sebastian Tanase, 2014/07/25
- [Qemu-devel] [PATCH V5 4/6] cpu_exec: Add sleeping algorithm, Sebastian Tanase, 2014/07/25
- [Qemu-devel] [PATCH V5 5/6] cpu_exec: Print to console if the guest is late, Sebastian Tanase, 2014/07/25
- Re: [Qemu-devel] [PATCH V5 0/6] icount: Implement delay algorithm between guest and host clocks, Andreas Färber, 2014/07/25