黒い砂漠が15fps上がることもある!Process Lassoの使い方
8コア16スレッドより8コア8スレッドにした方がパフォーマンスが出るっていう話をもうちょいやろうと思います。
ドスパラでGALLERIA ZGやGALLERIA ZZを購入した場合はi9-9900KFを標準で搭載していると思うので、この記事の設定によって更にパフォーマンスを出すことが出来ます。
Contents
ハイパースレッディングとゲームの関係
ハイパースレッディングとは何?
i9-9900KF/i9-9900KなどのCPUは「8コア16スレッド」とか「8C16T」などとスペックに書いてあります。
これはi9-9900KFには8つのCPUコアを搭載しているんだけど、コア数の2倍の16スレッドを同時に処理できるということを示しています。
何で2倍できるのか?というと「ハイパースレッディングテクノロジー(HTT)」というものが働いているためです。
豆の選別ラインで例える
豆の選別ラインのお仕事を例にしましょう。
豆の選別ラインに相当するのがスレッドです。選別人がコアさんです。
コアさんは普通は1人で1つのスレッドだけを担当します。
でもi9-9900KFのコアさんはエリートなので、両手を使って2スレッドを同時に作業することができます。
両手を使えるようにするのがハイパースレッディングです。標準でONになっています。
コアさん8人で16スレッドを捌く
中にコアさんが8人いて、16のスレッドが捌けるよ!というのがi9-9900KFなどの8コア16スレッドCPUというわけです。
でもそれが効率よく働くのは、やっぱり各スレッドの分担が平均的な時だけですよね。
特定のスレッドが激混みで処理待ちになることがある
DX11のゲームでは上図のように特定のスレッドだけが激混み!という事態が発生することがあります。
これが起きるとDX11ゲームではそのスレッドの処理待ちになってしまい、お豆の出荷頻度が下がります。
つまり、fpsが下がるんです。
黒い砂漠で「他のプレイヤーの戦闘エフェクト」を表示するとこれが起きやすいです。
しかし、それぞれのスレッドの仕事は決まってるので、スレッドの内容を他のスレッドに割り振ることは出来ません。
というか、ほとんどのゲームは8本程度しかスレッドがないわけで、16スレッドにきれいに仕事分担できません。
だから、他のコアさんはハイパースレッディング両手モードだと比較的余裕があったりして遊んでます。困った困った。
全員に仕事ちゃんと振ろうぜ→ハイパースレッディングオフ
「なんか両手で頑張ってやると遊んでる奴が出るからさ、スレッド減らして1人1スレッドずつ全力でやろうぜ!」
これがハイパースレッディングオフです。働き方改革です。
ハイパースレッディングをオフにすることでCPUコアがそれぞれ1つの処理に集中できます。
ハイパースレッディングオンとオフのfps比較
ハイパースレッディングオフにするだけでハイデル倉庫前のfpsが約15fps向上しました。働き方改革成功です。
※GPUが限界だと意味がないよ
CPUが設計してGPUが絵を描いてディスプレイにゲームの絵が表示されます。
ハイパースレッディングをオフにする場合、CPUの能力は上がりますがGPU使用率限界だとfps上昇の効果はありません。
スポンサー リンク
ハイパースレッディングの切り方
というわけで、「弊社もi9-9900KF/i9-9900Kだから働き方改革するぅ~!」「弊社も弊社も~」となったかと思います。
ハイパースレッディングを切る方法は基本的に2種類です。
- UEFI(BIOS)の詳細メニューなどから切る(根源的)
- Windows上で、プロセスの割り当てを減らす(疑似的)
1.UEFIから切るのが一番よ
Windowsを起動するときにF2やDelなどを連打すると出て来るマザーボードレベルの設定画面がUEFIです。見慣れないから怖いよね。
UEFI上でのハイパースレッディング設定方法はマザボの取説を読んでください。
これをやるとWindows上では1コアで1つの仕事しか絶対にしません。(注:同じ手順で戻せます)
UEFIでハイパースレッディングを切ってしまうことの欠点もあります。
それは「時々両手で全力でやらせたいなあ」という時に、もう一度UEFIに入って戻さないといけないってことです。
動画のエンコードなどでは全スレッドを100%上手く使えることがあるので、動画いじりをする人はあんまりやりたくないはずです。
2.Windows上で「プロセッサの関係」の割り当てを変える
そこでハイパースレッディングをオンにしたまま、Windows上で仕事分担をする方法を私は取っています。
黒い砂漠はi9-9900K/KF/KSではタスクマネージャの詳細タブからBlackDesert64.exeの「プロセッサの関係」を一個飛ばしにするだけで、GPUに余裕があればfpsが上がります。HTTオフでもいいんだけど、他のソフトでHTTを活かしたい場合にはこの方法を覚えとくと良いかもです。 pic.twitter.com/GHOmybzq8q
— おっさんゲーマー@黒い砂漠 (@ossangamernet) January 10, 2020
- タスクマネージャーを開く
- 詳細タブを開く
- ゲームのプロセス(黒い砂漠ならBlackDesert64.exe)を選択
- 右クリックで「プロセッサの関係」を選択
- 0,2,4,6,8,10,12,14と1つ飛ばしにチェックを入れる
- OKを押す(この時点で反映される)
5の部分が謎だと思いますが、「CPU0,CPU1がコア1」「CPU2,CPU3がコア2」と言う風に1コアにつき2スレッドずつがセットになっているので、「1コア1スレずつね」と指定してあげているのです。
設定前
ピンクで囲っているのは実際のコアです。0番スレッドと1番スレッドはコア1で処理、2番スレッドと3番スレッドがコア2で処理…という風に分かれています。
2番のスレッドが使用率が高いですね。もうほぼ限界です。ですが、同じコアが同時に処理している3番のスレッドも決して処理が軽いとは言えません。
これによってボトルネックが生じています。
設定後
黒い砂漠を0,2,4,6,8,10,12,14に設定しました。他のタスクも動いているので完全に奇数を開放は出来ていませんが、2番3番スレッドに大きな変化があったのがわかると思います。
3番スレッドに割り振られていた仕事は別のスレッドに行きました。これによって2番スレッドに来ていた仕事だけガンガン処理すればよくなったので、CPU使用率はさらに限界近くまで上がりました。
もちろん他のプロセスは0~15を全部使わせることが出来るので、動画編集アプリなどには影響がありません。黒い砂漠のみCPUの使用方法が変わるわけです。
しかし、この方法にも弱点があります。
プロセス(ゲームなど)が立ち上がるたびにユーザーが自分で設定しないといけないところです。ゲームやWindowsが設定を覚えていてくれないのです。
黒い砂漠を再起動したら、もう一度設定しなければなりません。めんどくせー!
スポンサー リンク
Process Lassoなら次回起動時もバッチリスレッドを自動設定してくれる
そこで今回ご紹介するのがProcess Lassoというソフトです。
Process Lassoを使うと今回やった「プロセッサの関係」の設定を、割と一発で設定したり、再起動後も自動でやってくれたりします。
英語だけど超便利!便利なのでシェアウェアです(支払わなくても使えますが払ってあげて欲しい)
インストールは普通の流れなんで端折ります。次へ次へでOK。
スレッドの設定方法
Process Lassoを起動するとこんな画面になります。
All processesタブには、今まで起動したアプリケーションが一覧で出てきます。もちろん起動中のアプリも出て来るのでその中から設定したいアプリを選びます。
今回はBlack Desert64.exeを選び、右クリックします。
右クリックメニューからCPU affinity(CPUの関係性) > Always(常時) > Disable Hyper-Threading(ハイパースレッディング無効)を選びます。
そうするとRules項目に「0;2;4;6;8;1;12;14」という設定が出てきます。これだけでおしまい。簡単でしょ?
設定を戻す時
右クリックメニューからCPU affinity(CPUの関係性) > Always(常時) > Select CPU affinity(CPUの関係の選択)を選びます。
CPU 0から最後まで全部チェックを入れてOKを押せば、デフォルトの全スレッド使用状態に戻ります。
CPUの優先度の設定
もうひとつ、右クリックメニューからPriority class(優先度クラス) > Always(常時) > High(高)に設定しておくと、Windows上でのそのプログラムの処理優先度が高めになります。
ゲームに設定すれば、気持ち滑らかに動くかもしれません。
ゲームガード系の設定
黒い砂漠の場合、XIGNCODE3というセキュリティソフトが同時に動くことになっています。
プロセス名はxcoronahost.xemです。
動いていないといけませんが、そんなに頑張らなくていいプロセスなので
CPU15以外のチェックを外してOKにします。
そうすると、XIGNCODE3は15番スレッドの中だけで動くようになります。
たまにビクン!としていますが、ゲームのメイン処理をする0番スレッドや2番スレッドと離れているので影響が少なくなります。多分ね。
こんな感じで、常駐ソフトを動かすスレッドを最適化することでも、ゲームパフォーマンスを上げることが出来ます。
CPU Core Parkingの設定
PCには「バランス」、「省電力」、「高パフォーマンス設定」という電源プランがあると思います。
実は電源を「高パフォーマンス設定」にしていてもCPUをちょこちょこ休ませる設定がWindowsによって働いています。
それを完全に「休まないで」とにっこりできるのがParkControlソフトになります。電気代は上がるかもしれませんがゲームをやる時には役立ちます。
Options > Tools > Configure CPU core parking ...というボタンを押すと、Process Lassoのメーカーが作ったCPUのコア休憩機能を調整できるソフト「ParkControl」がDL出来るページに行きます。
ParkControlをインストール後は、同じメニューからParkControlを呼び出すことが出来ます。
ParkControlでは電源プランを選んで、それに対してCore Parking(コアの休憩)を有効にする(Enabled)か無効にする(Disabled)かを設定できます。
とりあえず全力にするなら電源プランを「Bitsum Highest Performance」にして、休憩設定は全部Disabledで100%にしてApplyです。
電源プランの横の「Make active」のリンクを押すと、その電源プランがアクティブになります。
つまり、PCの電源設定に「Bitsum Highest Performance」が設定されて有効状態になります。
下の方の「Power Options」のリンクを押すと電源オプションのウインドウが表示されます。
プラン設定の変更から、Bitsum Highest Performanceの詳細設定も変更が可能です。
ディスプレイは切っても良いけど、スリープにすると黒い砂漠の常駐に影響が出るかもしれないのでスリープにはしません。
詳細な電源設定の変更はめちゃくちゃ項目があるので今回は割愛します。私もそこまでいじってません。
Process Lassoと電源プランの連携
例えば「ゲームをやっている時だけ全開で、Web見たりのんびりしている時は省エネ設定にしたい」と言うことがあると思います。
その場合は、Windowsの通常プロファイルは省エネやバランスに設定しておいて、Process Lassoで頑張らせたいプログラムに対してApplication power profileを設定します。
ただこれはProcess Lassoに課金しないと使えない機能になっています。ここまで使いこなしたいなら支払う価値があるなと思います。
記事の内容は執筆、更新日時時点の情報であり、現在は異なっている場合があります。 記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。
黒い砂漠 ©Pearl Abyss Corp. All Rights Reserved.
Black Desert ©2019 PEARL ABYSS CORPORATION. All Rights Reserved.
【今日のおすすめ】