On Sat, 16 Apr 2011 14:52:51 +0100 "Richard W.M. Jones" <rjones@xxxxxxxxxx> wrote: > On Fri, Apr 15, 2011 at 04:04:52PM +0900, KAMEZAWA Hiroyuki wrote: > [...] > > The idea and the implementation is sound. However I have a problem > with this proposed API: > > > +typedef struct _virDomainPcpuStat virDomainPcpuStatStruct; > > + > > +struct _virDomainPcpuStat { > > + unsigned long long cpuTime; > > +}; > > + > > +typedef virDomainPcpuStatStruct *virDomainPcpuStatPtr; > > [...] > > > /** > > + * virDomainPcpuStats: > > + * @dom: pointer to the domain object > > + * @stats: nr_stats-sized array of stat structures (returned) > > + * @nr_stats: number of cpu statistics requested > > + * @flags: unused, always pass 0 > > + * > > + * This function provides per-cpu statistics for the domain. 'cpu' here means > > + * not vcpu. > > + * > > + * Up to 'nr_stats' elements of 'stats' will be populated with cpu statistics > > + * from the domain. Only statistics supported by the domain, the driver, and > > + * this version of libvirt will be returned. > > + * > > + * Now, only cpuTime per cpu is reported in nanoseconds. > > + * > > + * Returns: The number of stats provided or -1 in case of failure. > > + */ > > +int virDomainPcpuStats (virDomainPtr dom, virDomainPcpuStatPtr stats, > > + unsigned int nr_stats, unsigned int flags) > > Am I correct that the caller sets nr_stats == number of physical > cores, and allocates an array of nr_stats * virDomainPcpuStats > structs? > > We could never add more elements to the _virDomainPcpuStat structure, > because that would break the ABI for existing callers. (Or I guess we > could use the flags field). > > I think we should forget about the structure, and just use an array of > unsigned long long's, but I'd like to hear what others think. > I received the same reply from others and I'd like to go that way. > Is it likely that we would return other per-physical-CPU stats in > future? > Not sure. But if some guy adds more statistics to cpuacct cgroup, as # of vmenter/vmexit etc...we can count it. So, I'd like to pass 'What you want' flag as VirDomainPhysicalCpuStat(domain, unsigned long long *starts, int nr_stats, int what_I_want) and then, pass VIT_DOMAIN_PHYSICAL_CPU_STAT_CPUTIME as it argument. what_I_want. Thanks, -Kame -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list