सीसमूह

From alpha
Jump to navigation Jump to search

cgroups
मूल लेखकv1: Paul Menage, Rohit Seth
v2: Tejun Heo
डेवलपर(ओं)Tejun Heo, Johannes Weiner, Michal Hocko, Waiman Long, Roman Gushchin, Chris Down et al.
आरंभिक रिलीज2007; 17 years ago (2007)
इसमें लिखा हुआC
ऑपरेटिंग सिस्टमLinux
प्रकारSystem software
लाइसेंसGPL and LGPL
वेबसाइटCgroup v1, Cgroup v2

सीग्रुप्स (नियंत्रण समूहों से संक्षिप्त) एक लिनक्स कर्नेल सुविधा है जो संसाधन (कंप्यूटर विज्ञान) (सीपीयू, मेमोरी, डिस्क I/O, आदि) को सीमित करती है, उसका हिसाब रखती है और अलग करती है।[1]) प्रक्रिया (कंप्यूटिंग) के संग्रह का।

गूगल के इंजीनियरों ने प्रोसेस कंटेनर्स नाम से इस फीचर पर 2006 में काम शुरू किया था।[2] 2007 के अंत में, लिनक्स कर्नेल संदर्भ में ओएस-स्तरीय वर्चुअलाइजेशन शब्द के कई अर्थों के कारण होने वाले भ्रम से बचने के लिए नामकरण को नियंत्रण समूहों में बदल दिया गया था, और नियंत्रण समूह की कार्यक्षमता को कर्नेल संस्करण 2.6.24 में मेनलाइन लिनक्स में विलय कर दिया गया था, जो था जनवरी 2008 में रिलीज़ हुई।[3] तब से, डेवलपर्स ने कई नई सुविधाएँ और नियंत्रक जोड़े हैं, जैसे 2014 में कर्नफ़्स (लिनक्स) के लिए समर्थन,[4] फ़ायरवॉल (कंप्यूटिंग),[5] और एकीकृत पदानुक्रम.[6] cgroup v2 को Linux कर्नेल 4.5 में मर्ज किया गया था[7]इंटरफ़ेस और आंतरिक कार्यक्षमता में महत्वपूर्ण बदलाव के साथ।[8]


संस्करण

Cgroups के दो संस्करण हैं।

सीग्रुप्स मूल रूप से पॉल मेनेज और रोहित सेठ द्वारा लिखा गया था, और 2007 में मेनलाइन लिनक्स कर्नेल में विलय हो गया। बाद में इसे सीग्रुप्स संस्करण 1 कहा जाता है।[9] सीग्रुप्स का विकास और रखरखाव तब तेजुन हेओ ने अपने हाथ में ले लिया। तेजुन हीओ ने सीग्रुप्स को दोबारा डिजाइन और दोबारा लिखा। इस पुनर्लेखन को अब संस्करण 2 कहा जाता है, cgroup-v2 का दस्तावेज़ीकरण पहली बार 14 मार्च 2016 को जारी लिनक्स कर्नेल 4.5 में दिखाई दिया।[7] V1 के विपरीत, cgroup v2 में केवल एक प्रक्रिया पदानुक्रम है और प्रक्रियाओं के बीच भेदभाव करता है, थ्रेड्स के बीच नहीं।

विशेषताएँ

Cgroups के डिज़ाइन लक्ष्यों में से एक कई अलग-अलग उपयोग के मामलों के लिए एक एकीकृत इंटरफ़ेस प्रदान करना है, एकल प्रक्रियाओं को नियंत्रित करने से (उदाहरण के लिए, यूनिक्स का उपयोग करके) पूर्ण ऑपरेटिंग सिस्टम-स्तरीय वर्चुअलाइजेशन (जैसा कि OpenVZ, Linux-VServer द्वारा प्रदान किया गया है) तक या एलएक्ससी, उदाहरण के लिए)। Cgroups प्रदान करता है:

संसाधन सीमित करना
समूहों को कॉन्फ़िगर की गई मुख्य मेमोरी सीमा से अधिक नहीं होने के लिए सेट किया जा सकता है, जिसमें पेज कैश भी शामिल है,[10][11] I/O बैंडविड्थ सीमा,[12] सीपीयू कोटा सीमा,[13] सीपीयू सेट सीमा,[14] या फ़ाइल विवरणक.[15]
प्राथमिकता
कुछ समूहों को सीपीयू उपयोग का बड़ा हिस्सा मिल सकता है[16] या डिस्क I/O थ्रूपुट[17]
लेखांकन
किसी समूह के संसाधन उपयोग को मापता है, जिसका उपयोग, उदाहरण के लिए, बिलिंग उद्देश्यों के लिए किया जा सकता है[18]
नियंत्रण
प्रक्रियाओं के समूहों को फ्रीज करना, उनके अनुप्रयोग की जांच करना और पुनः आरंभ करना[18]


उपयोग करें

अप्रत्यक्ष उपयोग के उदाहरण के रूप में, सिस्टमडी सीग्रुप्स सुविधा तक विशेष पहुंच मानता है

एक नियंत्रण समूह (संक्षिप्त रूप में सीग्रुप) प्रक्रियाओं का एक संग्रह है जो समान मानदंडों से बंधे होते हैं और मापदंडों या सीमाओं के एक सेट से जुड़े होते हैं। ये समूह पदानुक्रमित हो सकते हैं, जिसका अर्थ है कि प्रत्येक समूह को अपने मूल समूह से सीमाएँ विरासत में मिलती हैं। कर्नेल सीग्रुप इंटरफ़ेस के माध्यम से कई नियंत्रकों (जिन्हें सबसिस्टम भी कहा जाता है) तक पहुंच प्रदान करता है;[3]उदाहरण के लिए, मेमोरी कंट्रोलर मेमोरी उपयोग को सीमित करता है, cpuacct सीपीयू उपयोग को नियंत्रित करता है, आदि।

नियंत्रण समूहों का उपयोग कई तरीकों से किया जा सकता है:

  • सीग्रुप वर्चुअल फ़ाइल सिस्टम को मैन्युअल रूप से एक्सेस करके।
  • जैसे टूल का उपयोग करके तुरंत समूह बनाकर और प्रबंधित करके cgcreate, cgexec, और cgclassify (से libcgroup).
  • नियम इंजन डेमॉन के माध्यम से जो स्वचालित रूप से कुछ उपयोगकर्ताओं, समूहों या कमांड की प्रक्रियाओं को इसके कॉन्फ़िगरेशन में निर्दिष्ट सीग्रुप में स्थानांतरित कर सकता है।
  • अप्रत्यक्ष रूप से अन्य सॉफ़्टवेयर के माध्यम से जो cgroups का उपयोग करता है, जैसे डॉकर (सॉफ़्टवेयर), फिरिजैल, LXC,[19] libvirt, systemd, ग्रिड इंजन|ओपन ग्रिड शेड्यूलर/ग्रिड इंजन,[20] और Google की विकासात्मक रूप से निष्क्रिय lmctfy

लिनक्स कर्नेल दस्तावेज़ में नियंत्रण समूह संस्करण 1 के सेटअप और उपयोग के कुछ तकनीकी विवरण शामिल हैं[21] और संस्करण 2.[22] systemd-cgtop[23] कमांड का उपयोग शीर्ष नियंत्रण समूहों को उनके संसाधन उपयोग द्वारा दिखाने के लिए किया जा सकता है।

पुनः डिज़ाइन

सीग्रुप्स का नया डिज़ाइन 2013 में शुरू हुआ,[24] लिनक्स कर्नेल के संस्करण 3.15 और 3.16 द्वारा लाए गए अतिरिक्त परिवर्तनों के साथ।[25][26][27]


नेमस्पेस अलगाव

जबकि तकनीकी रूप से सीग्रुप्स काम का हिस्सा नहीं है, लिनक्स कर्नेल की एक संबंधित विशेषता नेमस्पेस आइसोलेशन है, जहां प्रक्रियाओं के समूहों को इस तरह अलग किया जाता है कि वे अन्य समूहों में संसाधनों को नहीं देख सकते हैं। उदाहरण के लिए, एक पीआईडी ​​नेमस्पेस प्रत्येक नेमस्पेस के भीतर प्रक्रिया पहचानकर्ताओं की एक अलग गणना प्रदान करता है। माउंट, उपयोगकर्ता, यूटीएस, नेटवर्क और SysV आईपीसी नामस्थान भी उपलब्ध हैं।

  • पीआईडी ​​नेमस्पेस प्रक्रिया पहचानकर्ताओं (पीआईडी), प्रक्रियाओं की सूची और उनके विवरण के आवंटन के लिए अलगाव प्रदान करता है। जबकि नया नेमस्पेस अन्य भाई-बहनों से अलग है, इसके मूल नेमस्पेस में प्रक्रियाएं अभी भी चाइल्ड नेमस्पेस में सभी प्रक्रियाओं को देखती हैं - भले ही अलग-अलग पीआईडी ​​​​संख्याओं के साथ।[28]
  • नेटवर्क नेमस्पेस नेटवर्क इंटरफ़ेस नियंत्रकों (भौतिक या वर्चुअल), आईपीटेबल्स फ़ायरवॉल नियम, राउटिंग टेबल आदि को अलग करता है। नेटवर्क नेमस्पेस को वीथ वर्चुअल ईथरनेट डिवाइस का उपयोग करके एक दूसरे से जोड़ा जा सकता है।[29]
  • यूटीएस नेमस्पेस होस्ट का नाम बदलने की अनुमति देता है।
  • माउंट (कंप्यूटिंग) नेमस्पेस एक अलग फ़ाइल सिस्टम लेआउट बनाने, या कुछ माउंट बिंदुओं को केवल पढ़ने के लिए बनाने की अनुमति देता है।[30]
  • आईपीसी नेमस्पेस नेमस्पेस के बीच सिस्टम V अंतर-प्रक्रिया संचार को अलग करता है।
  • यूजर नेमस्पेस नेमस्पेस के बीच यूजर आईडी को अलग करता है।[31]
  • सीग्रुप नेमस्पेस[32]

नेमस्पेस अनशेयर कमांड या syscall के साथ या क्लोन सिस्कल में नए झंडे के रूप में बनाए जाते हैं।[33] नेमस्पेस और नियंत्रण समूहों को एकीकृत करने के लिए एनएस सबसिस्टम को सीग्रुप्स विकास के आरंभ में जोड़ा गया था। यदि ns cgroup माउंट किया गया था, तो प्रत्येक नेमस्पेस cgroup पदानुक्रम में एक नया समूह भी बनाएगा। यह एक प्रयोग था जिसे बाद में सीग्रुप्स एपीआई के लिए उपयुक्त नहीं माना गया और कर्नेल से हटा दिया गया।

लिनक्स नेमस्पेस अधिक सामान्य नेमस्पेस कार्यक्षमता से प्रेरित थे जिसका उपयोग बेल लैब्स की योजना 9 में भारी मात्रा में किया गया था।[34]


एकीकृत पदानुक्रम

कर्नफ्स (लिनक्स) को मार्च 2014 में संस्करण 3.14 के साथ लिनक्स कर्नेल में पेश किया गया था, मुख्य लेखक तेजुन हीओ थे।[35] एक अलग कर्नफ़्स के लिए मुख्य प्रेरकों में से एक सीग्रुप्स फ़ाइल सिस्टम है। Kernfs मूल रूप से कुछ sysfs तर्क को एक स्वतंत्र इकाई में विभाजित करके बनाया गया है, इस प्रकार अन्य कर्नेल उपप्रणालियों के लिए डिवाइस कनेक्ट और डिस्कनेक्ट, गतिशील निर्माण और निष्कासन, और अन्य विशेषताओं के साथ अपने स्वयं के वर्चुअल फ़ाइल सिस्टम के कार्यान्वयन को आसान बनाता है। लिनक्स कर्नेल के संस्करण 3.15 में रीडिज़ाइन जारी रहा।[36]


कर्नेल मेमोरी नियंत्रण समूह (kmemcg)

कर्नेल मेमोरी नियंत्रण समूह (kmemcg) को संस्करण 3.8 में विलय कर दिया गया (2013 February 18; 11 years ago (18-02-2013)) लिनक्स कर्नेल मेनलाइन का।[37][38][39] kmemcg नियंत्रक मेमोरी की मात्रा को सीमित कर सकता है जिसे कर्नेल अपनी आंतरिक प्रक्रियाओं को प्रबंधित करने के लिए उपयोग कर सकता है।

ओओएम हत्यारा के बारे में सीग्रुप जागरूकता

लिनक्स कर्नेल 4.19 (अक्टूबर 2018) ने ओओएम किलर कार्यान्वयन के बारे में सीग्रुप जागरूकता की शुरुआत की जो एक एकल इकाई के रूप में सीग्रुप को मारने की क्षमता जोड़ता है और इस तरह कार्यभार की अखंडता की गारंटी देता है।[40]


गोद लेना

विभिन्न परियोजनाएँ अपने आधार के रूप में cgroups का उपयोग करती हैं, जिनमें CoreOS, Docker (सॉफ़्टवेयर) (2013 में), Apache Hadoop, Jelastic, Kubernetes, शामिल हैं।[41] एलएमसीटीएफवाई (लेट मी कन्टेन दैट फॉर यू), एलएक्ससी (लिनुएक्स कंटेनर्स), सिस्टमडी, अपाचे महीने और मेसोस्फीयर,[41]और HTCondor. प्रमुख लिनक्स वितरणों ने भी इसे अपनाया जैसे कि रेड हैट एंटरप्राइज लिनक्स (आरएचईएल) 6.0 नवंबर 2010 में, मेनलाइन लिनक्स कर्नेल द्वारा अपनाने से तीन साल पहले।[42] 29 अक्टूबर 2019 को, फेडोरा परियोजना ने डिफ़ॉल्ट रूप से CgroupsV2 का उपयोग करने के लिए फेडोरा 31 को संशोधित किया[43]


यह भी देखें

  • ऑपरेटिंग सिस्टम-स्तरीय वर्चुअलाइजेशन कार्यान्वयन
  • प्रक्रिया समूह
  • टीसी (लिनक्स) – नेटवर्क-उन्मुख सीग्रुप सेटिंग्स के साथ कार्यक्षमता में थोड़ा ओवरलैपिंग करने वाली एक ट्रैफ़िक नियंत्रण उपयोगिता
  • जॉब ऑब्जेक्ट (विंडोज़) – समतुल्य Microsoft Windows अवधारणा, जैसा कि उस प्लेटफ़ॉर्म के ऑब्जेक्ट मैनेजर (विंडोज़)Windows) द्वारा प्रबंधित किया जाता है

संदर्भ

  1. "Control Group v2 — The Linux Kernel documentation". www.kernel.org. Retrieved 24 June 2023.
  2. Jonathan Corbet (29 May 2007). "प्रक्रिया कंटेनर". LWN.net.
  3. 3.0 3.1 Jonathan Corbet (29 October 2007). "एक कंटेनर से नोट्स". LWN.net. Retrieved 14 April 2015. The original 'containers' name was considered to be too generic – this code is an important part of a container solution, but it's far from the whole thing. So containers have now been renamed 'control groups' (or 'cgroups') and merged for 2.6.24.
  4. "cgroup: convert to kernfs". Linux kernel mailing list. 28 January 2014.
  5. "netfilter: x_tables: lightweight process control group matching". 23 April 2014. Archived from the original on 24 April 2014.
  6. "cgroup: prepare for the default unified hierarchy". 13 March 2014.
  7. 7.0 7.1 "Documentation/cgroup-v2.txt as appeared in Linux kernel 4.5". 14 March 2016.
  8. "cgroup v2: Multiple hierarchies".
  9. "diff between Linux kernel 4.4 and 4.5". 14 March 2016.
  10. Jonathan Corbet (31 July 2007). "कंटेनरों में मेमोरी उपयोग को नियंत्रित करना". LWN.
  11. Balbir Singh, Vaidynathan Srinivasan (July 2007). "Containers: Challenges with the memory resource controller and its performance" (PDF). Ottawa Linux Symposium.
  12. Carvalho, André. "Using cgroups to limit I/O". andrestc.com. Retrieved 12 September 2022.
  13. Luu, Dan. "कंटेनर थ्रॉटलिंग समस्या". danluu.com. Retrieved 12 September 2022.
  14. Derr, Simon (2004). "सीपीयूसेट". Retrieved 12 September 2022.
  15. "setrlimit(2) — Arch manual pages". man.archlinux.org. Retrieved 27 November 2023.
  16. Jonathan Corbet (23 October 2007). "Kernel space: Fair user scheduling for Linux". Network World. Archived from the original on 19 October 2013. Retrieved 22 August 2012.
  17. Kamkamezawa Hiroyu (19 November 2008). सीग्रुप और मेमोरी रिसोर्स कंट्रोलर (PDF). Japan Linux Symposium. Archived from the original (PDF presentation slides) on 22 July 2011.
  18. 18.0 18.1 Dave Hansen. संसाधन प्रबंधन (PDF presentation slides). Linux Foundation.
  19. Matt Helsley (3 February 2009). "LXC: Linux container tools". IBM developerWorks.
  20. "ग्रिड इंजन सीग्रुप एकीकरण". Scalable Logic. 22 May 2012.
  21. "cgroups". kernel.org.
  22. "Torvalds/Linux". GitHub. 13 February 2022.
  23. "Systemd-cgtop".
  24. "All About the Linux Kernel: Cgroup's Redesign". Linux.com. 15 August 2013. Retrieved 19 May 2014.
  25. "The unified control group hierarchy in 3.16". LWN.net. 11 June 2014.
  26. "Pull cgroup updates for 3.15 from Tejun Heo". kernel.org. 3 April 2014.
  27. "Pull cgroup updates for 3.16 from Tejun Heo". kernel.org. 9 June 2014.
  28. Pavel Emelyanov, Kir Kolyshkin (19 November 2007). "PID namespaces in the 2.6.24 kernel". LWN.net.
  29. Jonathan Corbet (30 January 2007). "नेटवर्क नामस्थान". LWN.net.
  30. Serge E. Hallyn, Ram Pai (17 September 2007). "माउंट नेमस्पेस लागू करना". IBM developerWorks.
  31. Michael Kerrisk (27 February 2013). "Namespaces in operation, part 5: User namespaces". lwn.net Linux Info from the Source.
  32. "LKML: Linus Torvalds: Linux 4.6-rc1".
  33. Janak Desai (11 January 2006). "अनशेयर पर लिनक्स कर्नेल दस्तावेज़ीकरण".
  34. "The Use of Name Spaces in Plan 9". 1992. Archived from the original on 6 September 2014. Retrieved 15 February 2015.
  35. "kernfs, sysfs, driver-core: implement synchronous self-removal". LWN.net. 3 February 2014. Retrieved 7 April 2014.
  36. "Linux kernel source tree: kernel/git/torvalds/linux.git: cgroups: convert to kernfs". kernel.org. 11 February 2014. Retrieved 23 May 2014.
  37. "memcg: kmem controller infrastructure". kernel.org source code. 18 December 2012.
  38. "memcg: kmem accounting basic infrastructure". kernel.org source code. 18 December 2012.
  39. "memcg: add documentation about the kmem controller". kernel.org. 18 December 2012.
  40. "Linux_4.19 - Linux Kernel Newbies".
  41. 41.0 41.1 "मेसोस्फीयर गूगल के कुबेरनेट्स को मेसोस में लाएगा". Mesosphere.io. 10 July 2014. Archived from the original on 6 September 2015. Retrieved 13 July 2014.
  42. "6.0 Release Notes" (PDF). redhat.com. Retrieved 12 September 2023.
  43. "1732114 – Modify Fedora 31 to use CgroupsV2 by default".


बाहरी संबंध