1 puan yazan GN⁺ 2025-02-18 | 1 yorum | WhatsApp'ta paylaş
  • Sorunun ortaya çıkışı: Windows ve Linux çift önyüklemeli bir masaüstü sistemde, Linux'ta yüksek miktarda RAM kullanılırken sistem uyku moduna alındığında çökme yaşanıyordu. Sistem uyandırıldığında siyah ekran görülüyor veya sistem yanıtsız kalıyordu. Bu sorun, amdgpu sürücüsündeki güç/bellek yönetimi hatasından kaynaklanıyordu.

  • Sorunun teşhisi: Gigabyte B550M DS3H anakart ve AMD RX 570 GPU kullanılan bir sistemde Arch Linux çalıştırılıyordu. Sistem çöktükten sonra journalctl ile günlükler incelendi ve amdgpu_device_suspend içinde bellek yetersizliği (OOM) hatası oluştuğu bulundu. NVMe sürücüsü sistem yeniden devreye girerken başlatılamadığı için sistem kilitleniyor ve günlük kaydı da yapılamıyordu.

  • Çözüm denemeleri: systemd yapılandırması değiştirilerek çeşitli uyku modları denendi ve eşzamansız uyku devre dışı bırakılarak sorun sadeleştirilmeye çalışıldı, ancak temel sorun çözülmedi. Çökmenin, amdgpu içindeki TTM tampon kaldırma sürecinde meydana geldiği doğrulandı.

  • Sorunun nedeni: Sistem S3 uyku moduna geçtiğinde PCIe GPU'nun gücü kesiliyor ve VRAM verileri kayboluyor. Bunu önlemek için GPU sürücüsünün VRAM'i sistem RAM'ine yedeklemesi gerekiyor, ancak Linux amdgpu sürücüsü yeterli RAM olmadığında bellek yetersizliği nedeniyle sistemi çökertiyordu.

  • Çözüm: Mario Limonciello, disk tabanlı depolama durdurulmadan önce VRAM'in yedeklenmesini sağlayan bir kernel yaması yazdı. Bu yama, VRAM yedeklemesini dpm_suspend() yerine dpm_prepare() aşamasında yapacak şekilde değiştirerek, bellek yetersizliği durumunda uykuya geçişin iptal edilebilmesini sağladı.

  • Ek sorun giderme: Kullanıcı, VRAM'in kullanıcı alanından yedeklenmesini sağlayan bir betik yazarak sistem uykuya geçmeden önce VRAM'i sistem RAM'ine taşıdı. Ancak birden fazla 3D uygulama çalışırken VRAM sürekli olarak GPU'ya geri taşınabildiğinden yine çökme yaşanabiliyordu.

  • Nihai çözüm: Güç yönetimi bildirim API'si kullanılarak VRAM'in PM_SUSPEND_PREPARE aşamasında yedeklenmesi sağlandı. Böylece takas alanı devre dışı bırakılmadan önce VRAM sistem RAM'ine taşınabildi ve sorun çözüldü.

  • Sonuç: Bu sorun, birçok kişinin emeği ve çeşitli denemeler sonucunda çözüldü ve Linux kernel 6.14'e dahil edilmesi planlanıyor.

1 yorum

 
GN⁺ 2025-02-18
Hacker News yorumları
  • Masaüstü bilgisayar S3 uyku moduna geçtiğinde sistemin PCIe GPU'nun gücünü kestiği varsayımı sorgulanıyor

    • S3, RAM hariç her şeyin gücünü kesmelidir, ancak Gigabyte Aorus anakartlarda NVMe SSD uyku hatası nedeniyle düzgün uykuya dalamama veya uyanamama sorunu var
    • Bunu düzeltmek için bir udev kuralı eklemek gerekiyor
    • Belirli PCIe portlarında uyanmayı engellemenin bir yolu da var
    • Sorunlu PCIe uyandırma aygıtlarını bulmanın bir yöntemi bulunuyor
    • Aygıt bilgisi almak için udevadm komutu kullanılabilir
    • Kabuk betiği kullanarak da sorun çözülebilir
  • memreserverın yazarı, Linux uyku sorununu çözmek için hata ayıklama yaptığı deneyimini paylaşıyor

    • Linux'un, disk ve bellek alt sistemleri donmadan önce güvenilir askıya alma kancalarını çalıştıramaması sorununa dikkat çekiyor
    • Freedesktop GitLab üzerinde ilgili bilgileri bulmanın zor olduğunu belirtiyor
  • Linux'ta uyku özelliğini uygulamanın neden zor olduğunu ve hata ayıklamanın güçlüğünü anlatıyor

    • ThinkPad P1G4'te fanların otomatik olarak durmaması sorununu yaşıyor
    • Bluetooth kulaklıklarda uykudan sonra sesin bozulması sorununu deneyimliyor
  • Ryzen tabanlı ThinkPad kullanan bir kullanıcı, Linux'ta uyku sorunları yaşadığını ve 6.14 sürümünden umutlu olduğunu söylüyor

  • "Uyku/uyanma" sorununun NP-tam bir problem olduğunu fark ettiğini söyleyen bir görüş paylaşılıyor

  • Framework AMD dizüstü bilgisayarda GPU genişletmesi ve Linux/Windows çift önyükleme kullananlar için bunun faydalı olacağı görüşü dile getiriliyor

    • Bağış yapmak istediğini belirtiyor
  • AMD GPU'da uykudan sonra PC'nin neredeyse tamamen kilitlenmesi sorununu yaşayan bir kullanıcı, çözüm için uğraştığını söylüyor

    • RX 5700 XT'den RX 7900 XTX'e geçtikten sonra sorunun ortaya çıktığını belirtiyor
    • 6.14 sürümünün sorunu çözmesini umuyor
  • Linux kullanırken her zaman uyku sorunları yaşadığını söyleyen bir görüş paylaşılıyor

    • Intel, AMD, ATI ve NVIDIA donanımları kullanılsa da uyku veya hazırda bekletme çoğu zaman düzgün çalışmıyor
  • IoT donanımında uyku sorunlarını hata ayıkladığı deneyimini paylaşıyor

    • Linux'ta sistem hazırda bekletmenin uykudan daha güvenilir olduğunu söylüyor
    • SSD hızlıysa sistem hazırda bekletmenin kullanılmasını öneriyor
  • Bellek yönetimi ve OOM koşullarının Linux'ta hâlâ zor problemler olduğunu anlatıyor

    • OOM sorunlarını çözmek için RAM eklemenin verimsiz olduğunu söylüyor
    • systemdnin hata ayıklama kabuğu özelliğinin yararlı olduğu görüşünü paylaşıyor
    • Linux çekirdeği alt sistemleri hakkında faydalı bir konuşmanın çevrimiçi olarak mevcut olduğunu belirtiyor