Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 09 Feb 2007 18:45:39 -0800
From:      Julian Elischer <jelischer@ironport.com>
To:        Peter Holmes <peter_holmes2003@yahoo.com>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: pin/bind a pthread to a processor? (take 2)
Message-ID:  <45CD31D3.8040106@ironport.com>
In-Reply-To: <368841.53689.qm@web32903.mail.mud.yahoo.com>
References:  <368841.53689.qm@web32903.mail.mud.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Peter Holmes wrote:
> This is something I am interested in doing as well. I had corresponded with 
> 
> Julian Eischen & Daniel Elischer  about this. 

Dan Eischen and Julian Elischer :-)

> 
> 
> 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.

"KSE"s are gone in 7

A system scope thread is just a thread that doesn't do the multiplexing..
it could be bound to a cpu if we had the syscall to do that,, and since it doesn't
multiplex on a kernel thread, that user thread would remain bound to that cpu.


> 
> 
> 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
> 

would work if we made the syscall to do so.

>  
> 
>  
> 
> 
> 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@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@freebsd.org mailing list  > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers  > To unsubscribe, send any mail to "freebsd-hackers-   > unsubscribe@freebsd.org"    --    John.Giacomoni@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.
> _______________________________________________
> freebsd-hackers@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"



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