Date: Thu, 20 Dec 2007 10:04:48 -0800 From: Julian Elischer <julian@elischer.org> To: Jeff Roberson <jroberson@chesapeake.net> Cc: arch@freebsd.org Subject: Re: Linux compatible setaffinity. Message-ID: <476AAEC0.2070008@elischer.org> In-Reply-To: <20071219211025.T899@desktop> References: <20071219211025.T899@desktop>
next in thread | previous in thread | raw e-mail | index | archive | help
Jeff Roberson wrote: > I have implemented a linux compatible sched_setaffinity() call which is > somewhat crippled. This allows a userspace process to supply a bitmask > of processors which it will run on. I have copied the linux interface > such that it should be api compatible because I believe it is a sensible > interface and they beat us to it by 3 years. > > My implementation is crippled in that it supports binding by curthread > only and to a single cpu only. Neither of the schedulers presently > support binding to multiple cpus or binding a non-curthread thread. > This property is not inherited by forked threads and does not effect > other threads in the same process. These two limitations can gradually > be weakened without effecting the syscall api. > > The linux api is: > int sched_setaffinity(pid_t pid, unsigned int cpusetsize, cpu_set_t > *mask); > > The cpu_set_t is the same as a fdset for select. The cpusetsize > argument is used to determine the size of the array in mask. > > I'm mostly interested in feedback on how best to reduce the namespace > pollution and avoid pulling the sched.h file into the generated syscall > files (sysproto.h, etc). Anyone who feels this is a terrible interface > for such a thing should speak up now. > > I also feel that in the medium term we will have to deal with machines > with more cores than bits in their native word. Using these CPU_SET, > CPU_CLR macros is a fine way to deal with this issue. > > I also have a primitive 'taskset', although I don't like the name, it > allows you to run arbitrary programs bound to a single cpu. makes sense to me.. don't forget the man page! > > Thanks, > Jeff > > > ------------------------------------------------------------------------ > > _______________________________________________ > freebsd-arch@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-arch > To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?476AAEC0.2070008>