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

Peter Holmes peter_holmes2003 at yahoo.com
Sat Feb 10 01:29:25 UTC 2007


This is something I am interested in doing as well. I had corresponded with 

Julian Eischen & Daniel Elischer  about this. 


This was suggested by them but I haven't been able to figure it 

all out. Basically we could create SYSTEM_SCOPE pthreads. This way 

there is one KSE per pthread. I was hoping I could bind each KSE 


using sched_bind() - however the kernel doesn't  handle this very

well.


I know this sort of thing isn't for every one but it can be useful as John G. has indicated.

Will the gurus here comment on whether this approach will work and what I am doing wrong.

Mucho Gracias,

Peter

 

 


List:       freebsd-hackers  Subject:    pin/bind a pthread to a processor? (take 2)  From:       John Giacomoni <John.Giacomoni () colorado ! edu>  Date:       2007-01-30 23:34:28  Message-ID: 722B66D4-4030-4C12-8C8D-8B3288F86498 () colorado ! edu


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  

 
---------------------------------
The fish are biting.
 Get more visitors on your site using Yahoo! Search Marketing.


More information about the freebsd-hackers mailing list