Re: [Autotest] [Autotest PATCH] KVM-test: TSC drift test

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

 



* On Fri, Apr 29, 2011 at 02:42:20AM -0300, Lucas Meneghel Rodrigues wrote:
> On Thu, Apr 21, 2011 at 4:33 AM, Amos Kong <akong@xxxxxxxxxx> wrote:
> > This case is used to test the drift between host and guest.
> > Use taskset to make tsc program execute in a single cpu.
> > If the drift ratio bigger than 10%, then fail this case.
> 
> The calculations of the tsc frequency looks wrong...  See comments below.
> 
> Also, when Glauber or Zach could take a look into this test it'd be great!
> 
> > Signed-off-by: Amos Kong <akong@xxxxxxxxxx>
> > ---
> > ?client/tests/kvm/deps/get_tsc.c ? ? ? ?| ? 27 ++++++++++
> > ?client/tests/kvm/tests/tsc_drift.py ? ?| ? 88 ++++++++++++++++++++++++++++++++
> > ?client/tests/kvm/tests_base.cfg.sample | ? ?5 ++
> > ?3 files changed, 120 insertions(+), 0 deletions(-)
> > ?create mode 100644 client/tests/kvm/deps/get_tsc.c
> > ?create mode 100644 client/tests/kvm/tests/tsc_drift.py

...
> > + ? ? ? ?delta = tsc2 - tsc1
> > + ? ? ? ?logging.info("Host TSC delta for cpu %s is %s" % (i, delta))
> > + ? ? ? ?if delta < 0:
> > + ? ? ? ? ? ?raise error.TestError("Host TSC for cpu %s warps %s" % (i, delta))
> 
> ^ Yeah, I don't think this is expected to warp, but yet, good to check.
> 
> > + ? ? ? ?host_freq += delta / ncpu
> 
> Now, i really didn't understand the concept behind the tsc frequency.
> So we have a difference between 2 timestamps taken over an arbitrary
> period of time (in this case, looks 30s by default) and divide by the
> number of cpus, however we will repeat this procedure by the same
> amount so:
> 
> N * ( d_tsc1/N + d_tsc2/N + d_tsc3/N + ... + d_tscn/N)
  ^ ? 

I call it 'frequency' because the interval is fixed (30 seconds)

1) get a average tsc increment of host cpus in 30s
host_freq = ( d_tsc1/N + d_tsc2/N + d_tsc3/N + ... + d_tscn/N) 
          = ( d_tsc1 + d_tsc2 + d_tsc3 + ... + d_tscn)/N

2) get tsc increment of each vcpus in 30s
d_tsc_vcpu1
d_tsc_vcpu2
...
d_tsc_vcpuN

3) compare 'd_tsc_vcpu1' with 'host_freq'
ratio = (d_tsc_vcpu1 - host_freq) / host_freq
if ratio larger than 10%, then fail this test.

ratio = (d_tsc_vcpu2 - host_freq) / host_freq
if ratio larger than 10%, then fail this test.
...
 
Have talked with jason, I'll try to write a kvm-unit test for this testcase.

> This could be simplified to
> 
> (d_tsc1 + d_tsc2 + d_tsc3 +.... + d_tscn)
> 
> Unless I'm missing something... so
> 
> host_freq = sum(d_tsci)
> 
> The calculation could be simplified then... And by definition, isn't
> frequency how many times a phenomena occurs (in this case, change of
> timestamp counter) per time? So, don't we have to divide this sum by
> the time the program slept? Also, it looks like the whole logic to get
> the frequencies can be factored to a single function and just call
> that function for guest and host.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux