[fpc-pascal] Re: GetAffinity\SetAffinity
Mark Morgan Lloyd
markMLl.fpc-pascal at telemetry.co.uk
Wed Nov 20 10:43:44 CET 2013
Brian wrote:
> After a bit of research , the issue of setting the cpu affinity has been
> solved , which may be of use to other folks.
>
> A bit of info here concerning the data type cpu_set_t , which as far as I
> can determine (no help from the mess that is the c library source) is
> essentially an array of DWORD. For my purposes running on an x86 CPU ,
> allowance for 32 cores is sufficient , using cpu_set_1 as one unsigned long
> word.
>
> http://www.cyberciti.biz/tips/setting-processor-affinity-certain-task-or-process.html
>
> Here are some code fragments which may be of help.
>
>
> The function do_SysCall(0) basically doesn't work for setting the CPU core.
>
> Although the Linux documentation claims sched_setaffinity() amd
> sched_getaffinity() work for threads , it only works for processes.
>
> pthread_getaffinity_np() and pthread_setaffinity_np() work properly for
> threads.
Thanks for that, interesting. I'd have expected affinity to have been
oriented towards processes rather than threads, since I think it largely
originated when people started working on NUMA systems- possibly at SGI.
There's also interrupt affinity, which becomes significant when (the bus
associated with) an I/O device is "nearer" some CPUs than others. I've
had hardware of this type in the past, but in those days kernel support
for these calls was patchy.
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
More information about the fpc-pascal
mailing list