On Apr 13 12:29, Brian Inglis wrote: > On 2018-04-13 08:12, L A Walsh wrote: > > Achim Gratz wrote: > >> The problem here is that on Linux you don't need to do anything extra to > >> use any of the advertised logical processors from a single application, > >> while on Windows you need to first create a thread and set it's affinity to > >> a different group than where your process was started in, then assign each > >> new thread an affinity to one of the available groups. If you don't do > >> that, all threads will be restricted to the original group. > > Not exactly true. They are not *restricted* -- it's a *feature* of the > > Windows scheduler, in that future procs/threads inherit the cpu of the > > parent. Linux's scheduler is more advanced as well as being replaceable. > > MS > > doesn't want you to do that > >> there might need to be some option to restrict Cygwin to a single processor > >> group for some applications to work (correctly). > > There is. Start them all on a single cpu & set the cpu mask. Pretty much > > the same way you restrict procs on linux -- you can run them with a specific > > cpu mask, and most programs will keep running w/that mask. > > Unfortunately, AFAIK, I don't think POSIX specifies a way to set affinities, > > so I'm not sure how cygwin would do it. > > Glibc adds {pthread,sched}_...affinity... functions. > Linux uses namespaces, control groups (cgroups), cpusets, sysfs/kernfs:
We would only be able to support it partially. Windows doesn't allow to set thread affinity across CPU groups. There's no simple function to set process CPU group affinity, only a function to set process affinity within a single group. And it has a restriction in that all current threads have to run in the same CPU group. The API is pretty tricky. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat
signature.asc
Description: PGP signature