Messages in this thread | | | Date | Wed, 8 Feb 2012 21:45:55 -0500 | Subject | linux thread scheduling | From | Xin Tong <> |
| |
I have a program that spawns 3 threads and there is a great deal of sharing among the three threads. they all read/update a couple of shared variables.
I run this on nehalem (8 cores, 4 core in each physical package), I find that running the 3 threads on core 0, 1, 2 (using pthread_setaffinitiy) gives much better results, this is because the cache coherency protocol performs much better on the same package. However, if I leave Linux (Suse Enterprise) to schedule it. it gives much worse performance, i suspect that linux is scheduling the 3 threads across the physical packages ( 2 on one package, 1 on another). Is this possible ? why does linux do this ?
Thanks
Xin
| |