xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* Snmp cpuRawIdle showing double
@ 2011-04-05 21:10 Nathan March
  2011-04-06 17:51 ` Nathan March
  0 siblings, 1 reply; 3+ messages in thread
From: Nathan March @ 2011-04-05 21:10 UTC (permalink / raw)
  To: xen-devel@lists.xensource.com

Posted this to xen-users back in Oct
(http://www.gossamer-threads.com/lists/xen/users/186768), but just
confirmed that I'm still seeing this behavior on 4.1.

Polling the UCE-SNMP-MIB::ssCpuRawIdle counter results in a total that's
double the actual number of cpu's on the system, so for example:

nms ~ # snmpwalk -v 2c -c 'XXX' xen1 1.3.6.1.4.1.2021.11.53 && sleep 60
&& snmpwalk -v 2c -c 'XXX' xen1 1.3.6.1.4.1.2021.11.53
UCD-SNMP-MIB::ssCpuRawIdle.0 = Counter32: 1313274
UCD-SNMP-MIB::ssCpuRawIdle.0 = Counter32: 1324862

(1324862 - 1313274) / 6000 * 100 = 193%

This is polling a dom0 restricted to 1 core using "dom0_max_vcpus=1
dom0_vcpus_pin=true", both proc/cpuinfo and top show only 1 core.

I also see the issue on the domU's, the domU's are running a stock
kernel which does not exhibit this behavior on physical hardware.

This is using stock xen 4.1 with the xen/stable-2.6.32.x kernel, using
net-snmp 5.4.3-r6. Anyone have any insight here or info on how I might
be able to debug this further? I'm not even sure where to look beyond this.

Thanks!

- Nathan

-- 
Nathan March <nathan@gt.net>
Gossamer Threads Inc. http://www.gossamer-threads.com/
Tel: (604) 687-5804 Fax: (604) 687-5806

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Snmp cpuRawIdle showing double
  2011-04-05 21:10 Snmp cpuRawIdle showing double Nathan March
@ 2011-04-06 17:51 ` Nathan March
  2011-04-07 18:04   ` Nathan March
  0 siblings, 1 reply; 3+ messages in thread
From: Nathan March @ 2011-04-06 17:51 UTC (permalink / raw)
  To: xen-devel@lists.xensource.com


On 4/5/2011 2:10 PM, Nathan March wrote:
> Polling the UCE-SNMP-MIB::ssCpuRawIdle counter results in a total that's
> double the actual number of cpu's on the system, so for example:
>
> nms ~ # snmpwalk -v 2c -c 'XXX' xen1 1.3.6.1.4.1.2021.11.53 && sleep 60
> && snmpwalk -v 2c -c 'XXX' xen1 1.3.6.1.4.1.2021.11.53
> UCD-SNMP-MIB::ssCpuRawIdle.0 = Counter32: 1313274
> UCD-SNMP-MIB::ssCpuRawIdle.0 = Counter32: 1324862
>
> (1324862 - 1313274) / 6000 * 100 = 193%

Dug into the net-snmp source code to figure out where it pulls that data
from, here's a test case:

x=$(cat /proc/stat | grep cpu0 | awk '{print $5}') && sleep 60 &&
y=$(cat /proc/stat | grep cpu0 | awk '{print $5}') && echo -e
"X:$x\nY:$y\nIDLE:" $(echo "scale=3; ($y-$x)/6000*100" | bc)

xen1 ~ # x=$(cat /proc/stat | grep cpu0 | awk '{print $5}') && sleep 60
&& y=$(cat /proc/stat | grep cpu0 | awk '{print $5}') && echo -e
"X:$x\nY:$y\nIDLE:" $(echo "scale=3; ($y-$x)/6000*100" | bc)    
X:15718848
Y:15730453
IDLE: 193.400

>From the man page, it says the user_hz is 1/100th:

              cpu  3357 0 4313 1362393
                     The amount of time, measured in units of USER_HZ
(1/100ths of a second on most architectures, use sysconf(_SC_CLK_TCK) to
obtain the right value), that the system spent in user mode, user mode
                     with low priority (nice), system mode, and the idle
task, respectively.  The last value should be USER_HZ times the second
entry in the uptime pseudo-file.

and sysconf agrees:

xen1 ~ # perl -e 'use POSIX; print POSIX::sysconf(&POSIX::_SC_CLK_TCK);'
100

Anyone have any ideas?

This works as expected on a very outdated dom0 I have, 2.6.21 and xen
3.2.1. It seems to be broken on at least xen 4.0 (2.6.31.13) and above.

- Nathan

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Snmp cpuRawIdle showing double
  2011-04-06 17:51 ` Nathan March
@ 2011-04-07 18:04   ` Nathan March
  0 siblings, 0 replies; 3+ messages in thread
From: Nathan March @ 2011-04-07 18:04 UTC (permalink / raw)
  To: xen-devel


On 4/6/2011 10:51 AM, Nathan March wrote:
> Dug into the net-snmp source code to figure out where it pulls that data
> from, here's a test case:
>
> x=$(cat /proc/stat | grep cpu0 | awk '{print $5}') && sleep 60 &&
> y=$(cat /proc/stat | grep cpu0 | awk '{print $5}') && echo -e
> "X:$x\nY:$y\nIDLE:" $(echo "scale=3; ($y-$x)/6000*100" | bc)
>
> xen1 ~ # x=$(cat /proc/stat | grep cpu0 | awk '{print $5}') && sleep 60
> && y=$(cat /proc/stat | grep cpu0 | awk '{print $5}') && echo -e
> "X:$x\nY:$y\nIDLE:" $(echo "scale=3; ($y-$x)/6000*100" | bc)    
> X:15718848
> Y:15730453
> IDLE: 193.400
>

Anyone?

Could I ask some people to try running this script on their non-loaded
dom0 and see what it returns?

x=$(cat /proc/stat | grep cpu0 | awk '{print $5}') && sleep 60 &&
y=$(cat /proc/stat | grep cpu0 | awk '{print $5}') && echo -e
"X:$x\nY:$y\nIDLE:" $(echo "scale=3; ($y-$x)/6000*100" | bc)

The Idle output should close to 100% per cpu in the dom0.

- Nathan

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-04-07 18:04 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-05 21:10 Snmp cpuRawIdle showing double Nathan March
2011-04-06 17:51 ` Nathan March
2011-04-07 18:04   ` Nathan March

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).