Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Oct 2007 01:14:20 -0700 (PDT)
From:      Jeff Roberson <jroberson@chesapeake.net>
To:        NIIMI Satoshi <sa2c@sa2c.net>
Cc:        freebsd-current@freebsd.org, freebsd-threads@freebsd.org
Subject:   Re: sched_yield() is very slow when other threads are busy on FreeBSD-current
Message-ID:  <20071002011337.Q6669@10.0.0.1>
In-Reply-To: <46FD4B09.20006@sa2c.net>
References:  <46FD4B09.20006@sa2c.net>

next in thread | previous in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--0-1490414616-1191312860=:6669
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

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@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-threads
> To unsubscribe, send any mail to "freebsd-threads-unsubscribe@freebsd.org"
>
--0-1490414616-1191312860=:6669
Content-Type: TEXT/x-diff; charset=US-ASCII; name=relinquish.diff
Content-Transfer-Encoding: BASE64
Content-ID: <20071002011420.S6669@10.0.0.1>
Content-Description: 
Content-Disposition: attachment; filename=relinquish.diff

SW5kZXg6IHNjaGVkXzRic2QuYw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
UkNTIGZpbGU6IC9ob21lL25jdnMvc3JjL3N5cy9rZXJuL3NjaGVkXzRic2Qu
Yyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTA1DQpkaWZmIC11IC1yMS4x
MDUgc2NoZWRfNGJzZC5jDQotLS0gc2NoZWRfNGJzZC5jCTIxIFNlcCAyMDA3
IDA0OjEwOjIzIC0wMDAwCTEuMTA1DQorKysgc2NoZWRfNGJzZC5jCTIgT2N0
IDIwMDcgMDg6MDg6MzYgLTAwMDANCkBAIC0xMzI0LDggKzEzMjQsNiBAQA0K
IHNjaGVkX3JlbGlucXVpc2goc3RydWN0IHRocmVhZCAqdGQpDQogew0KIAl0
aHJlYWRfbG9jayh0ZCk7DQotCWlmICh0ZC0+dGRfcHJpX2NsYXNzID09IFBS
SV9USU1FU0hBUkUpDQotCQlzY2hlZF9wcmlvKHRkLCBQUklfTUFYX1RJTUVT
SEFSRSk7DQogCVNDSEVEX1NUQVRfSU5DKHN3aXRjaF9yZWxpbnF1aXNoKTsN
CiAJbWlfc3dpdGNoKFNXX1ZPTCwgTlVMTCk7DQogCXRocmVhZF91bmxvY2so
dGQpOw0KSW5kZXg6IHNjaGVkX3VsZS5jDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQpSQ1MgZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lzL2tlcm4vc2NoZWRf
dWxlLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjIwOQ0KZGlmZiAtdSAt
cjEuMjA5IHNjaGVkX3VsZS5jDQotLS0gc2NoZWRfdWxlLmMJMjQgU2VwIDIw
MDcgMDA6Mjg6NTQgLTAwMDAJMS4yMDkNCisrKyBzY2hlZF91bGUuYwkyIE9j
dCAyMDA3IDA4OjA4OjQ1IC0wMDAwDQpAQCAtMjUwMiw4ICsyNTAyLDYgQEAN
CiBzY2hlZF9yZWxpbnF1aXNoKHN0cnVjdCB0aHJlYWQgKnRkKQ0KIHsNCiAJ
dGhyZWFkX2xvY2sodGQpOw0KLQlpZiAodGQtPnRkX3ByaV9jbGFzcyA9PSBQ
UklfVElNRVNIQVJFKQ0KLQkJc2NoZWRfcHJpbyh0ZCwgUFJJX01BWF9USU1F
U0hBUkUpOw0KIAlTQ0hFRF9TVEFUX0lOQyhzd2l0Y2hfcmVsaW5xdWlzaCk7
DQogCW1pX3N3aXRjaChTV19WT0wsIE5VTEwpOw0KIAl0aHJlYWRfdW5sb2Nr
KHRkKTsNCg==

--0-1490414616-1191312860=:6669--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071002011337.Q6669>