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

คู่มือเกมแลค › L2 OS และอุปกรณ์ฝั่งไคลเอนต์

โปรเซสเบื้องหลังแย่ง CPU Background CPU contention

ID สาเหตุ co-background · ผู้รับผิดชอบหลัก ภายนอก (ภายนอก) · ร่วมกับ พัฒนาไคลเอนต์ (ทีมพัฒนาเกม)

เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →

เมื่อการสแกนของแอนตี้ไวรัส, Windows Update, โปรแกรมสตรีม หรือวิดีโอในเบราว์เซอร์ยึดคอร์ไว้ เธรดเกมจะไม่ได้รับ CPU และต้องรอ

ทำไม โปรแกรมอื่นยึดคอร์ CPU ไว้นาน → ผลคือ เธรดเกมต้องรอคิว CPU → บนหน้าจอ เฟรมช้า และการประมวลผลแพ็กเก็ตที่รับมาก็ช้าตาม

อาการ
กระตุก, กรอเร็ว
ปัจจัย
การหยุดชะงัก
ใครเจอ
เราคนเดียว
เกิดเมื่อไร
สุ่มเป็นครั้งคราว, เป็นรอบสม่ำเสมอ
ผู้รับผิดชอบ
ผู้รับผิดชอบหลัก ภายนอก (ภายนอก) · ร่วมกับ พัฒนาไคลเอนต์ (ทีมพัฒนาเกม)
งานฝั่งทีมพัฒนาเกม
ปรับ priority ของเธรดเกม, บันทึกอัตราการใช้ CPU ทั้งเครื่องไว้ใน log ตอนที่เกิดอาการกระตุกด้วย เพื่อแยกว่าเป็นเพราะโปรแกรมอื่นหรือไม่
งานฝั่งภายนอก
แนะนำให้ผู้เล่นเปิด Game Mode ของ Windows และปิดโปรแกรมที่ไม่จำเป็นระหว่างเล่น (การสแกนของแอนตี้ไวรัส, Windows Update, โปรแกรมสตรีม และวิดีโอในเบราว์เซอร์)
ตัวเลขที่ควรรู้
ปกติ Windows จะให้แต่ละเธรดใช้คอร์ครั้งละหลักหน่วยถึงหลักสิบ ms แค่โดนเลื่อนคิว CPU ครั้งเดียวก็หายไปหนึ่งเฟรม
บนกราฟ
พุ่งแบบสุ่มเป็นครั้งคราว · อัตราการใช้ CPU ทั้งเครื่อง, เฟรมไทม์
จุดที่ต้องดู
บันทึกคอลัมน์ CPU ในแท็บ Processes ของ Task Manager และ Processor Information(_Total)\% Processor Time ใน Performance Monitor คู่กับเฟรมไทม์จาก PresentMon ถ้าสงสัยแอนตี้ไวรัส ให้อัดด้วย New-MpPerformanceRecording แล้วดูไฟล์และโปรเซสที่ใช้เวลาสแกนนานด้วย Get-MpPerformanceReport
สัญญาณว่าใช่
ตอนที่กระตุก การใช้ CPU ของโปรแกรมอื่น (การสแกนของแอนตี้ไวรัส, อัปเดต, โปรแกรมสตรีม) พุ่งขึ้น หรือไฟล์ในโฟลเดอร์เกมขึ้นไปอยู่อันดับต้นของเวลาสแกน ปิดโปรแกรมนั้นหรือตั้งเป็นข้อยกเว้นแล้วหายไป
สัญญาณว่าไม่ใช่
อัตราการใช้ CPU ต่ำแต่ทั้งจอหยุดแวบและเสียงแตกซ่า: น่าจะเป็น “โหมดประหยัดพลังงานของ NIC และปัญหาไดรเวอร์” (DPC latency)
วิธีตรวจ
ตรวจที่สภาพแวดล้อมฝั่งผู้เล่น
รายละเอียดเพิ่มเติม
Windows ให้ priority กับโปรแกรมของหน้าต่างที่อยู่ด้านหน้า (foreground) มากขึ้นเล็กน้อย แต่ถ้ามีงานมากกว่าจำนวนคอร์ เกมก็ต้องรอ แอนตี้ไวรัสเข้ามาแทรกผ่าน “การตรวจแบบเรียลไทม์” บ่อยกว่าการใช้ CPU เสียอีก เพราะจะสแกนทุกครั้งที่เกมเปิดไฟล์ ทำให้การหยุดตอนอ่านแอสเซ็ตนานขึ้น

แหล่งอ้างอิง

  1. Multitasking Microsoft
    Windows ให้ time slice แก่แต่ละเธรด เมื่อใช้หมดจะสลับไปเธรดถัดไป time slice ยาวราว 20 ms (ต่างกันตาม OS และ CPU)
  2. Priority Boosts Microsoft
    โปรเซสของหน้าต่างที่อยู่ด้านหน้า (foreground) จะได้รับการยก priority ให้ไม่ต่ำกว่าโปรเซสเบื้องหลัง
  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 ดูไฟล์, path และโปรเซสอันดับต้น ๆ ที่มีผลต่อเวลาสแกน
  6. PresentMon Capture Application (README-CaptureApplication.md) Intel
    อัดเวลาของแต่ละเฟรมด้วย FrameTime (เวลา CPU ระหว่างเฟรม)

สาเหตุที่ควรดูประกอบ

ชั้นเดียวกัน: L2 OS และอุปกรณ์ฝั่งไคลเอนต์

สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (กระตุก)

ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง