한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

遊戲 Lag 白皮書 › L2 用戶端 OS 與裝置

背景處理程序占用 CPU Background CPU contention

原因 ID co-background · 主要負責 外部(外部) · 協同 遊戲開發團隊(用戶端開發)

在含圖解與實驗的完整版中開啟卡片 →

防毒掃描、Windows Update、直播軟體、瀏覽器影片占住 CPU 核心時,遊戲執行緒分配不到 CPU,只能等待。

為什麼 其他程式長時間占用 CPU 核心 → 於是 遊戲執行緒等待排程 → 畫面上 畫格延遲,已接收封包的處理也跟著變慢

症狀
卡頓, 快轉
因素
停滯
誰會遇到
只有我
何時
偶爾隨機發生, 固定週期
負責單位
主要負責 外部(外部) · 協同 遊戲開發團隊(用戶端開發)
遊戲開發團隊要做的事
調整遊戲執行緒的優先順序、在出現卡頓時的 log 中一併記錄整台電腦的 CPU 使用率,以分辨是否為其他程式造成。
外部要做的事
引導玩家開啟 Windows 遊戲模式,並在遊戲中關閉不必要的程式(防毒掃描、Windows Update、直播軟體、瀏覽器影片)。
數值參考
Windows 通常一次把核心交給一個執行緒數 ms~數十 ms。排程上只要被擠掉一次,就會少掉一個畫格。
圖表上
偶爾隨機飆高 · 整台電腦的 CPU 使用率、畫格時間
查看位置
把工作管理員「處理程序」索引標籤的 CPU 欄、效能監視器的 Processor Information(_Total)\% Processor Time 與 PresentMon 畫格時間一起記錄。懷疑是防毒軟體時,用 New-MpPerformanceRecording 錄製,再用 Get-MpPerformanceReport 查看掃描時間長的檔案與處理程序
符合的跡象
卡頓時其他程式(防毒掃描、更新、直播軟體)的 CPU 使用往上衝,或遊戲資料夾的檔案排在掃描時間的前幾名。關掉該程式或將其設為排除項目後就消失
不符合的跡象
CPU 使用率很低,整個畫面卻頓一下且聲音出現雜音時,是「網路卡省電、驅動程式問題」(DPC 延遲)
確認方式
在玩家端環境確認
深入了解
Windows 會給前景視窗的程式稍高的優先順序,但要做的工作比核心還多時,遊戲也得等。比起占用 CPU,防毒軟體更常透過「即時監控」介入。遊戲每次開啟檔案都會被掃描,讀取資源當下的停頓就會拉長。

出處

  1. Multitasking Microsoft
    Windows 給每個執行緒一段時間片段,用完就交給下一個執行緒;時間片段約 20ms(依 OS 與 CPU 而異)
  2. Priority Boosts Microsoft
    前景視窗的處理程序,優先順序會調到背景處理程序以上
  3. About regular quick and full scans with Microsoft Defender Antivirus Microsoft
    即時保護會在每次開啟、關閉檔案以及每次開啟資料夾時掃描
  4. Network-Related Performance Counters Microsoft
    Processor Information:% Processor Time 計數器
  5. Performance analyzer for Microsoft Defender Antivirus Microsoft
    用 New-MpPerformanceRecording 錄製,再用 Get-MpPerformanceReport 查看對掃描時間影響最大的檔案、路徑與處理程序
  6. PresentMon Capture Application (README-CaptureApplication.md) Intel
    以 FrameTime(畫格之間的 CPU 時間)錄下每個畫格的時間

相關原因

同一層:L2 用戶端 OS 與裝置

同一症狀(卡頓)在其他層的原因

查看含圖解與實驗的完整版卡片