- Amazon/AWS इंजीनियरों ने Linux 7.0 development kernel में PostgreSQL database server की throughput पहले के kernel की तुलना में लगभग आधी रह जाने वाली गंभीर performance regression की पहचान की है
- Graviton4 server पर मापे गए नतीजों में Linux 7.0 ने पिछले kernel की तुलना में लगभग 0.51x throughput ही दी, और इसका कारण user-space spinlock में कहीं अधिक समय खर्च होना पाया गया
- regression का कारण Linux 7.0 में किया गया kernel preemption mode restriction बदलाव है; PREEMPT_NONE को default के रूप में बहाल करने वाला patch submit किया गया है, लेकिन उसके अपनाए जाने की संभावना स्पष्ट नहीं है
- मूल लेखक Peter Zijlstra का कहना है कि kernel बदलने के बजाय PostgreSQL को RSEQ(Restartable Sequences) time-slice extension का उपयोग करने के लिए बदला जाना चाहिए
- Linux 7.0 stable version लगभग 2 हफ्तों में जारी होने वाला है और इसे Ubuntu 26.04 LTS के base kernel के रूप में भी इस्तेमाल किया जाएगा, इसलिए PostgreSQL के अनुकूल होने तक व्यापक performance गिरावट की आशंका है
समस्या की खोज और उसका पैमाना
- Amazon/AWS इंजीनियर Salvatore Dipietro ने PostgreSQL की throughput और latency regression की रिपोर्ट की
- Graviton4 server पर माप में Linux 7.0 ने मौजूदा kernel की तुलना में केवल 0.51x throughput दी
- जांच में पाया गया कि user-space spinlock में काफी अधिक समय खर्च हो रहा है
regression का कारण: preemption mode restriction
- bisecting के नतीजों से यह तय हुआ कि Linux 7.0 में kernel preemption mode को सीमित करने वाला बदलाव ही कारण है
- यह बदलाव आधुनिक CPU architecture के लिए केवल Full और Lazy preemption mode बनाए रखने के उद्देश्य से किया गया था, और Linux 7.0 scheduler update के हिस्से के रूप में शामिल किया गया
submit किए गए patch और kernel maintainer की प्रतिक्रिया
- गंभीर regression को देखते हुए PREEMPT_NONE को default preemption mode के रूप में बहाल करने वाला patch Linux kernel mailing list में submit किया गया
- लेकिन मूल code के लेखक Peter Zijlstra इस patch को स्वीकार करने के पक्ष में नहीं हैं, और उनका कहना है कि समाधान यह है कि PostgreSQL, RSEQ(Restartable Sequences) time-slice extension का उपयोग करे
- RSEQ time-slice extension भी Linux 7.0 में शामिल फीचर है
- Zijlstra ने समझाया कि "इससे lock holder preemption exposure को सीमित किया जा सकता है"
प्रभाव का दायरा और रिलीज़ शेड्यूल
- अगर यह रुख बना रहता है, तो PostgreSQL के update होने से पहले Linux 7.0 stable version में कुछ scenarios में PostgreSQL performance काफी गिर सकती है
- Linux 7.0 stable version लगभग 2 हफ्तों में जारी होने वाली है
- Linux 7.0, Ubuntu 26.04 LTS का base kernel होगा, इसलिए अप्रैल के अंत में आने वाली Ubuntu 26.04 LTS पर भी इसका वही असर पड़ सकता है
अभी कोई टिप्पणी नहीं है.