原始出處
文章內部的討論原本是在探討為何在頂級配備的CPU上面常常會有CPU使用率不足的問題 (GPU跟CPU使用率都無法到頂)
結論是BF2042的引擎常常會無法辨認hyper-threading (或是Ryzen系的SMT)造成在8c16t的架構下遊戲只使用8條線程造成cpu使用率偏低
於是有玩家發現可以藉由在遊戲安裝的文件夾 (BF2042.exe 所在位置) 底下添加一個User.cfg的文件來修改遊戲對CPU的使用方式 內容如下
Thread.ProcessorCount <實體核心數>
Thread.MaxProcessorCount <希望遊戲使用的最大線程數量>
Thread.MinFreeProcessorCount 0
Thread.JobThreadPriority 0
Thread.MaxProcessorCount <希望遊戲使用的最大線程數量>
Thread.MinFreeProcessorCount 0
Thread.JobThreadPriority 0
舉例來說 在我的11900k (8c16t)上面我使用的參數就會是
Thread.ProcessorCount 8
Thread.MaxProcessorCount 14
Thread.MinFreeProcessorCount 0
Thread.JobThreadPriority 0
Thread.MaxProcessorCount 14
Thread.MinFreeProcessorCount 0
Thread.JobThreadPriority 0
最大線程數量使用14而不使用16的原因是為了避免CPU造成的卡頓 以下解釋
BF2042在引入128人戰場後對CPU的需求高到完全不合理的程度 運算能力不足的CPU很可能在遊戲運行時所有的CPU資源全部被BF2042占走 但windows系統本身以及一些背景運作的服務還是需要運作 因此當它們被喚醒時就會造成BF2042暫時無法使用CPU而形成卡頓
解決方法就是一開始就預留一些CPU資源給背後的其他服務使用就可避免問題
以我弟的9600k (6c6t) 為例 他在修改前運行遊戲時CPU永遠使用率100% 遊戲中每5-10秒就會有強烈的頓挫感
而在User.cfg中加入
Thread.ProcessorCount 6
Thread.MaxProcessorCount 4 (留兩個CPU線程給系統使用)
Thread.MinFreeProcessorCount 0
Thread.JobThreadPriority 0
Thread.MaxProcessorCount 4 (留兩個CPU線程給系統使用)
Thread.MinFreeProcessorCount 0
Thread.JobThreadPriority 0
後
原本的頓挫感便幾乎不再出現
這個方法最主要的後遺症是因為限制了BF2042的最大CPU使用率 最大張數”有可能” 會下降
但在順暢的遊戲體驗面前個人覺得沒有什麼意義就是了