[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] open/stat64 syscalls run faster on Xen VM than standard Linux
Hi, On Mon, 2005-11-28 at 10:27 -0600, xuehai zhang wrote: > Your questioning makes sense to me. But I am not very sure about how to > effectively count how many > these operations can be completed in a second. Can you give me some hint? Here's a quick-and-dirty wrapper for timing "something" over the space of a few seconds (default 10) and working out how fast it went. Obviously, you want to be running this on an otherwise-idle machine, and with CPU frequency management disabled. It's really, really dumb, but it only uses "time()", not any subsecond time sourcing, for its work. Cheers, Stephen #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/time.h> #define TIME_SECS 10 static inline int time_is_before(time_t a, time_t b) { return ((signed) (a-b)) < 0; } void timeme_noop(void) { return; } void timeme_dosomething(void) { struct stat statbuf; stat("/", &statbuf); } int run_time_loop(const char *what, void (*fn)(void)) { time_t end; int count=0; end = time(NULL) + TIME_SECS; printf("Timing %s for %d seconds: ", what, TIME_SECS); fflush(stdout); do { ++count; fn(); } while (time_is_before(time(NULL), end)); printf("completed %d cycles in %d seconds\n", count, TIME_SECS); return count; } void wait_for_tick(void) { time_t end; printf("Waiting for fresh timer tick..."); fflush(stdout); end = time(NULL) + 1; while (time_is_before(time(NULL), end)); printf(" done.\n"); } int main(void) { int loops_noop, loops_something; float how_long; wait_for_tick(); loops_noop = run_time_loop("noop", timeme_noop); loops_something = run_time_loop("something", timeme_dosomething); how_long = 1.0 / ((float) (loops_noop - loops_something) / (TIME_SECS)); printf ("Average time for something: %f seconds (%f ns).\n", how_long, how_long * 1000000000.0); } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |