Giải quyết sự cố GPU driver bị crash trong Unreal Engine 5 (phần 1)
Epic Games đã phát hành Unreal Engine 5 với rất nhiều tính năng tuyệt vời cho người dùng. Tại iRender, chúng tôi cũng nhận được nhiều sự yêu thích từ người dùng Unreal Engine 5 nhờ GPU mạnh mẽ cũng như quy trình làm việc trực quan. Tuy nhiên, có một số vấn đề liên quan đến việc GPU driver bị crash trong Unreal Engine 5 và chúng tôi sẽ cố gắng giúp bạn cùng với người dùng của chúng tôi khắc phục sự cố đó trong bài viết này.
GPU Crash là gì?
Đôi khi, khi bạn làm việc trong một dự án sử dụng nhiều GPU, GPU có thể bị crash. Vào thời điểm đó, một cửa sổ như thế này sẽ có thể hiện ra
Sau đó, bạn có thể thấy cửa sổ Unreal Engine Crash Reporter như thế này.
Tại sao xảy ra sự cố GPU crash?
Khi một ứng dụng sử dụng quá nhiều bộ nhớ, Windows, với cơ chế tự động bảo vệ, sẽ tắt GPU driver. Điều này dẫn đến việc một ứng dụng có thể bị crash.
Nếu GPU bị crash, bạn sẽ nhận được một số callstack và logs, chẳng hạn như “GPUCrash – exiting due to D3D device being lost – D3D Hung” và “DXGI_ERROR_DEVICE_REMOVED with Reason: DXGI_ERROR_DEVICE_HUNG.”
Có nhiều lý do dẫn đến việc GPU bị crash, chẳng hạn như:
-
-
-
- Hết bộ nhớ (OOM)
- Hết thời gian trong khi thực hiện thao tác đắt tiền (sự kiện TDR)
- Một lỗi trong engine code
- Một lỗi trong driver
- Một lỗi trong Hệ điều hành
- Một vấn đề trong phần cứng
-
-
Vì có nhiều nguyên nhân khác nhau nên rất khó để phát hiện đâu là nguyên nhân chính khiến Unreal Engine gặp sự cố. Trong phần tiếp theo của bài viết, chúng ta hãy xem một số tùy chọn sửa lỗi và một số biện pháp phòng ngừa mà bạn có thể thực hiện.
Gỡ lỗi GPU crash
Bạn có thể sử dụng callstack được tạo bởi Crash Reporter và các log files để xem nguyên nhân gây ra sự cố crash trong Unreal. Tuy nhiên, nếu xảy ra việc GPU bị crash, nó lại không thực sự chỉ ra nguyên nhân vì sao. Do đó, việc xem callstack khá vô nghĩa.
Để xuất logs với thông tin hữu ích hơn, bạn có thể sử dụng hai đối số dòng lệnh gỡ lỗi:
-
-
-
- -gpucrashdebugging thu thập tiến trình GPU và theo dõi trạng thái GPU hiện tại khi gỡ lỗi GPU bị crash.
- -d3ddebug cung cấp thông tin về quy trình D3D.
-
-
Sau khi chạy công cụ với từng dòng lệnh này (bạn nên chạy chúng riêng biệt) và lấy được thông tin crash, bạn có thể tìm thấy log trong thư mục [Your Project]/Saved/Logs.
Giải quyết vấn đề GPU hết bộ nhớ (OOM)
Lý do đầu tiên cho việc GPU bị crash có thể là do hết bộ nhớ. Bạn có thể dễ dàng kiểm tra việc sử dụng bộ nhớ GPU bằng cách vào Windows Task Manager > Performance.
Tại đây, bạn có thể nhấp để chọn GPU của mình (1) và xem bộ nhớ khả dụng của nó cũng như mức tiêu thụ hiện tại của nó (2).
Bạn có thể xem dung lượng bộ nhớ GPU đang được sử dụng và bộ nhớ GPU khả dụng. Nếu bạn gần đạt đến giới hạn GPU, nó có thể gây ra crash. Bạn có thể thử các phương pháp sau để khắc phục sự cố:
-
-
-
- Đóng các chương trình khác có thể đang tiêu tốn một lượng lớn bộ nhớ GPU.
- Đơn giản hóa cảnh bằng cách sử dụng họa tiết có độ phân giải thấp hơn, mắt lưới có độ phân giải thấp hơn, loại bỏ để thu nhỏ các đối tượng trong cảnh, v.v.
- Sử dụng độ phân giải màn hình thấp hơn.
- Trong khi làm việc trong trình chỉnh sửa, bạn có thể sử dụng Level Viewport Screen Percentageđể hiển thị ở độ phân giải thấp hơn.
- Trong khi làm việc trong trình chỉnh sửa, nếu bạn mở nhiều viewports, hãy đóng hết và chỉ để lại 1 viewport thôi.
- Tránh tắt các tính năng chính như Niagara hoặc Ray Tracing.
- Việc bỏ qua các thành phần này sẽ thay đổi nhiều thứ, điều này có thể dẫn đến kết luận không hợp lệ về nguyên nhân gây ra sự cố GPU crash.
-
-
Trong phần 2, chúng ta sẽ tiếp tục khám phá GPU Time Outs gây ra do hoạt động tốn kém và điều tra các lỗi trong Engine code, drivers và hệ điều hành.
Nguồn và hình ảnh trong bài: docs.unrealengine.com