Re: Threading...

From: Bill Davidsen
Date: Fri Jan 19 2007 - 16:24:11 EST


Brian McGrew wrote:
On 1/19/07 10:55 AM, "Arjan van de Ven" <arjan@xxxxxxxxxxxxx> wrote:
On Fri, 2007-01-19 at 10:43 -0800, Brian McGrew wrote:
I have a very interesting question about something that we're seeing
happening with threading between Fedora Core 3 and Fedora Core 5. Running
on Dell PowerEdge 1800 Hardware with a Xeon processor with hyper-threading
turned on. Both systems are using a 2.6.16.16 kernel (MVP al la special).

We have a multithreaded application that starts two worker threads. On
Fedora Core 3 both of these we use getpid() to get the PID of the thread and
then use set_afinity to assign each thread to it's own CPU. Both threads
run almost symmetrically even on their given CPU watching the system
monitor.
this is odd; even in FC3 getpid() is supposed to return the process ID
not the thread ID

What am I missing? What do I need to do in FC5 or the kernel or the
threading library to get my threads to run in symmetric parallel again???
you should fix the app to use something like pthread_self() instead...
(or the highly unportable gettid() but that would just be horrible)
-----

And on FC5 I am using pthread_self but my problem isn't simply with
pthread_self, it's with the scheduling. On FC3 both threads run
simultaneously in almost symmetric parallel. On FC5 one thread don't pick
up and start until the previous one is done. On FC3, using getpid for the
thread I could use set_afinity to force each thread to its own processor and
with FC5 I can't; so I've got one idle processor all the time.

This sounds so unlikely I hesitate to mention it, but you are not, by any chance, running pthreads on one and nptl on the other, are you?

--
bill davidsen <davidsen@xxxxxxx>
CTO TMR Associates, Inc
Doing interesting things with small computers since 1979
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/