では一体何が問題を引き起こしてるのか。まぁ平たく言えばOSの各種諸設定値が古いWinXPとWin7では色々と違うからではないかなと当たりを付けて更にWinXPを現代の環境に(少なくとも全てのユーザーがCore2以降のCPUだと思うので)OSを調整してみます。
まずはお手軽にツール利用で粗方出来るところは設定を変えてみる。Win高速化PC+というフリーソフトで現在公開されている最新版ではなく古いバージョンの物を利用します。これの方がより詳細にXPの深い部分が設定できるので。
でもこのツールだとWin32PrioritySeparationの設定が詳細に出来なかったので手動でレジストリーを更新しました。
ウチのは2コアで2スレッドのCPUなので
スレッド切り替え間隔 = 00
スレッド切り替え時間 = 01プログラムとバックグラウンドのCPU比率 = 10
という標準の時間間隔でフォアが3倍設定というのが具合が良かったです。
ついでにこのツールだとIRQ8Priority は 2が設定されるようですが 1に手動で設定
しかしコレだけではいつもと同じ軽いXPというだけで幻想神域の蔵は快適には動作してくれませんでした。
じゃあ何の要因があるのかと蔵のプロセスを見てみたところ
複数スレッドがあるうち、同じ優先度で上位のスレッドが同位で14スレッドなので、どれが重要なスレッドかは不明ですが並列して処理しなければならないのがそれだけあるってことです。
ちなみにFirefoxとかを見てみるとスレッド数はもの凄い数ですが優先付けがしっかりされており少ないCPUコアでも動作させられるように配慮されているのかとも思います。
ウチの環境ではCore2Duoで、しかも2コアで2スレッドしかないものですから、最近のCorei7で4コア8スレッドとかハード的に沢山処理できるならともかく少ないCPUスレッドで複数のソフトウェアスレッドを動作させるには先のCPU切り換え時間とOS的(ソフトウェア的)に同時に処理するスレッド数を調整しなければなりません。
そう、デフォルトのWinXP(32)でのクリティカルスレッド数は5なのです。
そこでレジストリを更新し、スレッド数を増やします。
弄るのはこのキー
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Execute
AdditionalCriticalWorkerThreads を 5 に設定(基礎が5なので5+5で10スレ。ノーマルの倍)
AdditionalDelayedWorkerThreads を 3 に設定(基礎が3なので3+3で 6スレ。ノーマルの倍)
わたしは何の根拠もなく単に2倍にセットしましたが他の環境でもそれが良いとかありません。
各自の環境で各自の好みで仕上げるべきかなぁと・・・。
これだけやってもラグが無くなる事はなく時折発生しますが体感的に改善されたと感じ取れました。
とにかく、たかだかネットゲームでここまで環境を調整する必要があったってこと。
つくづく古いOSですねぇWindowsXPはw11/27 : 追記
アップデートにてまた動きが変わったようなので
上記の変更に加えてスレッド切り替え間隔のみを短い方に変更しました!
0 件のコメント:
コメントを投稿