R 中的 doParallel - 速度提高但 CPU 并不总是利用到 90%-100%

doParallel in R - Improvement in speed but CPU is not always utilised to 90%-100%

我正在尝试 运行 对它们进行许多线性回归和诊断并加快速度我正在使用 doParallel R 编程语言中的包。

我遇到了一个有趣的问题。虽然我已经看到性能改进 - 正如预期的那样 - CPU 的用法并不一致

例如,如果我执行 运行 我的代码,CPU 所有内核的利用率可能是 30-40%

如果我再次 运行 我的代码,CPU 利用率可能会上升到 90% 而无需我同时更改任何内容。

在这两种情况下,我都不会运行同时执行任何其他操作。

是否可以解释为什么在我不进行任何更改的情况下一次使用 30% 而另一次使用 90% 的核心?

我 运行宁 Windows XP,4GB 或 RAM,并且有一个 Inter(R) Xeon(R) CPU X5650 @ 3.67GHz。

我的代码类似于:

results <- foreach(i=seq(1:regressions), .combine='rbind', .export=c('lmResults','lmCSig', 'lmCVar')) %dopar%
{model <- lm(as.formula(as.character(dat[i])), data=df) lmResults(model)     }

您的系统在 R 本身或其他占用内存资源的程序中已变得内存受限。发生这种情况时,Windows 将使用硬盘作为虚拟内存。这具有允许更多操作的优点,但缺点是速度较慢,慢得多。我努力寻找一种方法将 R 的内存锁定在物理 RAM 而不是虚拟 RAM 中,但我意识到这无济于事,因为当您启动并行任务时,R 将启动新进程,因此即使您可以将主 R 实例的内存锁定到物理内存并让你的其他 运行 程序使用虚拟内存这对你没有帮助,因为新进程是放在虚拟内存中的进程。

有趣的是,您在企业环境中使用的是 运行 Windows XP,因为 Microsoft 已从 April 8, 2014 开始停止支持 XP。话虽这么说,与升级 OS 版本相比,您从更多 RAM 中获益更多,当然 Windows XP 有 4GB 限制,因此您不能在不升级的情况下添加更多 RAM OS.