On Sat, 29 Sep 2007, NIIMI Satoshi wrote: > Hi, > > I experienced sched_yield() is very slow when other threads are busy > on FreeBSD-current. Hello, Can you please try the enclosed patch and tell me if it addresses your problem? Thanks, Jeff > > When I run the program: > ------------------------------------------------ > #include <assert.h> > #include <stdio.h> > #include <pthread.h> > > #define NUM_THREAD (10) > > volatile int run = 0; > > void *start(void *p) > { > while (!run) > ; > return p; > } > > int main() > { > pthread_t th[NUM_THREAD]; > int i; > for (i = 0; i < NUM_THREAD; i++) { > assert(pthread_create(&th[i], NULL, start, NULL) == 0); > sched_yield(); > } > run = 1; > for (i = 0; i < NUM_THREAD; i++) > assert(pthread_join(th[i], NULL) == 0); > return 0; > } > ------------------------------------------------ > The output of /usr/bin/time: > > FreeBSD 6.2-RELEASE, libthr, HZ=100, GENERIC kernel: > 0.55 real 0.55 user 0.00 sys > > FreeBSD 7-CURRENT, libthr, HZ=100, kernel > include GENERIC > nooptions INVARIANTS, INVARIANT_SUPPORT, WITNESS, WITNESS_SKIPSPIN: > 164.16 real 162.80 user 0.00 sys > > I tried SCHED_ULE too, but does not help so much. > > Increasing HZ helps to perform better, but still very slower than FreeBSD-6. > > Thanks, > -- > NIIMI Satoshi > _______________________________________________ > freebsd-threads_at_freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-threads > To unsubscribe, send any mail to "freebsd-threads-unsubscribe_at_freebsd.org" >
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:18 UTC