Kernel की जानकारी

इस पेज पर, हर कर्नेल रिलीज़ की मुख्य सुविधाओं के बारे में खास जानकारी दी गई है. साथ ही, ज़्यादा जानकारी के लिए लिंक भी दिए गए हैं.

Kernel 6.12 की नई सुविधाएं

इस सेक्शन में, kernel 6.12 की नई सुविधाओं के बारे में बताया गया है.

मेमोरी के ऐलोकेशन की प्रोफ़ाइलिंग

मेमोरी के इस्तेमाल को समझने के लिए, यह जानना ज़रूरी है कि मेमोरी का बंटवारा कहां किया गया है. Kernel 6.12 में, मेमोरी ऐलोकेशन एट्रिब्यूशन का एक नया सिस्टम शामिल है. इसे मेमोरी ऐलोकेशन प्रोफ़ाइलिंग (कॉन्फ़िगरेशन में CONFIG_MEM_ALLOC_PROFILING) कहा जाता है. मेमोरी ऐलोकेशन प्रोफ़ाइलिंग की मदद से, हर ऐलोकेशन को एक यूनीक सोर्स लाइन को एट्रिब्यूट किया जाता है, ताकि ऐलोकेशन से जुड़ी समस्याओं की तुरंत पहचान की जा सके. इसके अलावा, मेमोरी के बंटवारे की प्रोफ़ाइलिंग:

  • इसका इस्तेमाल इंजीनियरिंग के दौरान किया जाता है. हालांकि, यह स्टैंडर्ड GKI इमेज में उपलब्ध है.

  • sysctl.vm.mem_profiling boot पैरामीटर का इस्तेमाल करके चालू किया जा सकता है.

  • यह इन-कर्नल और लोड किए गए मॉड्यूल, दोनों के लिए काम करता है.

ज़ीरो-कॉपी और मल्टीशॉट रीड की सुविधा के साथ तेज़ io_uring

kernel 6.12 में, statsd और logd मॉड्यूल, sendfile के ज़ीरो-कॉपी वर्शन का इस्तेमाल करते हैं. इससे उनकी परफ़ॉर्मेंस बेहतर होती है.

इसके अलावा, इस वर्शन में मल्टीशॉट रीड की सुविधा लागू की गई है. इसमें एक बार में एक से ज़्यादा डेटा को पढ़ा जा सकता है. इससे परफ़ॉर्मेंस बेहतर होती है.

Berkeley Packet Filter (BPF) की बेहतर सुविधाएं और सहायता

कर्नेल 6.12 में, बीपीएफ़ टूलचैन को CO-RE और कई आधुनिक सुविधाओं के साथ काम करने के लिए बदला गया है. इसके अलावा, नया बीपीएफ़ लोडर, AOSP के हिस्से

प्रॉक्सी लागू करना

प्रॉक्सी एक्सीक्यूशन की मदद से, शेड्यूलर को ज़्यादा प्राथमिकता वाली प्रोसेस से सीपीयू साइकल उधार लेने की सुविधा मिलती है. इससे, कम प्राथमिकता वाली प्रोसेस के पास मौजूद लॉक वापस पाएं जा सकते हैं. इस सुविधा से, प्राथमिकता बदलने से जुड़ी समस्याओं को कम किया जा सकता है.

Kernel 6.6 की नई सुविधाएं

इस सेक्शन में, kernel 6.6 की नई सुविधाओं के बारे में बताया गया है.

Rust के लिए सहायता

कई kernel 6.6 प्रोजेक्ट, Rust का इस्तेमाल करते हैं.

हर वर्चुअल मेमोरी एरिया (VMA) के लिए लॉक

Kernel 6.6, mmap_sem (जिसे पहले mmap_lock कहा जाता था) से जुड़ी समस्याओं को हल करने के लिए, हर वर्चुअल मेमोरी एरिया लॉक का इस्तेमाल करता है. इसलिए, ज़्यादा थ्रेड का इस्तेमाल करने वाले ऐप्लिकेशन के लॉन्च होने में लगने वाला समय 20% तक कम हो सकता है.

जल्द से जल्द ज़रूरी शर्तें पूरी करने वाली वर्चुअल समयसीमा पहले (ईईवीडीएफ़) शेड्यूलर, सीएफ़एस की जगह लेगा

EEVDF, कम समय और ज़्यादा समय तक चलने वाले टास्क के बीच सीपीयू ऐक्सेस को बेहतर तरीके से संतुलित करने के लिए, पूरी तरह से फ़ेयर शेड्यूलर (CFS) की जगह लेता है.

रीड कॉपी अपडेट (आरसीयू) कॉलबैक से बिजली की खपत कम हुई

RCU_LAZY विकल्प, बैटरी बचाने के लिए टाइमर पर आधारित आरसीयू कॉलबैक बैचिंग का तरीका इस्तेमाल करता है. कम लोड या निष्क्रिय सिस्टम के लिए, इस विकल्प से बिजली की खपत में 5% से 10% की कमी आ सकती है.

बेहतर ZRAM मेमोरी कंप्रेसन

CONFIG_ZRAM_MULTI_COMP वाली नई बिल्ड सेटिंग की मदद से, ZRAM तीन वैकल्पिक एल्गोरिदम में से किसी एक का इस्तेमाल करके, पेजों को फिर से कंप्रेस कर सकता है. फिर से कंप्रेस करने पर, पहले से कंप्रेस की गई मेमोरी और भी छोटी हो जाती है. इससे, चालू टास्क के लिए ज़्यादा खाली जगह मिलती है.

Kernel 6.1 की नई सुविधाएं

इस सेक्शन में, kernel 6.1 की नई सुविधाओं के बारे में बताया गया है.

बेहतर सुरक्षा के लिए, कर्नेल कंट्रोल फ़्लो इंटिग्रिटी (KCFI)

KCFI, कंट्रोल फ़्लो इंटिग्रिटी (CFI) की जगह लेता है. इससे रनटाइम की लागत कम हो जाती है और बिल्ड के समय कोई लागत नहीं होती. रनटाइम की लागत कम होने की वजह से, KCFI को CFI की तुलना में ज़्यादा जगहों पर चालू किया जा सकता है. जैसे, ट्रेसपॉइंट और वेंडर हुक.

KCFI के अलावा, कर्नेल 6.1 में कई सुरक्षा सुविधाएं भी शामिल की गई हैं. जैसे, memcpy के दायरे की सख्त जांच और स्ट्रेट-लाइन स्पेसिएशन अटैक को कम करने की सुविधा.

केसीएफ़आई के बारे में ज़्यादा जानकारी के लिए, कर्नल कंट्रोल फ़्लो इंटिग्रिटी देखें.

मल्टी-जेनेरेशनल एलआरयू (एमजीएलआरयू)

MGLRU को kernel 6.1 में जोड़ा गया है, ताकि मेमोरी मैनेजमेंट को बेहतर बनाया जा सके. इसके लिए, यह पता लगाया जाता है कि कौनसे पेज असल में इस्तेमाल में हैं. इस सुधार की वजह से, सिस्टम में मेमोरी कम होने पर ऐप्लिकेशन को रोकने की ज़रूरत कम हो जाती है. इस अपडेट से उपयोगकर्ता अनुभव भी बेहतर होता है, क्योंकि डिवाइस की परफ़ॉर्मेंस बेहतर हो जाती है.

MGLRU को लागू करने में, आरसीयू के हिसाब से सुरक्षित नए मेपल ट्री के लिए भी सहायता शामिल है. इसका इस्तेमाल, कुछ मामलों में रेड-ब्लैक ट्री (rbtree) को बदलने के लिए किया जा सकता है. RCU-safe मेपल ट्री का इस्तेमाल करने पर, परफ़ॉर्मेंस बेहतर होती है. इसकी वजह यह है कि इसमें कम फ़ुटप्रिंट होता है और यह लॉक नहीं होता.

एमजीएलआरयू के बारे में ज़्यादा जानकारी के लिए, मल्टी-जनरेशन एलआरयू देखें.

समय-निर्धारण

शेड्यूलर को मैनेज और अपडेट करना, कोर को बेहतर बनाने के लिए ज़रूरी है. 6.1 में किए गए कर्नेल अपडेट में ये शामिल हैं:

  • क्लस्टर-अवेयर शेड्यूलिंग जोड़ी गई है. इससे, L2 कैश मेमोरी शेयर करने वाले कोर पर माइग्रेट करके परफ़ॉर्मेंस बेहतर होती है.
  • ग़ैर-ज़रूरी एनर्जी-मार्जिन ह्यूरिस्टिक हटाया गया. कुछ माइग्रेशन को सीमित करके, यह अपडेट ऊर्जा के इस्तेमाल को 5% तक बेहतर बनाता है.
  • डिवाइस के चालू होने में लगने वाले समय को कम करने के लिए, लोड बैलेंसिंग को बेहतर बनाया गया.
  • आरसीयू के लिए, जल्दी ग्रेस पीरियड देने की सुविधा को रीयल टाइम केथ्रेड में ले जाया गया. इस अपडेट से, आरसीयू से जुड़े इंतज़ार के समय में काफ़ी कमी आई है.

ग्राफ़िक्स

Kernel 6.1 में, सिंक की गई फ़ाइलों को एक्सपोर्ट और इंपोर्ट करने के लिए, dma-buf के नए तरीके शामिल किए गए हैं. ये तरीके, Vulcan Video API की ज़रूरतों के हिसाब से हैं.

futex_waitv() का नया तरीका, एक साथ कई फ़्यूटेक्स पर इंतज़ार करके, अन्य प्लैटफ़ॉर्म से गेम को पोर्ट करने की प्रोसेस को आसान बनाता है.

डीबग टूल

कर्नेल कोड में रेस की पहचान करने के लिए, डीबग बिल्ड में कर्नेल कंसिस्टेंसी सैनिटाइज़र (केसीएसएएन) का इस्तेमाल करें.

इसके अलावा, कर्नेल में बिना शुरू की गई वैल्यू ढूंढने के लिए, कर्नेल मेमोरी SANitizer (KMSAN) का इस्तेमाल करें.

ARM64 के लिए सहायता से जुड़े सुधार

6.1 कर्नेल में ARM64 आर्किटेक्चर के लिए कई सुधार किए गए हैं. इनमें ये शामिल हैं:

  • ARMv8.6 टाइमर एक्सटेंशन के लिए सहायता
  • QARMA3 पॉइंटर-ऑथेंटिकेशन एल्गोरिदम के साथ काम करना
  • ARMv9 Scalable Matrix Extension (SME) के लिए शुरुआती सहायता
  • विकल्पों की सुविधा को पैच करने में सुधार किए गए हैं. इससे, कर्नेल इमेज का साइज़ कम हो गया है