PSO2のファイルチェックの高速化検討

結論とか

PSO2のファイルチェックについていろいろ考える。

結論としては、とことん高速化するならNVMeのSSDは必須NVMeのSSDが理想で、SATAのSSDでは(RAIDでも組まない限り)帯域が足りない。細かいファイルは圧倒的に多いが、IOPSとかランダムリード速度よりシーケンシャルリード速度のほうが重要。

CPUのシングルスレッド性能も重要かもしれない(CPU変えて検証したいところだけれども面倒なので断念)。

というわけで、とことん高速化するならシングルスレッド性能の良いデスクトップ向けCPU(Ryzen 3000番台、Core i7以上)と、シーケンシャルリード速いNVMeのSSDがほしい。

ちなみにそんな条件(Read 3GB/s以上)で安いSSDとなるとこんなのとかになる。

A-DATA SX8200 Pro

NVMe以外でもSATA3のSSDなら理想的ではないが問題ないと思う。HDDの人は買い替えるべき。

私のPCの環境

ちなみに私のPCでこんな感じ。CPUが骨董品なので、こんな環境で何偉そうに書いてるんだと思われる方もおられるでしょうがご容赦を。

PCのスペック

  • CPU FX-8350 4.0Ghz
  • メモリ 8GB
  • GPU GeForce GTX780ti(2-way SLI)
  • ストレージ Goodram CX300 240GB(システム)+Crucial P1 500GB(PSO2など用)

ファイルチェックを観察してみる

私の環境のファイルチェック

以下少々技術的な話

さて、目視で見た感じファイルチェック中の速度は、670MB/s、6000ファイル/s程度が最大だった。Crucial P1はQ1T1(並列で読み込まない条件)でReadが最大1300MB/s、ランダムなら12000IOPSは出るはずなので、だいぶ少なく感じる。

タスクマネージャーから見た感じ、ストレージのアクティブな時間はだいたい60%となっていた。これは実測値/理想値に近いので、ストレージは性能を発揮しきれておらず、何らかのボトルネックがあると思われる。

メモリが不足している様子はなく、となるとCPUが原因の可能性が高い。CPU使用率は全体で50%台後半、コア別にみれば6コア/8コアで70%となっているが、タスクマネージャーから確認できないほどの速さで負荷100%のコアが交代して、多くのコアに70%負荷がかかっているように見える可能性がある(そういったのに対応したモニタソフトもあるらしいのだが)。つまりコア数は足りているがシングルスレッド性能が足りずこのような結果になっているのではないだろうか。

なおFX-8350では4Ghzなら上記の通り全体としては使用率50%台、クロック半分にすると使用率100%に張り付く程度の負荷である。

多分シーケンシャルリードのほうが重要

後述の通りPSO2のファイルの半分(4万くらい)は30KB以下のファイルであり、IOPSが高いほど処理が速くなるように思えるが、仮にストレージ性能がやや低めの5000IOPS(4KBランダム20MB/s)としても4万ファイルが8秒でチェック終わる計算なので、いくらIOPSが高くても大した高速化にならない。

なので、IOPSよりシーケンシャルリードが重要となるはず。さすがにHDDのように数百IOPSでは1.5ダースほどRAIDしない限り論外だが。

参考:PSO2のファイルサイズとファイル数

PSO2のデータのファイル数はおよそ8.6万、ファイルサイズは73GB程度。平均ファイルサイズは平均800KBとなる。

が、その他色々見た感じからざっと計算すると内訳は

  • 上位100ファイル 平均サイズ140MB(最小80MB)
  • 上位100~500ファイル 平均30MB
  • 500位以下 平均550KB
  • 半分近くは30KB以下

また冒頭のように上位1300ファイルで半分の37GBもある。

コメント

  1. 匿名 より:

    高速化を検討するならNVMeでなくても仮想メモリやRAID使えば3000MB/sくらい安価で楽に出来るが・・・
    導入リスクを考慮するならその選択もアリか
    これだけ考察できていて搭載メモリ8Gって・・・のが腑に落ちん
    木を見て森を見ずってところか
    PSO2的に言えばステOPばかり気にしてSOPの倍率補正を疎かにしている感じ

    • ナナバッハ より:

      コメントありがとうございます。

      現状SATAのSSDとNVMeのSSDで数倍も価格差があるわけではなく、SATAのSSDを数台RAIDするよりは高速なNVMeのSSD一台のほうが安価で障害点も少なく故障しにくいと考えました。ですのでSATAをRAIDするのは考えましたが結局没としました。
      個人的な余談ですが、過去に4台でRAID0やった時障害時に部品点数(SSD、ケーブル、マザボ側端子各4)が多すぎて原因特定が大変だったのでもうやりたくないです。

      メモリ8GBについてですが、Chromeのタブをたくさん開きつつPSO2起動した状態で、今まで幾度となく確認して最大でも6GB台に収まっており、現状不足しているようには見えません。

      仮想メモリとはメモリ不足時にHDD・SSD上にデータを退避する仕組みのことでしょうか。本記事のファイルチェックとは関係ないかと思います。

      追記:SATA SSDをRAIDすれば3GB/s出すことはできますので、NVMe必須は誤りですね。修正します。