nanosleep/usleep using cpu under vmware esx
Tom Pepper
tom at band-ade.com
Mon Sep 5 20:17:20 PDT 2005
Y'all:
I'm running a few instances of 5-stable under VMWare ESX 2.51 on
several dual-processor HP BL20P 3Ghz+ Xeon servers. The system load
runs normally for network processes like apache and mysql, but for
any process which utilizes nanosleep() or usleep() in a while loop
there's between 1-2% of CPU consumed, even when the processes have no
tasks performing beside the sleep. Running the same processes on
actual hardware in an identical configuration (5-STABLE on physical
blade) shows no CPU load.
My grasp of programming is far from wide-reaching, but I've gone so
far as to compile a simple program. Please don't laugh within earshot:
#include <unistd.h>
int main() {
int i;
for(i=0; i<1000; i++) {
usleep(2000);
}
return 0;
}
A few results after compiling (-O2 -s) and executing within /usr/bin/
time:
inside VMWare-hosted 5-stable host:
0.044u 0.050s 0:19.62 0.4% 53+834k 0+0io 0pf+0w
0.029u 0.054s 0:19.60 0.3% 24+810k 0+0io 0pf+0w
0.036u 0.057s 0:19.60 0.4% 29+973k 0+0io 0pf+0w
0.037u 0.053s 0:19.59 0.4% 32+1072k 0+0io 0pf+0w
outside VMWare within 5-stable on same hardware:
0.006u 0.006s 0:19.99 0.0% 0+0k 0+0io 0pf+0w
0.000u 0.012s 0:19.99 0.0% 12+396k 0+0io 0pf+0w
0.002u 0.010s 0:19.99 0.0% 20+660k 0+0io 0pf+0w
0.004u 0.008s 0:19.99 0.0% 0+0k 0+0io 0pf+0w
I'm assuming this has something to do with the fact that vmware's
concept of time differs from being on the wire, but I'm wondering if
there's anything I can do to reduce sleep CPU consumption of software
designed around this concept (streaming servers, etc.)?
Would this question be better-addressed in another list?
Thanks,
-Tom
More information about the freebsd-stable
mailing list