我们有一个最近的性能替补标记,我正在努力理解。我们有一个大型脚本,在Redhat Linux机器上的性能比Windows 7笔记本电脑相当的Windows 7笔记本电脑,性能较慢。 Linux机器使用KVM虚拟化,并具有4个核心以及16GB的内存。脚本不是IO密集的,但循环有很少的循环。主要是我想知道是否有任何r编译选项,我可以用来优化或任何可能有助于使这更可比的内核编译器选项。任何指针都会受到赞赏。我会尝试获得另一台机器并在使用原始金属中测试它也有更好的比较。

这些是我在Linux机器上编译r的配置标志。我已经尝试了很多,这似乎在绿色的执行时间下切断了12秒,以获得更大的数据集。本质上我与这些选项从2.087到1.48秒。

./configure CFLAGS="-O3 -g -std=gnu99" CXXFLAGS="-O3 -g" FFLAGS="-O2 -g" LDFLAGS="-Bdirect,--hash-stype=both,-Wl,-O1" --enable-R-shlib --without-x --with-cairo --with-libpng --with-jpeglib
.

更新1

脚本尚未进行优化。另一个组实际上是在脚本上工作,我们已经提出了使用应用功能,但不确定这在时代的差异如何。

配置文件的顶部看起来像这样。大多数这些功能将稍后将使用应用功能进行优化,但是现在它是两个机器上的苹果标记苹果的台式。

"eval.with.vis"                    8.66    100.00      0.12     1.39
"source"                           8.66    100.00      0.00     0.00
"["                                5.38     62.12      0.16     1.85
"GenerateQCC"                      5.30     61.20      0.00     0.00
"[.data.frame"                     5.20     60.05      2.40    27.71
"ZoneCalculation"                  5.12     59.12      0.02     0.23
"cbind"                            3.22     37.18      0.34     3.93
"[["                               2.26     26.10      0.38     4.39
"[[.data.frame"                    1.88     21.71      0.82     9.47
.

我的第一个怀疑,我将很快测试并与我的调查结果更新是KVM Linux虚拟化是责备。此脚本非常内存密集,并且由于大量的阵列操作,并且r副本通过复制(当然必须是Malloc),这可能会导致问题。由于VM没有直接访问内存控制器,并且必须与其他VM共享它,这可能会导致问题很可能。我今天晚些时候将获得一个原料的机器,并将使用我的调查结果进行更新。

谢谢所有人的快速更新。

更新2

我们最初认为性能问题的原因是由VM超线穿线引起的,但是这一结果是不正确的,并且性能在裸金属机上相对相同。

我们稍后意识到Windows笔记本电脑使用32位版本的R来计算。这使我们尝试64位版本的R,结果比32位比32位相同相同的脚本。这导致了我对64位可能比32位版本的r?

慢的问题如何〜140%。

我们所看到的是32

Windows 32位执行时间48秒 Windows 64位执行时间2.33秒。

Linux 64位执行时间2.15秒。 Linux 32位执行时间<正在进行>(在RHEL 6.3 x86_64上构建了32位版本,但没有看到性能改进,我将重新加载32位版本的RHEL 6.3)

我发现了这个链接,但它只解释了在某个64位机器上击中的15-20%。

http://www.hep.by / gnu/r-patched/r-admin/r-admin_51.html

抱歉我不能在法律上发布脚本。

有帮助吗?

解决方案 3

问题已解决,并且它是由非优化的blas库引起的。

本文很有帮助。使用阿特拉斯是一个很好的帮助。

http://www.cybaea.net/博客/数据/更快 - r-tod-geter-blas.html

其他提示

看看写入r扩展手册。

从30,000英尺,你不能说别的 - 你需要分析信息。“一般共识”(我把这在引号中,因为你无法真正概括这些东西)是Linux倾向于在内存管理和文件访问方面做得更好,因此我的结果有点惊讶。

Buildion R为--enable-R-shlib可能会导致性能损失。这是在 r安装和管理中讨论,在附录b,第1节。单独可以解释10-20%的变异。其他来源可能来自“可比规范”的差异。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top