
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@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/