CPU overhead

Hal Murray hmurray at megapathdsl.net
Sun Apr 8 22:27:53 EDT 2007

Can anybody confirm that it's reasonable for a Geode to take 5 cycles per 
iteration for an empty loop?
    for (j = 0; j < xxx; j++) {}
The same binary on a Celeron takes 2 cycles.

If yes, I can confirm that the system overhead is close to 0.  It looks like 
about 1%, maybe 0.9%.

If not, I'm confused and/or I have an interesting glitch to track down.

Long story:

  I have a collection of hacks for investigating performance.

  One of them forks a low priority thread per CPU that does nothing but eat 
up all the cycles.  Any cycles it doesn't get are system overhead and/or used 
by the application you are testing.  This is the only approach I have found 
for accurately measuring CPU utilization for things like network test 
programs.  Sampling from the scheduler clock (like top does) gets 
synchronized with the network too easily.

Odds and ends:

The (measured) CPU speed is 363 MHz.  That's reasonable if you start at 366 
and round down a bit for the spread spectrum EMI reduction hack.

Best TCP receive goes at 66 to 67 megabits/sec.  Send is 48-49.  I haven't 
investigated.  That's using a USB Ethernet dongle.

These are my opinions, not necessarily my employer's.  I hate spam.

More information about the Devel mailing list