システム条件・プロセス数を変えてR benchmark実行時間を比較(RとMKL:Microsoft R Open)

2022-04-07

ベンチマークのイメージ画像。ベンチマークと書かれた黒板と男性2人の人形が虫眼鏡で拡大されている。

以前掲載していたブログは削除していますが、データだけ発掘されたので改めてこちらに掲載します。2020年12月時点のデータなので、ご注意ください。

目的

仕事でRとShiny-Serverを使った統計情報とグラフの作成をしています。現在はBMAX B2 Plus(Windows10)とVirtualBox(Ubuntu Desktop)でShiny-Serverを稼働させていますが、さすがに処理が遅い…。

そんな中システム更新で余ったPCが出たので、Shiny-Serverの移植を始めました。

その際、Microsoft R Openは計算に複数コアを使う(MKL)のでRの計算が早くなると言う記事を見かけたので、通常のR・Microsoft R Open(MRO)の比較と、合わせてシステム条件が変わるとどの程度オーバーヘッドが発生するかをベンチマークで確認。

また、複数端末からの同時アクセスも考え、プロセス数が増えた場合の影響も一緒に確認しました。

RとMicrosoft R Open

R

数値計算だけでなく、データ加工や描画など統計解析に必要なすべてがそろった統計分析ソフトです。

開発環境(R-Studio)も整っていてネット上の情報も豊富なため、Rが使えると一通りの解析で困ることはありません。ggplot2を使ってのグラフ描画も便利で楽なので、グラフ作成ソフトとしても重宝します。

Microsoft R Open

ものすごく単純に言うと、計算を複数コアで実行することで計算速度を早くしたRです。

Microsoft R OpenによるRの高速化

早くなるのはあくまで「計算」だけなので、描画やストレージアクセスなどは高速化されないようです。

上記リンクからダウンロードするだけでインストールできるため、簡単に試すことができます。全てのライブラリが対応できているかは不明です。

条件

RとMROの比較

  • ハードウェア:HP Compaq 8300 Elite SF
    CPU:Core i5-3570 4コア4スレッド(Passmark Average:4907, Single Thread Rating:2049)
    メモリ:4GB
  • ベンチマークプログラム:R-benchmark-25.R
  • システム条件
    1.Windows10(RGUI)
    2.Windows10 + VirtualBox(Ubuntu 18.04 Desktop)
    3.Ubuntu 18.04 Desktop
  • R Version
    1.R 4.0.3
    2.MRO 4.0.2

同時プロセス数の影響

単純にバッチファイルとシェルスクリプトでR-benchmark-25.Rを5プロセスまで順番に同時実行します。

例:3プロセス同時、Windows10の場合

start /b C:\Program Files\Microsoft\R Open\R-4.0.2\bin\Rscript.exe R-benchmark-25.R > result1.txt
start /b C:\Program Files\Microsoft\R Open\R-4.0.2\bin\Rscript.exe R-benchmark-25.R > result2.txt
start /b C:\Program Files\Microsoft\R Open\R-4.0.2\bin\Rscript.exe R-benchmark-25.R > result3.txt

RとMROの比較

条件システムR versionTotal time for all 15 tests
1-1Windows10R 4.0.329.89
1-2Windows10MRO 4.0.25.05
2-1Windows10+VirtualBoxR 4.0.3131.50
2-2Windows10+VirtualBoxMRO 4.0.213.72
3-1Ubuntu 18.04 DesktopR 4.0.329.87
3-2Ubuntu 18.04 DesktopMRO 4.0.25.39

すべての条件で、MROは通常のRよりも実行時間は短縮。Windows10 + VirtualBoxは実行時間が約4倍に延長しています。

同時プロセス数の影響

プロセス数の増加はProc1から5で表示、数字はR-benchmark-25.Rの実行時間(Total time for all 15 tests)です。

条件システムR verisonProc1Proc2Proc3Proc4Proc5
1-1Windows10R 4.0.329.8930.9436.0042.2152.53
1-2Windows10MRO 4.0.25.0548.77102.52249.41255.59
2-1Windows10+VirtualBoxR 4.0.3131.50133.12136.41135.07169.38
2-2Windows10+VirtualBoxMRO 4.0.213.7220.4032.1041.5962.61
3-1Ubuntu 18.04 DesktopR 4.0.329.8731.1635.5042.6150.40
3-2Ubuntu 18.04 DesktopMRO 4.0.25.399.1116.0538.2352.70
上記の表から作成した折れ線グラフ。
グラフ

R versionが違っても同時プロセス数が増えると実行時間が延長しているのは同様、おおむねプロセス数の増加に応じた延長に見えます。

ただ、条件1-2(Windows10, MRO 4.0.2)のプロセス数と実行時間の延長は異常。

Windows10 + VirtualBoxでは、もともとの実行時間は長いがプロセス数の影響は他と同様です。

考察と対応

Windows10 + VirtualBoxがここまで実行時間が延長しているとは思っていなかった。VirtualBoxの条件が2コア、2GBメモリのため仮想マシンの条件を変えればもっとマシになる可能性はあります。

MROの実行時間の速さはやっぱり魅力。

ただ、なぜかWindows10で複数同時にベンチマークを開始すると処理時間がものすごく延長しています。Ubuntuで実行している場合は見られない現象なのでOSの問題?

MKLの使用コア数も変えていないため、コア数の影響は関係ないはず。

ひとまず、Shiny-ServerはOS:Ubuntu 18.04 Desktopで移植することにします。Ubuntuの場合、MROの異常延長は無かったものの、不安は残したくないのでR versionはR 4.0.3に決定。

追記

Windows11にするとMROの異常延長は無くなりました。

分析環境Archive

Posted by ううら