[Libosinfo] RFC: Add clock/timers info in osinfo-db

Martin Sivak msivak at redhat.com
Mon Jan 21 15:15:44 UTC 2019


Hi,

Couple of points:
- do we already handle hypervisor and rachitecture differences
elsewhere in libosinfo? (it might affect RAM sizes as well for
example)
- a timer might be supported in more than one hypervisor (your timer
example does not express that)
- the tickpolicy setting is not a property of a timer only, but
depends on the guestos as well

So if your timers (and devices, features in general) support
hypervisor support fields (supported-by-hv="xen,qemu") and/or
architecture support (supported-by-arch="x86_64,i386,ppc") then you
could express timers in the same way as devices and let the guest os
reference the timer device with catchup policy defined:

Example (might not be the best form for XML or the db):

 <timer id="http://qemu.org/timer/hpet">
    <name>hpet</name>
    <arch>x86_64</arch>
    // The same element repeated with disjunct supported-by attributes (matrix)
    <allowed-tickpolicy supported-by-hv="xen"
supported-by-arch="all">catchup,delay</allowed-tickpolicy>
    <allowed-tickpolicy supported-by-hv="kvm"
supported-by-arch="x86_64,ppc">catchup,delay,merge</allowed-tickpolicy>
  </timer>

  <os>
    <timers>
      <timer id="http://qemu.org/timer/hpet" tickpolicy="catchup"
supported-by-hv="xen"/>
      <timer id="http://qemu.org/timer/hpet" tickpolicy="merge"
supported-by-hv="kvm"/>
    </timers>
  </os>


Martin

On Mon, Jan 21, 2019 at 3:22 PM Fabiano Fidêncio <fidencio at redhat.com> wrote:
>
> People,
>
> I'd like to start a discussion here as this topic is not as simple as
> it looks like.
>
> My first idea would be to have something like:
> <os>
>   <clock offset="utc|localtime">
>     <timer name="hyperv|hpet|kvm|pit|rtc|tsc"
> tickpolicy="catchup|delay|discard|merge" arch="aarch64|x86_64|..."
> supported="true|false"/>
>     ...
>   </clock>
> </os>
>
> But Daniel raised the following points:
> - *every* guest OS wants an RTC timer, the only question is whether
> its better to have it synced UTC or locatime;
> - "tickpolicy" may not actually be portable across hypervisors;
>
> Now, I'm stuck on how to properly represent those and I'd like to have
> some feedback on the following suggestion:
> - Create a osinfo-db/data/timer/{qemu.org,xen.org,...} and add there
> the supported timers for which platform and add the following timers:
> hpet, kvmclock, pit, rtc, tsc and hypervclock.
>
> - Once we have those timers added, we'd have to add them to the
> specific platforms:
>   - According to https://libvirt.org/formatdomain.html, we have the
> following list:
>     - hpet: libxl, xen, qemu
>     - kvmclock: qemu
>     - pit: qemu
>     - rtc: qemu
>     - tsc: libxl
>     - hypervclock: qemu (since 1.2.2)
>
> - And, finally, add those to the OSes;
>
> There are still a few questions that I have:
> - Do we treat "libxl" as "xen" on osinfo-db side or is "libxl"
> something that has to be added to the platforms?
> - Shall we care about "timezone" or "variable" possible clock offsets?
> - Are the clock offsets something that's portable across the
> platforms? Or, IOW, would be good enough to just have the allowed
> values as a choice and deal with that in the schema?
> - What would be a reasonable representation for the timers? Something like ...
>   <timer id="http://qemu.org/timer/hpet">
>     <name>hpet</name>
>     <arch>x86_64</arch>
>     <tickpolicy>catchup</tickpolicy>
>   </timer>
>   - In case, it's totally wrong, why? What would be a different way to go?
>
> This seems like a *bunch* of work to be done, but if this is the way
> to go, well, this will be the path taken.
>
> Best Regards,
> --
> Fabiano Fidêncio




More information about the Libosinfo mailing list