1

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

我遇到了一个有趣的问题。尽管我已经看到了性能的提升——正如预期的那样——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)     }
4

1 回答 1

1

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

有趣的是,您正在企业环境中运行 Windows XP,因为 Microsoft 已于2014 年 4 月 8 日停止支持 XP 。话虽这么说,与升级操作系统版本相比,您从更多 RAM 中获益更多,当然 Windows XP 有 4GB 限制,因此您无法在不升级操作系统的情况下添加更多 RAM。

于 2015-07-24T14:27:38.963 回答