[FFmpeg-devel] [PATCH] Runtime detection for the number of processors/cores
François Revol
revol
Wed May 21 18:09:37 CEST 2008
> >> > This is the wrong way to go about it. The number of processors
> > > > in
> >> > the
> >> > machine is not interesting, the number of processors we're
> > > > running
> >> > on
> >> > is. On Linux, this information can be found from
> >> > sched_get_affinity().
> >> > Other systems have other methods.
> >>
> >> _SC_NPROCESSORS_ONLN Number of processors online
> >>
> >> Seems to mean the same to me, unlike:
> >
> > Unless of course sched_get_affinity() returns a subset mask for
> > NUMA
> > machines, then disregard.
>
> sched_get_affinity() returns the processors on which the process is
> allowed to run, which can be any subset of the processors currently
> online.
Right, processes can be bound to a subset of cpus.
> (On a normal desktop system, all processors are always online.)
In BeOS one can disable any cpu live at runtime though... :D
On big NUMA systems I believe CPUs can be hotplugged...
At least Multics could do that :D
>
> > It's POSIX only anyway so it has to be platform dependant...
>
> It's not POSIX, at least not anywhere that I can find it.
sysconf(_SC_NPROCESSORS_ONLN), or sysconf() at least, I meant.
sched_* is linux only.
> > Hmm doesn't pthread have a less linuxish call for that btw ?
>
> I couldn't find one.
>
> > Else one can still #ifdef __linux__ to use sched_get_affinity and
> > fall
> > back to sysconf.
>
> #ifdef __some_os_or_other__ is banned from FFmpeg.
That was intended for the foothread.c files, which are platform
specific anyway.
Of course you can also just check for sched_get_affinity in configure
if ifdef gives your purulent buttons.
Fran?ois.
More information about the ffmpeg-devel
mailing list