Linux 上的 R 不支持多线程

Linux 上的 R 不支持多线程

我在 Ubuntu 15.10 操作系统上使用 R 进行统计分析。我的 R 脚本需要很长时间才能完成。大约 2-3 小时。

同时,我检查了我的 CPU 负载。我刚刚注意到,除了一个 CPU 之外,其他所有 CPU 几乎都处于空闲状态。在下图中,您可以看到只有 CPU 8 处于 100% 状态。

在此处输入图片描述

为什么 Linux 内核不平衡所有 CPU 上的工作负载?

答案1

Linux 确实在所有 CPU 之间平衡了工作负载。但是,为了做到这一点,工作负载必须是多线程的。不可能将单线程工作负载分布在多个 CPU 上,事实上,将单线程任务放在单个 CPU 上是最有效的。

这里的问题是,所讨论的 R 脚本不是为多线程编写的。

答案2

如果您的进程屈服于 mapReduce,您可以将脚本分成几部分,并在不同的 CPU 上运行每个部分。

答案3

不是kernel谁决定如何使用CPU。如果您的脚本设计为多线程,那么只有它将使用其他线程。

相关内容