概要
今回はFSXでのチューニングのための検証について記載する。
※本記事の初版は2014年3月25日となる。
※2017年6月3日 Prepar3D v4.0について追記
FSX及びPrepar3Dの中身の検証を本記事では行っているが、実際のチューニングは「FSX/P3D環境のチューニング その3」を参照すること。
本記事は古く、FSX時代の検証結果の内容のためCPUグラフの見方程度とどめる方が良い。
特にPrepar3D v4.0以降ではマルチスレッド化が大きく改善されている。
内容は現在の一般的なハードウェア・ソフトウェア環境では適切ではないため、考え方の観点で読んでほしい。
環境
CPU: Corei7-3770k
RAM: 8GB
GPU: Geforce GTX 660 Ti *ASUS GTX660 TI-DC2T-2GD5
OS: Windows 8.1 PRO with Media Center (64bit版)
機体アドオン: B737 NGX (PMDG)
主要アドオン:
FSUIPC(Peter Dowson)
EZdok Camera(EZDOK Software)
REX4 TextureDirect (REX GAME STUDIOS)
REX Essential Plus Overdrive 3.7 (REX GAME STUDIOS)
FS2Crew: Emergency NGX!(FS2Crew)
主要シーナリー:
Ground Environment X Europe (Flight One Software)
Ultimate Terrain X Europe (Flight One Software)
Gatwick Xtreme V3 (UK2000)
Heathrow Xtreme V3 (UK2000)
音声は差し替えてあるが、導入しているアドオン等含めて環境は同一の動画はこちら。
FSX-設定概要
PMDGの推奨設定+REX HDの推奨設定をスタート地点としてカスタマイズを行った。
それでは最初の画面から。
アンチエイリアシングを切り、トライリニア設定としている。
またDirectX10を無効にし、必要のないチェックは外してある。
ターゲット・フレーム・レートは「大きい街や大きい空港アドオン付近では制限なし」。
それ以外は「30FPS」が良いと書かれていることがある。
しかしながら、筆者の場合は特に重いロンドンのヒースロー空港、ガトウィック空港の両サードパーティアドオンを入れていたり、空港付近にはデフォルトのビル群も多いので、Unlimited(制限なし)にした。
FPSの上下は激しいが、上に不安定でも下に不安定にはならなかった。
30FPSの設定の場合は逆に平均ラインが大幅に落ちてしまったため、Unlimitedとしている。
機体の影は必要ないと考え、チェックを外してある。
ただしランディングライトの滑走路への投射はFPSへの影響があるとは考えるが、夜間着陸の見栄えに大きく影響するためオンにしてある。
Flight1のフォーラムの値を参考にして設定を行った。
航空機関連以外はゼロとした。
特に航空機と車はFPSキラーと呼ばれているが、車は無しにしてもシーナーリーのアニメーションは表示される。
そのためサートパーティのアドオン空港横の道路等を走行する車両は着陸時等に問題なく表示される。
FSX-シーナリーライブラリ
必要のない地域オフ設定としてある。
ただし将来オンにすることもあるので削除はしていない。
またテクノブレイン社の羽田空港Xが導入されている。
CPUの設定
いくつかのチューニング説明のサイトを見ると、「ハイパースレッディングを切れ」と書かれている。
BIOSレベルから切るのか指定コア数を4なのか明確に書いていない場合もあるが、
FSX専用機ではないのでBIOSからはオフにしないこととしている。
その場合は4コア設定下記の通りとなる。
[JOBSCHEDULER]
AffinityMask=15
また”見かけ”の8コアとする場合は、下記のようになる。
[JOBSCHEDULER]
AffinityMask=255
CPUコア数の検証
FSXが2007年にリリースされており、Core2Quadの頃の迷信がそのまま現在利用している「Ivy Bridge」のCPUにも当てはまるのか大いに疑問を持った。
ハイパースレッディングという名前は同じでもアーキテクチャが異なり、実質「名前だけ同じハイパースレッディング」だからだ。
そのため比較を行った。
どちらもPMDG B737 NGXでAEROSOFTのヒースロー空港手前10マイルぐらいから、計測したグラフになる。
結果
FSXはメインの処理(とプラスアルファ?)は、完全にシングルスレッド依存だ。
そのためコア数も大事ではあるのだが、まずは1コアあたりの性能がものをいう。
またSimConnectのアドオンをリリースしてみてわかったことだが、dll.xmlに書かれているアドオンは、恐らくはその1コアの処理の中に押し込められている。
不必要なアドオンはDLL.XMLの中から削除するかdisableにするべきだ。
その上で上記のグラフのようにCPUを90%以上使い込む。
それから分散された処理が、他スレッドに分散される。
※CPUコアがあれば分散されるし、コアがなければ同一コア上でスレッドが実行される。
現在のCore iテクノロジーのCPUはターボブーストに対応しており、3770kの場合は3.5GHzが標準だが、他コアの負荷次第では実際は3.9GHzまで稼働可能だ。
FSXは仕様上他コアが空きやすいので3.9GHzまではいかないにしても、Corei7の機能は生かせる。そのためシングルコア性能は一番重要だ。
その上で分散された処理がコア数だ。これが頻繁に90%以上の負荷を示していれば、引っかかったような動きをするだろう。上記の4コア設定がそれにあたる。
8コア設定の場合は、頭打ちになりにくい。
物理的には4コアだが整数演算と浮動小数点等、別モジュールに命令が流れ、平行演算できるものがあるからだ。
この結果を示すように、この環境(PMDG B737NGX+ヒートロー着陸)で飛行した場合は8コア設定の方がFPSの平均値がが高くなった。
余談
メインのスレッド以外が負荷が高かったのは、概ね下記の状態の時だ。
- アプローチする手前、1000フィートの高さから滑走路にタッチダウンする寸前まで着陸後はむしろFPSは高くなるし、負荷も低い。
- 旋回中
新しい景色が見え、物体が初めて表示された時だ。 - PMDG等メインのスレッドの負荷を大きくかけるもので負荷の高いシーナリーの中を飛ぶ場合。
他プロセスに持っていけるアドオンはあるのか?
ところでDLL.XMLは、メインのスレッドと同一のスレッドの”可能性”があると書いたが、EXE.xml内に書かれたアドオンはどうか?
exeファイルとして実行されるのだから、当然別プロセスとなって実行される。
基本的にはFSXのメインスレッド以外の空いているスレッドにOSが割り当てる。
参考資料
今回は下記の内容を参照した。Flight1のGEXが重い原因ではないかと考え、
同フォーラムを見ていて見つけた資料だが、それ以外の検証にも役に立った。
ただし、そのまま使うのではなく自分での検証と比較は必要となる。
また、同一ではないアーキテクチャのCPUを利用している場合は大きく異なるかもしれない
http://www.simforums.com/forums/setting-up-fsx-and-how-to-tune-it_topic29041.html
ピンバック: FSX/P3D環境のチューニング その3 | Simulator Laboratory "SEALS"