Při práci s Blenderem jsem se na notebooku s grafickou kartou Intel setkával s pády Blenderu. Původně jsem hledal chybu v samotné verzi Blenderu, nicméně zjistil jsem, že problém se vyskytuje u všech verzí. To nejhorší na pádu bylo, že zamrznul celý desktop. Ne zřídka jsem musel použít Ctrl + Alt + F3 a restartovat GDM.
Později jsem si v logu všimnul těchto chyb:
[ 353.699935] Asynchronous wait on fence 0000:00:02.0:gnome-shell[3045]:1950 timed out (hint:intel_atomic_commit_ready [i915]) [ 353.700001] Asynchronous wait on fence 0000:00:02.0:gnome-shell[3045]:1950 timed out (hint:intel_atomic_commit_ready [i915]) [ 353.700058] Asynchronous wait on fence 0000:00:02.0:gnome-shell[3045]:1950 timed out (hint:intel_atomic_commit_ready [i915]) [ 356.165370] i915 0000:00:02.0: [drm] Resetting rcs0 for preemption time out [ 356.165378] i915 0000:00:02.0: [drm] blender[5998] context reset due to GPU hang [ 356.181847] i915 0000:00:02.0: [drm] GPU HANG: ecode 9:1:87f59eb9, in blender [5998] [ 357.669334] i915 0000:00:02.0: [drm] Resetting rcs0 for preemption time out [ 357.669343] i915 0000:00:02.0: [drm] blender[5998] context reset due to GPU hang [ 357.686560] i915 0000:00:02.0: [drm] GPU HANG: ecode 9:1:87cabff2, in blender [5998] [ 359.049269] i915 0000:00:02.0: [drm] Resetting rcs0 for preemption time out [ 359.049278] i915 0000:00:02.0: [drm] blender[5998] context reset due to GPU hang [ 359.063068] i915 0000:00:02.0: [drm] GPU HANG: ecode 9:1:87cabff2, in blender [5998]
Problém nebyl na straně Blenderu, ale na straně ovladačů. Na fórech jsem našel tipy, že je potřeba použít novější jádro. Nakonec jsem zkompiloval nejnovější jádro a stejně se problém nevyřešil.
uname -a Linux zenbook 5.10.13-051013-generic #202102032337 SMP Thu Feb 4 00:17:21 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Řešení workaround
Nedávno jsem našel ve fórech řešení, které mi nejvíce pomohlo. Sice jsem jeden pád zaznamenal, ale s tím, co se dělo předtím se to nedá ani srovnávat. V článku „MX Linux and Blender crash“ je problematika podrobněji popsána.
Podle popisu by měla stačit jedna z následujících variant, nicméně rozhodl jsem se raději použít obě. První je spustit Blender s nastavením proměnné INTEL_DEBUG a pak zvýšením timaout pro GPU. Příkazy vypadají takto:
INTEL_DEBUG=reemit blender echo 10000 > /sys/class/drm/card0/engine/rcs0/preempt_timeout_ms
Užitečné zdroje
- https://medium.com/swlh/mx-linux-and-blender-crash-209a2a66f96e
- https://itsubuntu.com/how-to-upgrade-linux-kernel/
- https://itectec.com/ubuntu/ubuntu-how-to-apply-kernel-patches/
- https://github.com/mtompkins/linux-kernel-utilities
- https://gitlab.freedesktop.org/mesa/mesa/-/issues/3748
- https://gitlab.freedesktop.org/mesa/mesa/-/issues/3736