On Mon, Jul 27, 2009 at 03:48:36PM +0100, Daniel P. Berrange wrote:
The qemudDomainGetVcpus() method in QEMU driver has the following
long
standing todo item
/* XXX cpu time, current pCPU mapping */
This has caused confusion for users, because they set affinity and then
wonder why 'virsh vcpuinfo' constantly reports their guest as running
on pCPU 0. This patch implements the missing bits, pulling it out of
/proc/$PID/task/$TID/stat
ie, the per-vCPU thread status file
[...]
- if (fscanf(pidinfo, "%*d %*s %*c %*d %*d %*d %*d %*d %*u
%*u %*u %*u %*u %llu %llu", &usertime, &systime) != 2) {
- qemudDebug("not enough arg");
+ /* See 'man proc' for information about what all these fields are.
We're
+ * only interested in a very few of them */
+ if (fscanf(pidinfo,
+ /* pid -> stime */
+ "%*d %*s %*c %*d %*d %*d %*d %*d %*u %*u %*u %*u %*u %llu
%llu"
+ /* cutime -> endcode */
+ "%*d %*d %*d %*d %*d %*u %*u %*d %*u %*u %*u %*u"
+ /* startstack -> processor */
+ "%*u %*u %*u %*u %*u %*u %*u %*u %*u %*u %*d %d",
+ &usertime, &systime, &cpu) != 3) {
the comments help but it's still frightening
+ VIR_WARN0("cannot parse process status data");
+ errno = -EINVAL;
return -1;
}
ACK,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit
http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/