
به گزارش PCGamer شرکت ولو (Valve) در جدیدترین بهروزرسانی نسخه بتای سیستمعامل اختصاصی خود، یعنی SteamOS (نسخه ۳.۸.۲۰)، دست به اصلاح یکی از چالشبرانگیزترین مسائل مدیریت حافظه در محیط لینوکس زده است. این آپدیت که به لطف هوشمندی و تلاشهای چندین برنامهنویس مستقل و جامعه متنباز توسعه یافته، جان تازهای به کارتهای گرافیک مجزا (dGPU) با حافظه اختصاصی محدود خواهد بخشید؛ هرچند این بهبودها شامل حال همه سختافزارها نمیشود.
کارتهای گرافیک مجزا دارای یک حافظه اختصاصی و بسیار سریع به نام VRAM هستند. با این حال، سیستمعامل لینوکس برای کمک به پردازنده گرافیکی در مواقع کمبود فضا، بخشی از حافظه اصلی سیستم (RAM) را به عنوان GTT (جدول ترجمه گرافیکی) در اختیار پردازنده گرافیکی قرار میدهد.
مشکل اصلی اینجاست که پهنای باند رابط PCIe (که پردازنده گرافیکی از طریق آن به GTT متصل میشود) بسیار کمتر از VRAM اختصاصی است و تأخیر بالایی دارد. در نتیجه، هر زمان که دادههای حیاتی یک بازی به جای VRAM سر از حافظه GTT درآورند، عملکرد بازی به شدت افت کرده و اصطلاحا دچار لگ میشود. سیستمعامل لینوکس تا پیش از این مکانیزم سختگیرانهای برای اولویتبندی مطلق VRAM نسبت به GTT نداشت.
این راهکار توسط ناتالی واک (Natalie Vock)، توسعهدهنده مستقل و پیمانکار ولو در پروژه درایور متنباز Vulkan (موسوم به RADV)، با همکاری مهندسانی از اینتل و رد هت ارائه شده است. واک متوجه شد که لینوکس در تخصیص فضای بازیها به VRAM بیش از حد سخاوتمندانه رفتار میکند و دادهها را به راحتی به GTT میفرستد.
آنها برای حل این مشکل از قابلیتی در هسته لینوکس به نام cgroups (گروههای کنترل) استفاده کردند. این ابزار به سیستمعامل اجازه میدهد که از تخلیه بیمورد دادهها از VRAM جلوگیری کرده و برای بازیها حریم امن حافظه ایجاد کند.
نتایج تست این وصله امنیتی و بهینهساز روی بازی Cyberpunk ۲۰۷۷ (با یک کارت گرافیک ۸ گیگابایتی) شگفتانگیز بوده است:
این تغییرات مستقیما به معنای کاهش محسوس فریزهای ناگهانی و روانتر شدن تجربه بازی در مناطق شلوغ است.
اگر از کاربران استیم دک (Steam Deck) هستید، احتمالا تغییر خاصی را حس نخواهید کرد. دلیل آن ساده است؛ استیم دک از یک پردازنده گرافیکی مجتمع (iGPU) استفاده میکند و در آن، هم VRAM و هم GTT همگی روی یک حافظه مشترک سیستم (RAM) قرار دارند.






