मेमोरी मैनेजर सिस्टम का सबसेट है परिचालन यह ऑपरेटिंग सिस्टम और विभिन्न अनुप्रयोगों के बीच मेमोरी साझा करता है। मेमोरी शब्द मुख्य रूप से मुख्य मेमोरी (RAM) को संदर्भित करता है, लेकिन इसके प्रबंधन के लिए सहायक मेमोरी और कैश मेमोरी के योगदान की आवश्यकता होती है।
मेमोरी मैनेजर स्मृति को प्रक्रियाओं को कुशलतापूर्वक आवंटित करने के लिए विशेष रूप से जिम्मेदार है, जिसका तात्पर्य है कि आप उपलब्ध स्मृति के मुक्त स्थानों की गणना करने में सक्षम होना चाहिए, नई प्रक्रियाओं के लिए आवश्यक स्मृति आवंटित करें, और समाप्त होने वाली प्रक्रियाओं से स्मृति को पुनः प्राप्त करें। लिनक्स कर्नेल के भीतर प्रक्रिया प्रेषणकर्ता SLAB डिस्पैचर है।
पटिया एक ब्लॉक और कैश सिस्टम पर निर्भर करता है जो मेमोरी अनुरोधों को अनुकूलित करता है। इस प्रकार का मेमोरी प्रबंधन आवंटन और स्थानांतरण संचालन के कारण होने वाले विखंडन को कम करता है।
ब्लॉक आवंटन में एक निश्चित वस्तु प्रकार / आकार के लिए एक कैश को लागू करना शामिल होता है जिसमें कई पूर्व-आवंटित मेमोरी ब्लॉक होते हैं जो निश्चित आकार के टुकड़ों में कट जाते हैं जो विशिष्ट वस्तुओं के लिए उपयुक्त होते हैं।
SLAB टुकड़ों का प्रबंधन करता है ताकि जब कर्नेल को किसी ऑब्जेक्ट को मेमोरी आवंटित करने का अनुरोध किया जाए, आप उस अनुरोध को किसी मौजूदा ब्लॉक के खाली भाग से संतुष्ट कर सकते हैं। एसएलएबी पुन: उपयोग के लिए आवंटित स्मृति को बनाए रखता है, जब समान वस्तुओं के बाद के आवंटन, और इस प्रकार ऑब्जेक्ट आरंभीकरण से संबंधित ओवरहेड लागत कम हो जाती है।
वे SLAB को बदलने का इरादा रखते हैं
रोमन गुशचिन, फेसबुक पर लिनक्स कर्नेल इंजीनियरिंग टीम के एक सदस्य ने पता लगाया कि वह वर्तमान मेमोरी मैनेजर / कंट्रोलर में "गंभीर दोष" के रूप में क्या देखता है। और आरहाल ही में एक नया मेमोरी कंट्रोलर प्रस्तावित किया है खंड मैथा जो कई "cgroups" के बीच नाटकीय रूप से स्मृति उपयोग को बेहतर बनाने का वादा करता है (या नियंत्रण समूह) स्मृति से।
यह देखते हुए, यह ध्यान रखना महत्वपूर्ण है कि cgroups लिनक्स कर्नेल की एक विशेषता को संदर्भित करता है जो सिस्टम के संसाधनों (प्रोसेसर, मेमोरी, डिस्क उपयोग, आदि) के उपयोग को सीमित करने, गिनने और अलग करने की अनुमति देता है और शब्द "स्लैब का पृष्ठ" SLAB द्वारा मेमोरी आवंटन प्रक्रिया को आत्मसात किया जा सकता है।
गुशिन के अनुसार:
“वास्तविक कारण मौजूदा डिज़ाइन कम SLAB उपयोग के लिए सरल है: स्लैब पृष्ठों का उपयोग विशेष रूप से एकल मेमोरी पूल द्वारा किया जाता है।
यदि cgroup द्वारा किए गए एक निश्चित आकार के कुछ ही आवंटन हैं या यदि cgroup हटाए जाने के बाद कुछ सक्रिय ऑब्जेक्ट बचे हैं या यदि cgroup में एक एकल थ्रेडेड अनुप्रयोग है जो वस्तुतः कोई गुठली आवंटित नहीं करता है, लेकिन ऐसा हर बार होता है एक नया CPU: इन सभी मामलों में, परिणामस्वरूप SLAB का उपयोग बहुत कम है।
यदि किमीम गणना अक्षम है, तो कर्नेल अन्य आवंटन के लिए टाइल पेजों पर मुफ्त स्थान का उपयोग कर सकता है।
गुशचिन का तर्क है कि यह एक समस्या नहीं थी जब किमीम चालक को एक वैकल्पिक विशेषता के रूप में पेश किया गया था जिसे प्रत्येक मेमोरी पूल के लिए सक्षम किया जाना था।
अब हालांकिकिमीमीटर चालक को cgroup v1 और v2 के लिए डिफ़ॉल्ट रूप से सक्षम किया गया है। और चूंकि आधुनिक सिस्टम बड़ी संख्या में सी समूह बनाते हैं, इसलिए SLAB का उपयोग करना कम प्रभावी होता है।
उनके अनुसार, विभिन्न स्मृति समूहों के बीच स्लैब पृष्ठों को साझा करके और एक reworked प्रणाली का उपयोग करके जहां लेखांकन पृष्ठ के बजाय ऑब्जेक्ट द्वारा किया जाता है, एक लिनक्स कर्नेल में एक अनुकूलित मेमोरी कंट्रोलर होगा जो उपयोग के अधिक कुशल स्तर प्रदान करता है।
गुशचिन द्वारा प्रस्तावित पैच में दो अर्ध-स्वतंत्र तत्व शामिल हैं: एक उप-पृष्ठ लोड एपीआई जो भविष्य में लेखांकन उद्देश्यों और एक मेम_क्रूप_एप्ट्र एपीआई के लिए इस्तेमाल किया जा सकता है।
नए नियंत्रक के साथ टेस्ट किए गए गुच्छिन की स्मृति यह दिखाया है कि लिनक्स में 35% और 42% अधिक मेमोरी के बीच संभव है फ्रंट-एंड वेब पर, DNS सर्वर और डेटाबेस कैश, और कई अन्य कार्यभार।
वर्तमान में गुशचिन का प्रस्ताव "टिप्पणी के लिए अनुरोध" के बैनर तले है। यदि स्वीकार किया जाता है, तो इसे 2020 लिनक्स कर्नेल रिलीज में एकीकृत किया जा सकता है।
Fuente: https://lkml.org/