Date: Wed, 29 Dec 2004 18:47:06 -0800 (PST) From: Damian Cieslicki <dcieslicki@yahoo.com> To: freebsd-threads@freebsd.org Subject: Thread time spikes Message-ID: <20041230024706.94879.qmail@web52401.mail.yahoo.com>
next in thread | raw e-mail | index | archive | help
Hi folks, I just wonder about the time behavior of this simple threaded program: #include <pthread.h> /* threading */ #include <stdio.h> /* printf */ #include <stdlib.h> /* exit */ #define MILLION 1000000L #define THOUSAND 1000L /* prototypes */ void * doit(void *arg); /* ************************************************************************* */ int main (int argc, char **argv){ long duration1; pthread_t pthread_id; struct timespec tv1start, tv1end; clock_gettime(CLOCK_REALTIME, &tv1start); // real /* thread ... */ pthread_create(&pthread_id, NULL, doit, NULL); pthread_join(pthread_id, NULL); /* vs function call */ // doit(NULL); clock_gettime(CLOCK_REALTIME, &tv1end); duration1 = MILLION*(tv1end.tv_sec - tv1start.tv_sec) + (tv1end.tv_nsec - tv1start.tv_nsec)/THOUSAND; printf("%ld\n", duration1); exit(0); } /* ************************************************************************* */ void* doit(void *arg){ int k; k=42; /* heavy computation */ return(NULL); } /* ************************************************************************* */ compiler options: gcc -D_THREAD_SAFE -g -Wall -pthread threadspikes.c -o threadspikes os: freebsd 5.2, generic kernel hw: Pentium III 500 Mhz. load: no real computation, just the standard daemons and x window are running. Why does the threaded program take each 10th time much longer?: Why I get these "time spikes" ? 359 392 365 379 374 2474 370 363 365 376 364 364 397 378 393 389 370 365 3221 366 377 replacing the thread with a function call reduces the number of spikes drastically but they still do occur (even more drastically): : 3 3 3 3 3 3 3 19021 I assume there is a global re-scheduling after pthread_create and sometimes a totally different process (like sendmail) gets chosen. But even nice -n -n19 doesn't help. Is there a way to get deterministic results? -- __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041230024706.94879.qmail>