
Linux 7.3 VRAM tükəndikdə performansı xeyli yaxşılaşdıracaq
AMD GPU sürücüsünün VRAM tükənməsi ilə davranışını yenidən quran nüvə yamaları upstream-ə qəbul edilib və Linux 7.3 növbəsinə düşüb: oyunlar daha az donacaq, kadr vaxtı sabit olacaq.
AMD GPU sürücüsünün video yaddaşı tükəndikdə necə davrandığını yenidən quran nüvə yamaları upstream-ə qəbul edilib və Linux 7.3 növbəsinə salınıb — bu barədə avqustun 17-də pixelcluster GPU bloqunda dərc olunan yazıda deyilir. İş oyunlar üçün VRAM idarəetməsini yaxşılaşdıran əvvəlki layihənin davamıdır.
VRAM tükənməsinin fizikası
Nəzəri olaraq video yaddaşın tükənməsi sabitliyə deyil, yalnız performansa təsir etməlidir: sürücü tətbiqə kartda fiziki olaraq mövcud olandan çox yaddaş istəməyə icazə verir və artıq hissə CPU RAM-ına köçürülür. Əsl dar boğaz məhz bu köçürmədir. PCIe 4.0 x16 bağlantısında şin saniyədə 32 GiB-dan bir qədər az, yəni millisaniyədə təxminən 32,2 MiB ötürür. 30 FPS hədəfində bir kadr üçün 33,3 ms ayrılır və bu, GPU-nun kənarlaşdırılmış yaddaşdan götürə biləcəyi verilənləri təxminən 1075,5 MiB ilə məhdudlaşdırır — 1 GiB-dan bir az çox. Bir kadr daha çoxuna ehtiyac duyursa, 30 FPS əlçatmaz olur.
Sabitlik problemi: nüvə kilidləməsində dalana dirənmə
Tükənmə sabitliyi də pozur. Bütün yerləşdirmələr uğurlu olduğu halda nüvə -ENOMEM qaytardıqda RADV "Not enough memory for command submission" mesajını çıxarır. Səbəb dərslik nümunəsi olan ABBA dalana dirənməsidir: bir göndəriş digər göndərişin kilidlədiyi yerləşdirməni kənarlaşdırmağa çalışır, ikinci göndəriş isə birincinin saxladığı yaddaşa ehtiyac duyur. Nüvə belə halları aşkar edib yenidən cəhd edə bilir, lakin drm_exec köməkçi kitabxanası TTM-də — GPU yaddaş idarəetməsinin ümumi qatında — istifadə olunmurdu. 2024-cü ildən qalan yamaq dəstləri heç vaxt qəbul edilməmişdi, ona görə tərtibatçı onları aktual nüvəyə köçürüb qalan xətaları düzəltdi: ağır VRAM yüklənməsinin üçüncü dəqiqəsində ortaya çıxan donmaların arxasınca bir həftə.
Ekran skanlama buferləri və 4 GiB-lıq kənarlaşdırma
Profilləmə göstərdi ki, itirilən vaxtın böyük hissəsi renderə deyil, SDMA ilə bufer köçürmələrinə gedir. Ən pis hal ekrana skanlanan buferdir: ekran aparatı virtual yaddaşı yan keçir və fiziki olaraq bitişik səhifələr tələb edir, kənarlaşdırma alqoritmi isə fiziki məhdudiyyətləri heç nəzərə almayan sadə LRU dövrəsidir. Təcrübədə hər biri təxminən 32 MiB piksel verilənləri saxlayan skanlama təsvirlərinə yer açmaq üçün 4 GiB-a qədər VRAM kənarlaşdırılıb; yalnız bu verilənlərin köçürülməsi ən azı 130 ms çəkir. Əlavə edilən sərt və yumşaq məhdudlaşdırma mərhələləri yaddaşın bu irəli-geri hərəkətini dayandırmağı hədəfləyir.
Praktikada nə verir
Bu evristikalarla Indiana Jones: The Great Circle 8 GiB-lıq kartda 9 GiB tələb edərək kadr başına ortalama 19,6 ms əldə etdi. Artıqlığı ikiqat artırmaq kadr vaxtının dəyişkənliyini artırdı və 33,3 ms-dən yuxarı sıçrayışlar yarandı. Nüvə artıq VK_EXT_pageable_device_local_memory və vkSetDeviceMemoryPriorityEXT-i də nəzərə alır; tətbiqlər hansı yaddaşın kənarlaşdırılmasının daha təhlükəsiz olduğunu özləri işarələyə bilir.
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.