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

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

หน่วยความจำกราฟิก (VRAM) ไม่พอ VRAM over-commit

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

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

ถ้าหน่วยความจำที่ตัวเลือกกราฟิกต้องการมากกว่าหน่วยความจำของการ์ดจอ OS จะย้าย texture ไปไว้ในหน่วยความจำของ PC แล้วดึงกลับมาใหม่ ภาพจึงกระตุก

ทำไม ตัวเลือก texture สูง และอุปกรณ์สวมใส่กับเอฟเฟกต์สารพัดในที่ที่คนเยอะ ทำให้หน่วยความจำการ์ดจอเต็ม → ผลคือ OS ย้าย texture ที่ยังไม่ได้ใช้ตอนนี้ไปไว้ในหน่วยความจำของ PC แล้วดึงกลับผ่านบัส PCIe ที่ช้ากว่าเมื่อต้องใช้ → บนหน้าจอ หยุดแวบทุกครั้งที่เห็นฉากใหม่หรือตัวละครใหม่ texture เบลออยู่พักหนึ่ง

อาการ
กระตุก, ค้าง
ปัจจัย
การหยุดชะงัก
ใครเจอ
เราคนเดียว
เกิดเมื่อไร
ตอนคนแห่มารวมกัน, ระหว่างเดินทาง/ย้ายแมพ
ผู้รับผิดชอบ
ผู้รับผิดชอบหลัก พัฒนาไคลเอนต์ (ทีมพัฒนาเกม) · ร่วมกับ ภายนอก (ภายนอก)
งานฝั่งทีมพัฒนาเกม
ตั้งค่าเริ่มต้นของตัวเลือกให้เหมาะกับขนาดหน่วยความจำการ์ดจอ, ลดคุณภาพ texture อัตโนมัติเมื่อเกินงบหน่วยความจำ, ลดรายละเอียด texture ตัวละครในที่ที่คนเยอะ
งานฝั่งภายนอก
แนะนำให้ผู้เล่นลดตัวเลือก texture, ถ้าเปิดไคลเอนต์สองจอ แนะนำให้ลดตัวเลือกลงอีก
ตัวเลขที่ควรรู้
หน่วยความจำการ์ดจออ่านได้หลายร้อย GB ใน 1 วินาที แต่บัส PCIe ที่รับส่งกับหน่วยความจำของ PC ทำได้ราว 16–64 GB ใน 1 วินาทีตามรุ่น จึงช้ากว่าเกินสิบเท่า
บนกราฟ
ชนเพดานแล้วแบนราบ · หน่วยความจำ GPU เฉพาะ, หน่วยความจำ GPU ที่ใช้ร่วมกัน
จุดที่ต้องดู
ดูกราฟหน่วยความจำ GPU เฉพาะและหน่วยความจำ GPU ที่ใช้ร่วมกันในหัวข้อ GPU ของแท็บ Performance ใน Task Manager (เพิ่มคอลัมน์รายโปรเซสในแท็บ Details ได้) คู่กับเฟรมไทม์จาก PresentMon
สัญญาณว่าใช่
ช่วงที่หน่วยความจำ GPU เฉพาะชนเพดานจนแบนราบและหน่วยความจำ GPU ที่ใช้ร่วมกันเพิ่มขึ้น มีอาการหยุดแวบบ่อย และลดตัวเลือก texture แล้วหายไป
สัญญาณว่าไม่ใช่
หน่วยความจำ GPU เฉพาะยังเหลือ: น่าจะเป็น “สตอเรจช้าจนสตรีมแอสเซ็ตไม่ทัน” หรือ “โหลดแบบ synchronous และคอมไพล์ shader บนเมนเธรด”
วิธีตรวจ
ตรวจที่สภาพแวดล้อมฝั่งผู้เล่น
รายละเอียดเพิ่มเติม
ถ้าในหัวข้อ GPU ของ Task Manager บน Windows “หน่วยความจำ GPU เฉพาะ (Dedicated GPU memory)” เต็มและ “หน่วยความจำ GPU ที่ใช้ร่วมกัน (Shared GPU memory)” เพิ่มขึ้น คือภาวะนี้ ถ้าเปิดไคลเอนต์สองจอบน PC เครื่องเดียวกันจะเต็มเร็วขึ้น (ดูรายการ “หน่วยความจำ/VRAM ไม่พอจนสตรีมล้มเหลว”)

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

  1. Residency Microsoft
    แต่ละโปรเซสมีงบหน่วยความจำกราฟิกที่ใช้ได้ ถ้าเกิน เคอร์เนลจะย้าย heap บางส่วนของ GPU แยกไปไว้ในหน่วยความจำของ PC (เป็นทางเลือกสุดท้าย จึงแนะนำให้จัดการงบเอง)
  2. GPUs in the task manager Microsoft
    หน่วยความจำ GPU เฉพาะใน Task Manager คือ VRAM ของการ์ดจอ ส่วนหน่วยความจำ GPU ที่ใช้ร่วมกันคือหน่วยความจำของ PC ที่ GPU และ CPU ใช้ร่วมกัน
  3. CUDA C++ Best Practices Guide NVIDIA
    แบนด์วิดท์หน่วยความจำกราฟิก (V100 898 GB/s) สูงกว่า PCIe x16 รุ่นที่ 3 (16 GB/s) มาก จึงแนะนำให้ลดการรับส่งกับหน่วยความจำของ PC
  4. PresentMon Capture Application (README-CaptureApplication.md) Intel
    อัดเวลาของแต่ละเฟรมด้วย FrameTime (เวลา CPU ระหว่างเฟรม)

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

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

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

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