[Rd] R process (and forked children via system2) are limited to 1 core?
Nathaniel Smith
njs at pobox.com
Wed Aug 6 23:20:34 CEST 2014
On Wed, Aug 6, 2014 at 6:01 AM, Tom Kraljevic <tomk at 0xdata.com> wrote:
>
> Hi,
>
>
> (Using R 3.1.1 on Ubuntu 12.04.4 LTS)
>
>
> What is the recommended way for R to fork a (non-R) process that is not CPU limited?
> Currently I am using R's system2() call, and this is inheriting the environment of the R process.
>
>
> I notice that (at least on Linux) when I am poking around /proc that the R process itself is setting up cpu limitations for itself (max 1 core).
>
>
> Using strace, I see the following:
>
> (strace output)
> out.20612:sched_setaffinity(0, 128, {100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}) = 0
>
>
> And proc shows:
>
> (cat /proc/nnn/status)
> Cpus_allowed: 00000001
> Cpus_allowed_list: 0
>
>
> See that the Cpus_allowed bitmask is a single core. Normally it's fff...f.
When I run R I see:
Cpus_allowed: ff
Cpus_allowed_list: 0-7
It's possible (likely?) that the culprit here isn't R but rather some
other library that R is loading. Are you using OpenBLAS? By default
OpenBLAS will set an obnoxious cpu mask, unless you override this
using some obscure build system settings. (There might be a runtime
option for disabling it too, I don't remember. Note also that this is
just one of several obnoxious things OpenBLAS does unless you override
a bunch of obscure build system defaults -- building OpenBLAS
correctly is highly non-trivial.)
-n
--
Nathaniel J. Smith
Postdoctoral researcher - Informatics - University of Edinburgh
http://vorpus.org
More information about the R-devel
mailing list