今回は
ベンチマークテスト用の環境を作ってもう少し詳しく調べてみました。
特に Linux vs Windows でベンチマークテストを行って速度を比較しました。
それでいくつか分かったことがありますので、以下にその結果をまとめます。
【LinuxのOpenGLの問題】
いろいろ田中ゼミで検証した結果、
(1) Linuxで
nvidiaのGPU+メーカー製ドライバを使った場合、
ポリゴン数が多くなるとOpenGLのレンダリング速度が急激に低下する。
※他のGPUやドライバ環境については調査していない
(2)当初は
Ubuntuだけの問題と考えていたが、Ubuntu 以外のディストリビューションでも
速度低下が確認された。
※複数のドライババージョンで動作を確認
(4) 3D Desktop環境(
Compiz)の有無による影響を調べたが、有意な差異は見られなかった。
※ただし、検証時は
Compizは常時無効にして、3D Desktop環境による影響を
受けないように配慮した。
(5)
FreeBSDやWindowsではこういった速度低下の問題は発生しない。
ということが分かりました。
【計測方法】
上記の問題を検証するための実験を行いました。
問題を単純化するために専用のベンチマークテスト用プログラムを作りました。このプログラムではOpenGLの glut で用意されている球物体を使ってレンダリングの速度を検証しています。
球物体をポリゴン分割し、その
分割数に対応するフレームレートを計測します。
glutでは、ティーポットや球などの形状情報が予め用意されていますが、これらは全てポリゴンで構成されています。
球物体では以下のように球をポリゴンで分割して描画します。
glutSolidSphere( 半径, 経度分割数, 緯度分割数);
【計測に使用したソフトウェア】
今回の実験用に田中ゼミで開発した
ベンチーマークソフトウェアを公開しますので、追試をしたい方は
こちらのソフトウェアを使用してください。
※今回のソフトウェアではFPSの計算部分については
こちらのページを参考にさせていただいております。
<<ビルド方法>>
ダウンロードしたntlab-oglbench.tgz を展開して make でビルドしてください。
なお、必要なライブラリは各自でインストールしてください。
<<実行方法>>
実行は簡単です。実行時に引数で分割数を与えるだけです。
例) たとえば、分割数 1000 にしたければ、
./ogl-bench 1000
とします。
【計測結果】
計測の結果を図1に示します。図1のグラフの縦軸は「毎秒何フレーム描画できるのか」を示すフレームレート(FPS)となります。FPSの数値が大きいほど高速に描画していることを示しています。
横軸は球物体のポリゴンの分割数になります。経度・緯度方向それぞれに分割しますので、分割数の2乗でポリゴン数が増加します。
図1の結果からみるとポリゴンの分割数を増やしていくとLinux側の方がWindowsと比較して速度の低下割合が大きいことが分かります。
また、今回の計測環境では、Linux側は分割数が1000を超えると速度が遅くなりすぎて計測不能になりました。
図1.球物体の分割数による LinuxとWindowsのOpenGLの描画速度の比較
【計測結果からわかったこと】
実験の結果から、Linuxは他のOS(今回はWindwos)と比較して、ポリゴン数の増加に対して処理速度の低下が大きいことが分かります。
先の記事でお示ししたLinuxのレンダリング速度が遅いという問題の原因はポリゴン数にありました。
【計測の条件】
※ベンチーマークプログラムを動作させて速度を検証している様子
<ハードウェア>
ドスパラ Prime Note PC Galleria MR6
CPU: Intel Core i7 2720QM
GPU: nvidia GeForce 540M (2GB)
メモリ: 8GB
<OS>
Linux :Ubuntu Linux 11.10 64bit
Windows: Windows 7 Professional 64bit SP1
<ドライババージョン>
Linux: nvidia driver 290.10
Windows: nvidia driver 285.62(ノート用最新版)
<特に設定したこと>
Linux:
(1) デスクトップ環境を
LXDEに変更(余計な負荷を減らすため)
(2) 3D Desktop 環境
(Compiz)がOFFになっていることを確認
Windows:
(1) 垂直同期:強制オフ (これをしないと 60fps固定になる)
今回の記事が面白いと思った方は以下のボタンをクリックして下さい.