快適環境考察 のバックアップソース(No.17)
*快適環境を考察する [#y4a212c4]
皆様の協力で、少しだけですが傾向が把握できましたのでそのお知らせと、更なる疑問について考察していきたいと思います。
wikiですから誰でも自由に編集していただいて結構です。

#contents
*ガンダムオンラインのグラフィック仕様 [#s0f4e0a0]
-DirectX 9.0c API使用
-フレームレートは垂直同期の使用有無にかかわらず60FPSが上限
--ただし出撃前のリアルタイムレンダムービーは24FPSが上限
//アンチエイリアシングはクライアントのオプションに設定項目があるので、コメントアウトしました。
//-アンチエイリアスはゲーム内からは設定できないが、ドライバから強制することができる
*CPUとGPU(グラフィックボード)の関係 [#n768c71a]
ガンダムオンラインのクライアントはグラフィックボードよりもCPUの性能を重点的に要求します。
フルHD(1920x1080)、中設定でのプレイに必要なグラフィックボードはGTX660/HD7770程度のものがあれば十分で、そこからの快適さはCPUの性能に大きく依存します。
 
2013/1/6現在のクライアントではマルチコアへの最適化は行われているようですが、大きく負荷のかかるスレッドは2つしか存在しません。
これらは上記以上のグラフィックボードを搭載したPCでゲーム中の高負荷な場面でタスクマネージャーを使ってCPUの使用率を監視してみると、
例えば4コア4スレッドのCPUであれば最大50%程度しかCPUが使用されていないことからも分かります。つまりコアが沢山あっても、そのうちの2コア程度までしかゲームの処理に使われないということです。
また同じようにGPU-ZなどのソフトでGPUの使用率を監視してみると、上記以上のグラフィックボードであれば恐らく使用率100%になることはほとんどないでしょう。
これはCPUの処理速度がボトルネックとなりGPUの足を引っ張っているか、クライアントのフレームレートが上限(60FPS)に達しているためです。
 
良いグラフィックボードを使っているのにフレームレートが伸びない・・・!という方はCPUを買い替えると改善される可能性が高いです。
CPUを買い替える場合、4コア程度でコアクロックと1クロックあたりの性能が高いCPUを選ぶとよいでしょう。
Intel Core i5やi7の3GHz以上のものがおすすめですが、どのマシンでも前述のCPUが使えるとは限りません。マザーボードの型番やチップセットをよく確認して対応しているCPUを購入してください。
また自分のマシンのCPUがボトルネックになっていることが分かっている場合、CPUをオーバークロックしてみるのも手かもしれません。(ただし自己責任で。)
 
CPUもGPUも高性能なものを使用しているのに、[[快適環境調査]]で報告されている例よりフレームレートが極端に低くなるようであれば、[[メモリ>#z51d668a]]やドライバの不具合を疑ってみましょう。
*モニターと解像度について [#m4c7a790]
昨今では液晶モニターが、横長のワイド画面でインチも大きい(解像度が高い)ものが安く手に入るようになってきました。
報告して頂いた解像度は1920x1080が一番多かったことからも、もう一般的と言って差し支えないのが分かるかと思います。

さて、肝心の解像度とゲームの関係ですが、調査報告にも何件かあったように解像度縮小で動作が改善する人、逆に解像度を変更しても効果が無い人がいらっしゃったと思います。
この現象は、解像度を大きくしてもグラボが高性能で余裕があって、快適さを保ったまま吸収できる仕事量だった。ということになります。
グラボの性能がギリギリもしくは足りない人は、解像度を小さくすることで多少改善されたことからも、裏づけがとれていると思います。

モニターがワイド化大型化していますので、モニターに合わせてグラボも高性能にしましょう。

*メモリ容量(大きさ)について [#z51d668a]
ゲームが使用するメモリは最大1.2GB程度になります。
OSにとられる分を合わせても最低2GBあれば足りることになりますが、セキュリティソフトやお気に入りアプリを常駐さている人は、スワップ対策でもう少し多めに搭載しておくと良いでしょう。
※メモリ容量を超えたからといって現在使用中のデータが消滅してしまうと困るので、一時的なデータ預かり場所として動作の遅いHDDでデータを扱うことをスワップが発生したといいます。メモリはHDDの1000倍以上速いので、スワップ発生時は非常に動作が遅く感じられます。SSDでもHDDほどではないですが同様です。
&br;

特にメーカー製パソコンでは初期状態ですでに常駐アプリが大量に設定されていますので、もう少し多目の4GB(32bitOSでは最大メモリが3GB)程度必要かと思われます。
ただし、パソコンによっては常駐アプリが少なくても4GBでも足りない事が起こるそうです(筆者のPC等)。可能であれば8GB塔載することをオススメします。

メモリクロックに関してはページ下方に考察があります。興味のある方は読んでみてください。
*ストレージについて [#o9dbadf6]
高性能なCPUを使用しているのにロードが遅いという人はハードディスクへのアクセスが遅いのかもしれません。
その場合、高回転高密度なHDDに買い替えたり、SSDに乗り換えたりすると改善する場合があります。
特にSSDの効果は抜群で、HDDが苦手とするランダムアクセスも数十倍~数百倍程度高速に行えるため、ロード時間の短縮に有効です。
また、HDDの場合はデフラグが非常に有効です。

//**Ramdiskで高速化(上級者向け)
//最近の64bitOSの普及とメモリ価格の下落で16GBや32GBといった大容量のメモリ領域を構成することも少なくなくなりました。
//正直なところ、ゲームの裏でヘビーな作業をするとかでなければ6GBもあれば十分ですので、使用していない空き領域をRamdiskとして構築しゲームのクライアントをそこに移動することで更なるロードの高速化を期待できます。
//Ramdiskの性能はメモリの性能にもよりますが、SSDの大体10~20倍程度の性能があります。
//
//ただし、ロードの速さ=ストレージの速さという訳ではなく、CPUの性能やメモリの性能なども影響してきます。
//通常SSD程度の読み込み速度があればストレージ性能としては十分であり、CPUの性能やメモリの性能などがロード時間のボトルネックとなる場合が多いためSSD→Ramdiskに乗り換えても短縮されるロード時間は0~3秒程度だと思ってください。
//また物理メモリとして用いられるSDRAMの揮発性から、電源切断時にRamdiskの中身がすべて消えるという欠点もあります。
*電源オプションのトラブル [#z2be3f2e]
//グラボをnVIDIA GTX650 に新しく変更したところ、どういうわけか古いグラボよりFPSが下がってしまったという報告がありました。
//また、nVIDIA系グラボで思ったより成績が伸びず困っている方も一部いらっしゃるようです。&br;&br;
//
//この理由はどうやら、省電力モードがうまく機能せず、高負荷時も省電力モードのままで能力を最大限発揮できないのが原因のようです。
//悪いのはOS側かドライバ側かゲーム側かは定かではありませんが、この場合は「高パフォーマンス」に変更することで解決できます。&br;&br;

Windows Vistaや7を使用している方でそれなりのスペックのPCなのに極端にゲームが重いという方は電源オプションの設定をチェックしましょう。
 
-コントロールパネル→ハードウェアとサウンド→電源オプション

電源プランが「省電力」になっていたら、「高パフォーマンス」にチェックを入れましょう。
 

電源プラン「省電力」ではCPUやGPUに負荷を掛けても、省電力のためにクロックを最大まで引き上げずに低い状態のままで動作しようとします。

ゲームには無縁の設定なので、負荷に応じてクロックを変化させる「バランス」もしくは常に最高クロックで動作させる「高パフォーマンス」に設定しましょう。

XPではこの事例は発生していない模様です。

※高パフォーマンスにし続けると、元々動作クロックを上下させる機能のあるモデルの場合、寿命低下やオーバーヒートの可能性があるため、設定変更はあくまで自己責任で。
ガンオンプレイ時以外は高パフォーマンス以外の設定にするのがお勧めです。

*設定の変更だけで、大幅に改善した例 [#e26dc1a0]
PCスペックは十分なはずなのに予想以上にFPSが低い場合は、これらの項目を見直すことで大幅に改善する可能性があります。

-Window7・VISTA のコンパネ>電源オプションを、省電力から高パフォーマンスに設定変更(前項)
-nVIDIAに付属しているTurbo Boost がDisableなら、Enableに設定変更(メーカー製PCでは無効が前提設計の可能性があり、有効だと壊れるかも)
*CPUとメインメモリと快適さ [#q02abbd0]
**予備知識 [#b17d8472]
#region(予備知識)
パソコンに詳しい人でなければ気にならないであろう、マイナーな話題ですw&br;&br;

何が気になるかというと、メモリとCPUで受け渡しができる最大のスピード、最大転送速度の差がそのまま性能の差ではないのか?という噂です。
主に動画のエンコードなんかで話題になりやすく、ゲームでこの部分が話題になるのはレアケースとお考え下さい。&br;&br;

まずはメモリについてですが、最大転送速度が必ず表記されています。
DDR2-800 て、仕事を実際には2分割させてスピードアップする技術をデュアルチャネル(トリプル、クアッドもあります)で、転送速度が2倍になります。
DDR2-800ならビットからバイトに8倍して6.4G、さらにデュアルチャネルで2倍ですから12.8GB/s、PC3-10600なら2倍で21.2GB/sでCPUとのデータのやり取りが可能になります。&br;

ただし、メモリばっかりが高速でもCPUがそのスピードで受け取れないと、メモリはスピードを持て余すことになります。&br;&br;

CPUが受け取れるるデータは6.4GB/sなので、メモリがPC2-6400の6.4GB/sであればシングルチャネルでちょうどいっぱいいっぱい。デュアルチャネルでは完全にやりすぎです。これがデュアルチャネルの効果が疑われる主な原因で、あってもなくても変わんねーパターンです。
FSB1333の場合は、CPU側が10.6GB/sですのでDDR2-533のメモリをシングルチャネル4.2GB/sでは足りず、デュアルでもまだ8.4GB/sですから、もっと速いメモリを搭載しないと上限にならないことがわかります。こちらはメモリをいいもの積んだら少しベンチのスコアが上がるパターンです。&br;&br;

次にiシリーズに目を向けてみましょう。iシリーズからFSB接続では帯域(通り道)が不足するケースが顕著になったため、CPUとメモリの接続方法を変えていて、%%QPIやDMIという方式になってます。%%(QPIやDMIはCPUとチップセット間の接続でメモリ速度とは関係ありません。)QPIのQはクイック=近道、DMIのDはダイレクト=直接の認識でよいかと。&br;&br;

FSBではグラボやHDDが共有、QPIでグラボと共有、DMIで共有なしとなり、より速いCPUの受け取り速度を実現しました。&br;&br;

そんなわけでiシリーズでは%%FSBではなくDMIという単位が、最大メモリ帯域幅(CPUが受け取れる最大スピード)として使われています。%%メモリーコントローラがCPU側に内蔵されバス速度については気にする必要がなくなりました。&br;&br;

ここまでの文章を誰かと会話したとしたら、隣で聞いていた人が「それ日本語?」と突っ込んでくるような分かりづらさだと思いますので、表にしてみます。&br;&br;

|主なCPU| FSB |CPUの対最大メモリ速度&br;最大メモリ帯域幅|帯域をメモリで満たす場合|h
|型番| 速度 |FSBはbyte変換&br;%%DMI(GB/s)%%|お腹一杯になるパターン|h
|E4300| 800MHz|6.4|DDR2-800|
|E8400|1333MHz|10.6|DDR2-533のデュアル|
|QX9770|1600MHz|12.8|DDR3-1600もしくはDDR2-800x2|

|主なCPU|Core iシリーズ以降のメモリコントローラの標準速度|帯域をメモリで満たす場合|h
|型番|メモリ帯域|お腹一杯になるパターン|h
|G530|17|DDR3-1066のデュアル|
|G840|21|DDR3-1333のデュアル|
|i5-2500K|21|DDR3-1333のデュアル|
|i7-3770K|25|DDR3-1600のデュアル|
|i7-3930K|51.2|DDR3-1333のクアッド|
※実際には、CPUの最大メモリ帯域よりワンランク上の帯域のメモリを使用すると良いそうです。何でだったかは、どっかで読んだんだけど忘れましたwとりあえずオーバーすればフルパワーと覚えておいて下さい。
 Corei以降はメモリ側をオーバークロックすればそれなりの効果は得ることができます。
#endregion

**ここからが本題 [#u2befb29]
#region(ここからが本題)
前の文章がちょー長いので心折れた方は、ここから読んでください。&br;&br;
大雑把には「CPUによってメモリとのやり取り速度の上限」が比較対象と思われますので、それぞれ上の表から見ていくと&br;&br;
|CPU|GB/s|最大速度になるメモリ|グラボ|平均FPS|最低FPS|h
|G530|17|DDR3-1066のデュアル|HD5770|33|18|
|i5-2500K|21|DDR3-1333のデュアル|HD5770|50|40|
|i7-3930K|51.2|DDR3-1333のクアッド|GTX660Ti|55|45|
&br;&br;
それぞれ17,21,51となります。
もしこの最大メモリ帯域幅(最大転送速度)が、ゲームに大きく影響を及ぼすとするならば
17と21は、比較的近いの数値なので似たような結果になり、
21と51では、2倍以上の差があるのでガツンと効いてもいいはずです。&br;&br;

ところが実際の結果を見るとそうはなっていません。&br;&br;
メモリをケチって速度が遅いものをシングルで搭載っていう可能性もありますが・・・

あまり細かく分類せず、単純に''CPUの総合的な能力の差''と見るのが良いように思います。&br;&br;
#endregion

**最大メモリ帯域幅に効果が?? [#y7d9af5f]
#region(最大メモリ帯域幅に効果が??)
報告コメントで(一部省略)
>>i5-2500K GTX660 CPUクロックを4.3Gでメモリクロックを1333Mhzと2133Mhzで設定高にて試しました
1333-標準時55 混戦時30
2133-標準時59 混戦時40
なおグラボ変更に関しては設定高の時以外大した変化は見受けられませんでした、一定のGPU性能が
実は上の考察は、CPUの持つスピードをメモリが足かせとなることなく全開放できている場合について考察しています。

これに対して今回のコメントは、メモリが遅いとどれだけ足かせとなるかというテストで、視点が異なっています。
もし無理やり合わせるとすると、2133が17.0G 1333が10.6Gで、ちょうど例に挙げたG530の17.0Gの例とぴったり一致しますので、G530と似た標準時33 混戦時18に近い値になるはずですが、やはりそうはなりませんでした。&br;&br;

今回ご報告頂いたテストでは非常に重要な結果が含まれています。&br;&br;

''CPU最大メモリ帯域幅の上限に達していないのなら、メモリをより上位のクロックに交換/OCすれば、いくらかでも改善する可能性が高い''

というこです。コメントのとおりですね。
帯域が余っているのならぜひ、試してみたいものです。&br;&br;
#endregion

//rem CPUのコア割り当てに効果が??
* CPUのコア割り当てに効果が?? [#a76904b2]
#region(物理コアと論理コア(HTとSMT))
Windows10にゲームモードが搭載されてから大分経ちました。
Intel iシリーズでは物理コアを積極的に使用しているデータが上がっていますが、AMD Ryzenシリーズでは、論理コアであるSMTにメインプロセスが割り当てられているデータが上がっています。
5chから上がってきた情報にガンオンの直接起動が有りましたので、パラメータを追記しガンオンで利用するCPU コアを指定できる様追記を行いました。
各自の環境によりドライブレターやフォルダ名が変更になりますが、各自の環境に合わせ修正を入れ利用してみて下さい。
intel(4C8T)環境用サンプル
まずはガンオン起動のショートカットを作成します。
リンク先と作業フォルダを設定し、詳細設定から管理者として実行にチェックを付けます。
アイコンは自分で判り易い好きなものを指定してください。&br;
リンク先へ設定する文字列
C:\Windows\System32\cmd.exe /c start "" /high /affinity 55 /d "C:\BNO\GundamOnline\" "C:\BNO\GundamOnline\GundamOnline.exe" "./data/"
リンク先へ設定する文字列
Ryzen(8C16T)環境用サンプル
C:\Windows\System32\cmd.exe /c start "" /high /affinity 5555 /d "C:\BNO\GundamOnline\" "C:\BNO\GundamOnline\GundamOnline.exe" "./data/"&br;
各部の説明
・/high
 処理の優先度を指定していますサンプルでは後順位のhighになっています。
 優先度には以下の6種類があります。
 ・リアルタイム(/realtime)
 ・高(/high)
 ・通常以上(/abovenormal)
 ・通常(/normal)
 ・通常以下(/belownormal)
 ・低(/low)
 優先度は「リアルタイム」が最も高く、「低」が低くなります。
 リアルタイムは処理の優先度が最優先になりますので、コア数の少ないCPUの場合は、どの処理よりも優先されてしまい
 キー入力やマウス入力、画面出力よりも優先されてしまう可能性があり入力遅延等の不具合になる可能性があります。&br;
・/affinity
 コマンドに数値パラメータを渡す事でどのコアを使用するかを指定します。
 4bitづつで指定しますが、受け渡しは16進数になります。
 0番コアのみを指定する場合は「/affinity 1」になり、bitで表現すると「0001」となりますので16進で「1」になります。
 受付する数値は「1以上」になります。
 4コアであれば4bitで表現できます。8コアなら8bit、12コアなら12bitです。
 手に入りやすい多コアCPUと云えばRyzen7ですので、16コアで0番以外の物理コアを指定する例を書いておきます。
 「0101010101010100」右側のbitから左へ向かって0番コア、1番コア・・・15番コアとなります。
   ↓
 「5554」
   ↓
 「/affinity 5554」
 これで0番以外の物理コアを全て指定した事に成りまります。
 0番を外した理由はOS側でIOやその他処理で使う事を想定し空けていますが、環境によってはもっと空けた方が良いでしょう。&br;
作業フォルダ―として設定する文字列
C:\BNO\GundamOnline&br;
管理者として実行にチェックを付け、ショートカットの作成を完了させたら完成です。
#endregion

*コメント [#e78ceb51]
【過去ログ】
[[Vol.1>Comments/快適環境考察]] [[Vol.2>Comments/快適環境考察Vol.2]]

#pcomment(Comments/快適環境考察Vol.3,reply,10,)

#br


ホーム リロード   新規 下位ページ作成 コピー 編集 添付 一覧 最終更新 差分 バックアップ 検索   凍結 名前変更     最終更新のRSS