1 पॉइंट द्वारा GN⁺ 2025-02-18 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • समस्या की शुरुआत: Windows और Linux को dual boot करने वाले एक desktop में, Linux पर बहुत अधिक RAM उपयोग होने पर system को sleep mode में डालने से system crash हो जाता था। System को जगाने पर काली screen दिखाई देती थी या वह बिना response के अटक जाता था। यह समस्या amdgpu driver के power/memory management bug के कारण थी.

  • समस्या का निदान: Gigabyte B550M DS3H motherboard और AMD RX 570 GPU वाले system पर Arch Linux चल रहा था। System crash के बाद journalctl से logs की जाँच की गई, और पाया गया कि amdgpu_device_suspend में out-of-memory (OOM) error हो रहा था। NVMe driver system resume के समय initialize होने में विफल हो जाता था, जिससे system रुक जाता था और logs दर्ज नहीं हो पाते थे.

  • समाधान के प्रयास: कई sleep modes आज़माने के लिए systemd settings बदली गईं, और asynchronous suspend को disable करके समस्या को सरल बनाने की कोशिश की गई, लेकिन मूल समस्या हल नहीं हुई। यह भी पुष्टि हुई कि crash amdgpu के TTM buffer eviction process के दौरान हो रहा था.

  • समस्या का कारण: जब system S3 sleep mode में जाता है, तो PCIe GPU की power कट जाती है, जिससे VRAM data खो जाता है। इसे रोकने के लिए GPU driver को VRAM का backup system RAM में लेना होता है, लेकिन Linux amdgpu driver पर्याप्त RAM न होने पर out-of-memory की स्थिति में system crash कर देता है.

  • समाधान: Mario Limonciello ने एक kernel patch लिखा, जो disk-based storage बंद होने से पहले VRAM का backup लेने देता है। यह patch VRAM backup को dpm_suspend() की जगह dpm_prepare() चरण में करता है, ताकि memory कम होने पर suspend को रोका जा सके.

  • अतिरिक्त समस्या का समाधान: उपयोगकर्ता ने एक script लिखी जो user space से VRAM का backup लेने देती है, ताकि system sleep से पहले VRAM को system RAM में ले जाया जा सके। हालांकि, कई 3D apps चलने पर VRAM लगातार GPU में वापस जाता रह सकता है, जिससे फिर crash हो सकता है.

  • अंतिम समाधान: power management notification API का उपयोग करके इसे PM_SUSPEND_PREPARE चरण में VRAM backup करने के लिए बदला गया। इससे swap disable होने से पहले VRAM को system RAM में ले जाना संभव हुआ और समस्या हल हो गई.

  • निष्कर्ष: कई लोगों के प्रयास और अलग-अलग कोशिशों से यह समस्या हल हुई, और इसे Linux kernel 6.14 में शामिल किए जाने की योजना है.

1 टिप्पणियां

 
GN⁺ 2025-02-18
Hacker News राय
  • इस धारणा पर सवाल है कि जब डेस्कटॉप S3 sleep mode में जाता है, तो सिस्टम PCIe GPU की power काट देता है

    • S3 में RAM को छोड़कर बाकी सबकी power कट जानी चाहिए, लेकिन Gigabyte Aorus motherboard में NVMe SSD sleep bug के कारण ठीक से sleep या wake नहीं हो पाता
    • इसे ठीक करने के लिए udev rule जोड़ना पड़ता है
    • किसी खास PCIe port से wake होने को रोकने का तरीका भी है
    • problematic PCIe wake device को खोजने का तरीका मौजूद है
    • udevadm command का इस्तेमाल करके device information प्राप्त की जा सकती है
    • shell script का इस्तेमाल करके भी समस्या हल की जा सकती है
  • memreserver के लेखक ने Linux sleep समस्या को हल करने के लिए debugging करने का अपना अनुभव साझा किया

    • उन्होंने यह समस्या बताई कि Linux, disk और memory subsystem के freeze होने से पहले कोई भरोसेमंद suspend hook चला नहीं पाता था
    • Freedesktop Gitlab में संबंधित जानकारी ढूंढना कठिन है
  • Linux में sleep feature को लागू करना क्यों कठिन है और debugging क्यों मुश्किल है, यह समझाया गया

    • ThinkPad P1G4 में fan अपने-आप बंद न होने की समस्या का सामना करना पड़ रहा है
    • Bluetooth headphones में sleep के बाद audio crackle होने की समस्या का अनुभव हुआ
  • Ryzen-आधारित ThinkPad इस्तेमाल करने वाला एक उपयोगकर्ता Linux में sleep समस्या झेल रहा है और 6.14 version से उम्मीद लगाए हुए है

  • एक राय साझा की गई कि "sleep/wake" समस्या दरअसल NP-पूर्ण समस्या है

  • यह राय दी गई कि Framework AMD laptop में GPU expansion और dual boot Linux/Windows इस्तेमाल करने वालों के लिए यह मददगार होगा

    • दान करना चाहने की इच्छा भी जताई गई
  • एक उपयोगकर्ता AMD GPU में sleep के बाद PC लगभग freeze हो जाने की समस्या से जूझ रहा है और समाधान खोजने की कोशिश कर रहा है

    • RX 5700 XT से RX 7900 XTX पर बदलने के बाद यह समस्या शुरू हुई
    • उम्मीद है कि 6.14 version इस समस्या को हल कर सकेगा
  • यह राय साझा की गई कि Linux इस्तेमाल करते समय हमेशा sleep समस्या का सामना करना पड़ा है

    • Intel, AMD, ATI, NVIDIA hardware इस्तेमाल करने पर भी कई बार sleep या hibernation ठीक से काम नहीं करता
  • IoT hardware में sleep समस्या की debugging करने का अनुभव साझा किया गया

    • Linux में system hibernation, sleep की तुलना में अधिक भरोसेमंद है
    • अगर SSD तेज़ है, तो system hibernation इस्तेमाल करना बेहतर है
  • यह समझाया गया कि memory management और OOM condition अभी भी Linux में कठिन समस्याएँ हैं

    • OOM समस्या हल करने के लिए RAM बढ़ाना एक अप्रभावी तरीका है
    • systemd का debug shell feature उपयोगी बताया गया
    • Linux kernel subsystem पर उपयोगी talks ऑनलाइन उपलब्ध हैं