pin/bind a pthread to a processor? (take 2)

John Giacomoni John.Giacomoni at colorado.edu
Tue Jan 30 23:50:55 UTC 2007


Previously when I asked this question it turned out to not be as
necessary as I thought. However, I now need a way to pin/bind a
user-space thread to a processor until I'm done with it as my
timing constraints are too tight to account for.

I checked sys/sched.h, sys/proc.h, pthread.h, and pthread_np.h but
it doesn't look like an API to do this was added in 6.2.

Can someone point me at a way to hack this in?  I'm working on a
conference submission and I unfortunately need to pin in
user-space as abusing non-preemptive kernel threads is not
sufficient for my task.

The plan is to have 1-3 threads pinned through the execution of
the test (30s - 10min, maybe more) but to leave a cpu untouched
so that normal system function can continue on it.

When pinning I'd also like to be able to pin to specific processors
so I account for the effects placement of different dies, important
for my work on dual-processor dual-core AMD systems where IO is
routed via hypertransport through the first processor.



For those who are interested, this work is focused on building
pipeline-parallel systems that overlap sequential work by
streaming data through a sequence of processors.  One app that
I've built with it is to support GigE forwarding at the maximum
rate for all frame sizes through user-space.

When this work is complete it may be able to help Daniel O'Connor
and his question about streaming data from the kernel to userland
(1/18/07).

Additional information and papers are available at
http://www.cs.colorado.edu/~jgiacomo

thanks for any help!

John G

On Sep 8, 2006, at 6:33 PM, David Xu wrote:

> On Saturday 09 September 2006 04:18, John Giacomoni wrote:
>> Is it possible to bind a pthread to a processor in 5.5 or 6.1?
>>
>> I currently have a code base that uses libpthread with multiple
>> threads, mutexes and condition variables.
>> The problem I'm having is that I seem to be suffering wall-clock
>> timing aberrations that I believe are introduced by the scheduler.
>>
>> Thanks,
>>
>> John G
>>
>> --
>>
>> John.Giacomoni at colorado.edu
>> University of Colorado at Boulder
>> Department of Computer Science
>> Engineering Center, ECCR 1B50
>> 430 UCB
>> Boulder, CO 80303-0430
>> USA
>
> I don't think we have such API allowing you to bind a thread to
> a specific CPU, I had implemented such an API for DragonFlyBSD, but
> its 1:1 threading is not mature yet.
>
> David Xu
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers- 
> unsubscribe at freebsd.org"

--

John.Giacomoni at colorado.edu
University of Colorado at Boulder
Department of Computer Science
Engineering Center, ECCR 1B50
430 UCB
Boulder, CO 80303-0430
USA

-------------- next part --------------





More information about the freebsd-hackers mailing list