[libvirt] [PATCHv2 1/6] virNodeGetCPUTime: Expose new API

Minoru Usui usui at mxm.nes.nec.co.jp
Wed Apr 27 05:09:04 UTC 2011


Hi,

I'm sorry for late reply.

On Tue, 19 Apr 2011 11:48:55 +0100
"Daniel P. Berrange" <berrange at redhat.com> wrote:

> On Fri, Apr 08, 2011 at 08:33:12PM +0900, Minoru Usui wrote:
> > virNodeGetCPUTime: Expose new API
> > 
> > Signed-off-by: Minoru Usui <usui at mxm.nes.nec.co.jp>
> > ---
> >  include/libvirt/libvirt.h.in |   64 ++++++++++++++++++++++++++++++++++++++++++
> >  src/libvirt_public.syms      |    5 +++
> >  2 files changed, 69 insertions(+), 0 deletions(-)
> > 
> > diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
> > index bd36015..154c138 100644
> > --- a/include/libvirt/libvirt.h.in
> > +++ b/include/libvirt/libvirt.h.in
> > @@ -228,6 +228,57 @@ struct _virNodeInfo {
> >      unsigned int threads;/* number of threads per core */
> >  };
> >  
> > +/**
> > + * virNodeCpuTime:
> > + *
> > + * a virNodeCpuTime is a structure filled by virNodeGetCpuTime() and providing
> > + * the information for the cpu time of the node.
> > + */
> > +
> > +/**
> > + * Cpu Time Statistics Tags:
> > + */
> > +typedef enum {
> > +    /*
> > +     * The cumulative CPU time which spends by kernel,
> > +     * when the node booting up.(in nanoseconds).
> > +     */
> > +    VIR_NODE_CPU_TIME_KERNEL               = 0,
> > +    /*
> > +     * The cumulative CPU time which spends by user processes,
> > +     * when the node booting up.(in nanoseconds).
> > +     */
> > +    VIR_NODE_CPU_TIME_USER                 = 1,
> > +    /*
> > +     * The cumulative idle CPU time,
> > +     * when the node booting up.(in nanoseconds).
> > +     */
> > +    VIR_NODE_CPU_TIME_IDLE                 = 2,
> > +    /*
> > +     * The cumulative I/O wait CPU time,
> > +     * when the node booting up.(in nanoseconds).
> > +     */
> > +    VIR_NODE_CPU_TIME_IOWAIT               = 3,
> > +    /*
> > +     * The CPU utilization.
> > +     * The usage value is in percent and 100% represents all CPUs on
> > +     * the server.
> > +     */
> > +    VIR_NODE_CPU_TIME_UTILIZATION          = 4,
> > +
> > +    /*
> > +     * The number of statistics supported by this version of the interface.
> > +     * To add new statistics, add them to the enum and increase this value.
> > +     */
> > +    VIR_NODE_CPU_TIME_NR                   = 5,
> > +} virNodeCpuTimeTags;
> > +
> > +typedef struct _virNodeCpuTime virNodeCpuTime;
> > +
> > +struct _virNodeCpuTime {
> > +    virNodeCpuTimeTags tag;
> > +    unsigned long long val;
> > +};
> 
> I've just remembered that the virSchedParameter, virMemoryParameter and
> virBlkioParameter structs all use a string to represent the data value,
> rather than an enum. I wonder if we ought todo the same here.
> 
> eg, something like
> 
>   #define VIR_NODE_CPUE_FIELD_LENGTH 80
> 
>   struct _virNodeCpuParameter {
>      char field[VIR_NODE_CPU_FIELD_LENGTH]
>      unsigned long long value;
>   };
> 
> They also have a union for returning different data types, beyond just
> 'unsigned long long' but I think that might be overkill here.

I implemented this based on virDomainMemoryStats().
Is it better that the patches is based on virDomainGetMemoryParameters()/BlkioParameters()?

If so, I'll rebase these patch series.
-- 
Minoru Usui <usui at mxm.nes.nec.co.jp>




More information about the libvir-list mailing list