مجموعات التحكم
cgroups (اختصارًا لـ control groups ) هي ميزة في نواة لينكس تحد من استخدام الموارد (وحدة المعالجة المركزية، الذاكرة، إدخال/إخراج القرص، إلخ) وتحسبه وتعزله [ 1 ] : § وحدات التحكم في مجموعة من العمليات .
بدأ مهندسو جوجل العمل على هذه الميزة عام ٢٠٠٦ تحت اسم "حاويات العمليات". [ ٢ ] وفي أواخر عام ٢٠٠٧، تم تغيير التسمية إلى "مجموعات التحكم" لتجنب الالتباس الناتج عن تعدد معاني مصطلح " الحاوية " في سياق نواة لينكس، وتم دمج وظائف مجموعات التحكم في نواة لينكس الرئيسية في الإصدار ٢.٦.٢٤، الذي صدر في يناير ٢٠٠٨. [ ٣ ] ومنذ ذلك الحين، أضاف المطورون وحدات تحكم لتخصيص الذاكرة الخاصة بالنواة، [ ٤ ] وجدار الحماية netfilter ، [ ٥ ] وقاتل العمليات عند نفاد الذاكرة ، [ ٦ ] والعديد من الميزات الأخرى.
يُعدّ إصدار cgroup v2 تغييرًا جوهريًا في تاريخ cgroup ، إذ ألغى إمكانية استخدام تسلسلات هرمية متعددة للعمليات والتمييز بين الخيوط كما في إصدار cgroup الأصلي (المسمى الآن "v1"). [ 1 ] : § مشاكل الإصدار v1 وأسباب الإصدار v2. بدأ العمل على التسلسل الهرمي الموحد بإعادة استخدام التسلسل الهرمي الوهمي للإصدار v1 كمكان لتخزين جميع وحدات التحكم التي لم تُستخدم بعد من قِبل وحدات أخرى في عام 2014. [ 7 ] تم دمج cgroup v2 في نواة لينكس 4.5 (2016). [ 8 ]
الإصدارات
يوجد إصداران من مجموعات التحكم (cgroups). ويمكن أن يتعايشا في النظام.
- كتب بول ميناج وروهيت سيث النسخة الأصلية من cgroups، ثم دُمجت في نواة لينكس الرئيسية عام 2007 (2.6.2). بعد ذلك، تولى تيجون هيو تطوير وصيانة cgroups ، وأجرى عليها تعديلات جوهرية دون المساس بواجهة المستخدم (انظر قسم " تعديلات الإصدار 1 "). أُعيد تسميتها إلى "مجموعة التحكم الإصدار 1" (cgroup-v1) بعد ظهور cgroups-v2 في لينكس 4.5. [ 9 ]
- وجد تيجون هيو أن إعادة تصميم الإصدار الأول (v1) لا يمكن أن تتم دون الإخلال بواجهة المستخدم. ونتيجة لذلك، أضاف نظامًا جديدًا منفصلاً يُسمى "مجموعة التحكم الإصدار الثاني" (cgroup-v2). على عكس الإصدار الأول، يحتوي cgroup-v2 على تسلسل هرمي واحد فقط للعمليات (لأن وحدة التحكم لا يمكن تعيينها إلا لتسلسل هرمي واحد، فلا يمكن إدارة العمليات في تسلسلات هرمية مختلفة بواسطة وحدة التحكم نفسها؛ وهذا التغيير يتجاوز هذه المشكلة). كما أنه يُلغي القدرة على التمييز بين سلاسل العمليات، ويختار العمل على مستوى دقيق من العمليات بدلاً من ذلك (مما يُعطّل "إساءة استخدام" النظام التي أدت إلى واجهات برمجة تطبيقات معقدة). [ 1 ] : § مشاكل الإصدار الأول (v1) وأسباب الإصدار الثاني (v2 ). يُعد إصدار نواة لينكس 4.5، الذي صدر في 14 مارس 2016، أول إصدار يدعم cgroup-v2. [ 8 ]
سمات
يتمثل أحد أهداف تصميم cgroups في توفير واجهة موحدة للعديد من حالات الاستخدام المختلفة ، بدءًا من التحكم في العمليات الفردية (باستخدام nice ، على سبيل المثال) وصولًا إلى المحاكاة الافتراضية الكاملة على مستوى نظام التشغيل (كما هو الحال في OpenVZ أو Linux-VServer أو LXC ، على سبيل المثال). يوفر cgroups ما يلي:
- تحديد الموارد
- يمكن ضبط المجموعات بحيث لا تتجاوز حد الذاكرة المُكوّن ، والذي يشمل أيضًا ذاكرة التخزين المؤقت لنظام الملفات ، [ 10 ] [ 11 ] وحد عرض النطاق الترددي للإدخال/الإخراج، [ 12 ] وحد حصة وحدة المعالجة المركزية، [ 13 ] وحد مجموعة وحدة المعالجة المركزية، [ 14 ] أو الحد الأقصى للملفات المفتوحة . [ 15 ]
- تحديد الأولويات
- قد تحصل بعض المجموعات على حصة أكبر من استخدام وحدة المعالجة المركزية [ 16 ] أو معدل نقل بيانات الإدخال/الإخراج للقرص [ 17 ]
- محاسبة
- يقيس استخدام الموارد للمجموعة، والذي يمكن استخدامه، على سبيل المثال، لأغراض الفوترة [ 18 ]
- يتحكم
- تجميد مجموعات العمليات، ونقاط التفتيش الخاصة بها وإعادة تشغيلها [ 18 ]
يستخدم

مجموعة التحكم (cgroup) هي مجموعة من العمليات التي تخضع لمعايير موحدة وترتبط بمجموعة من المعلمات أو الحدود. قد تكون هذه المجموعات هرمية، أي أن كل مجموعة ترث الحدود من المجموعة الأصلية. يوفر نظام التشغيل إمكانية الوصول إلى وحدات تحكم متعددة (تُسمى أيضًا أنظمة فرعية) عبر واجهة cgroup؛ [ 3 ] على سبيل المثال، وحدة التحكم "memory" تحد من استخدام الذاكرة، ووحدة التحكم "cpuacct" تحسب استخدام وحدة المعالجة المركزية، وهكذا.
يمكن استخدام مجموعات التحكم بطرق متعددة:
- عن طريق الوصول إلى نظام الملفات الظاهري لمجموعة التحكم (cgroup) يدويًا.
- من خلال إنشاء وإدارة المجموعات بشكل فوري باستخدام أدوات مثل
cgcreateوcgexecوcgclassify(منlibcgroup). - من خلال "برنامج تشغيل محرك القواعد" الذي يمكنه نقل عمليات مستخدمين أو مجموعات أو أوامر معينة تلقائيًا إلى مجموعات التحكم (cgroups) كما هو محدد في تكوينه.
- بشكل غير مباشر من خلال برامج أخرى تستخدم cgroups، مثل Docker و Firejail و LXC و [ 19 ] libvirt و systemd و Open Grid Scheduler/Grid Engine و [ 20 ] و lmctfy من Google الذي توقف تطويره .
تحتوي وثائق نواة لينكس على بعض التفاصيل التقنية لإعداد واستخدام مجموعات التحكم الإصدار 1 [ 21 ] والإصدار 2. [ 1 ]
واجهات
يعمل كلا إصداري cgroup من خلال نظام ملفات وهمي ( cgroupللإصدار v1 و cgroup2للإصدار v2). وكما هو الحال مع جميع أنظمة الملفات، يمكن تثبيتهما على أي مسار، ولكن جرت العادة على تثبيت أحد الإصدارين (عادةً الإصدار v2) على المسار الافتراضي لنظام الملفات sysfs/sys/fs/cgroup . وكما ذُكر سابقًا، يمكن تفعيل كلا إصداري cgroup في الوقت نفسه؛ وينطبق هذا أيضًا على أنظمة الملفات طالما أنها مثبتة على مسار مختلف. [ 21 ] [ 1 ] في الوصف أدناه، نفترض إعدادًا يكون فيه تسلسل الإصدار v2 موجودًا في المسار الافتراضي . أما تسلسل الإصدار v1، في حال الحاجة إليه، فسيتم تثبيته على موقع مختلف./sys/sys/fs/cgroup
عند بدء التشغيل، يجب ألا تحتوي مجموعة التحكم cgroup2 على أي مجموعات تحكم مُعرّفة باستثناء المجموعة الرئيسية. بعبارة أخرى، /sys/fs/cgroupيجب ألا تحتوي على أي مجلدات، بل على عدد من الملفات التي تتحكم في النظام ككل. في هذه المرحلة، ls /sys/fs/cgroupقد يُظهر تشغيل الأمر التالي على نظام مثال:
cgroup.controllerscgroup.max.depthcgroup.max.descendantscgroup.pressurecgroup.procscgroup.statcgroup.subtree_controlcgroup.threadscpu.pressurecpuset.cpus.effectivecpuset.cpus.isolatedcpuset.mems.effectivecpu.statcpu.stat.localio.cost.modelio.cost.qosio.pressureio.prio.classio.statirq.pressurememory.numa_statmemory.pressurememory.reclaimmemory.statmemory.zswap.writebackmisc.capacitymisc.currentmisc.peak
تُسمى هذه الملفات وفقًا لوحدات التحكم التي تُديرها. على سبيل المثال، cgroup.*تُعنى هذه الملفات بنظام cgroup نفسه، بينما memory.*تُعنى ملفات أخرى بنظام الذاكرة الفرعي. مثال: لطلب 1 جيجابايت من الذاكرة من نواة النظام من أي مكان فيه، يُمكن تشغيل الأمر التالي echo "1G swappiness=50" > /sys/fs/cgroup/memory.reclaim: [ 1 ]
لإنشاء مجموعة فرعية، يُنشأ مجلد جديد ضمن مجموعة موجودة (بما في ذلك المجموعة الرئيسية). تُنشأ الملفات الخاصة بعناصر التحكم المتاحة لهذه المجموعة تلقائيًا. [ 1 ] على سبيل المثال، mkdir /sys/fs/cgroup/example; ls /sys/fs/cgroup/exampleسيؤدي تشغيل الأمر إلى إنشاء قائمة ملفات مشابهة إلى حد كبير للقائمة أعلاه، ولكن مع بعض التغييرات الملحوظة. في أحد الأنظمة التجريبية، تُضاف هذه الملفات:
cgroup.eventscgroup.freezecgroup.killcgroup.typecpu.idlecpu.maxcpu.max.burstcpu.pressurecpu.uclamp.maxcpu.uclamp.mincpu.weightcpu.weight.nicememory.currentmemory.eventsmemory.events.localmemory.highmemory.lowmemory.maxmemory.minmemory.oom.groupmemory.peakmemory.swap.currentmemory.swap.eventsmemory.swap.highmemory.swap.maxmemory.swap.peakmemory.zswap.currentmemory.zswap.maxpids.currentpids.eventspids.events.localpids.maxpids.peak
هذه التغييرات ليست غير متوقعة لأن بعض عناصر التحكم والإحصائيات لا تكون ذات معنى إلا على مجموعة فرعية من العمليات (على سبيل المثال، مستوى الأولوية هو أولوية وحدة المعالجة المركزية للعمليات بالنسبة لبقية النظام). [ 1 ]
يتم تعيين العمليات إلى مجموعات فرعية عن طريق الكتابة إلى ملف . ويمكن معرفة مجموعة التحكم (cgroup) التي تنتمي إليها العملية عن طريق قراءة الملف نفسه. [ 1 ]/proc/<PID>/cgroup
في الأنظمة المبنية على systemd ، يتم تحديد تسلسل هرمي للمجموعات الفرعية مسبقًا لتغليف كل عملية يتم تشغيلها بشكل مباشر أو غير مباشر بواسطة systemd ضمن مجموعة فرعية: وهذا هو الأساس الذي يقوم عليه systemd في إدارة العمليات. يمكن الاطلاع على شرح لتسمية هذه المجموعات في دليل Red Hat Enterprise Linux 7. [ 22 ] كما توفر Red Hat دليلًا حول إنشاء ملف خدمة systemd الذي يتسبب في تشغيل عملية ما في مجموعة تحكم منفصلة (cgroup). [ 23 ]
systemd-cgtopيمكن استخدام الأمر [ 24 ] لعرض مجموعات التحكم الرئيسية حسب استخدامها للموارد.
التعايش V1
في نظام يستخدم الإصدار v2، لا يزال بالإمكان تثبيت الإصدار v1 ومنحه صلاحية الوصول إلى وحدات التحكم غير المستخدمة من قِبل الإصدار v2. مع ذلك، عادةً ما يضع النظام الحديث جميع وحدات التحكم المستخدمة في الإصدار v2، لذا لا تتوفر أي وحدة تحكم للإصدار v1 على الإطلاق حتى في حال إنشاء تسلسل هرمي. من الممكن إزالة جميع استخدامات وحدة تحكم من الإصدار v2 وتسليمها إلى الإصدار v1، لكن نقل وحدات التحكم بين التسلسلات الهرمية بعد تشغيل النظام أمرٌ مُرهق وغير مُستحسن. [ 1 ]
تطورات رئيسية
إعادة تصميم الإصدار الأول
بدأت إعادة تصميم مجموعات التحكم (cgroups) في عام 2013، [ 25 ] مع تغييرات إضافية جاءت مع الإصدارين 3.15 و3.16 من نواة لينكس. [ 26 ] [ 27 ] [ 28 ]
تتعلق التغييرات التالية بنواة النظام قبل الإصدارين 4.5 و4.6، أي قبل إضافة cgroups-v2. بعبارة أخرى، تصف هذه التغييرات كيفية تعديل cgroups-v1، مع العلم أن معظمها قد تم تضمينه في الإصدار v2 (إذ يشترك الإصداران v1 وv2 في نفس قاعدة البيانات).
عزل مساحة الاسم
على الرغم من أن عزل مساحات الأسماء ليس جزءًا من عمل مجموعات التحكم (cgroups) بشكل مباشر، إلا أنه ميزة ذات صلة في نواة لينكس ، حيث يتم فصل مجموعات العمليات بحيث لا يمكنها الوصول إلى موارد المجموعات الأخرى. على سبيل المثال، توفر مساحة أسماء PID تعدادًا منفصلاً لمعرفات العمليات داخل كل مساحة اسم. كما تتوفر أيضًا مساحات أسماء mount وuser وUTS (مشاركة الوقت في يونكس) وnetwork وSysV IPC.
- توفر مساحة اسم PID عزلاً لتخصيص معرّفات العمليات (PIDs)، وقوائم العمليات وتفاصيلها. وبينما تكون مساحة الاسم الجديدة معزولة عن مساحات الأسماء الأخرى، فإن العمليات الموجودة في مساحة الاسم "الأصلية" لا تزال ترى جميع العمليات في مساحات الأسماء الفرعية، وإن كانت بأرقام PID مختلفة. [ 29 ]
- تعزل مساحة اسم الشبكة وحدات التحكم في واجهة الشبكة (المادية أو الافتراضية)، وقواعد جدار الحماية iptables ، وجداول التوجيه، وما إلى ذلك. ويمكن ربط مساحات أسماء الشبكة ببعضها البعض باستخدام جهاز إيثرنت افتراضي يُسمى "veth". [ 30 ]
- تتيح مساحة الاسم "UTS" تغيير اسم المضيف .
- تتيح مساحة اسم التثبيت إنشاء تخطيط مختلف لنظام الملفات، أو جعل نقاط تثبيت معينة للقراءة فقط. [ 31 ]
- تعمل مساحة اسم IPC على عزل اتصال العمليات بين مساحات الأسماء في نظام System V.
- تعزل مساحة اسم المستخدم معرفات المستخدمين بين مساحات الأسماء. [ 32 ]
- مساحة اسم Cgroup [ 33 ]
يتم إنشاء مساحات الأسماء باستخدام الأمر "unshare" أو استدعاء النظام ، أو كعلامات "new" في استدعاء النظام "clone". [ 34 ]
أُضيف النظام الفرعي "ns" في المراحل الأولى من تطوير cgroups لدمج مساحات الأسماء ومجموعات التحكم. عند تثبيت مجموعة التحكم "ns"، كان كل مساحة اسم تُنشئ مجموعة جديدة في تسلسل cgroup الهرمي. كانت هذه تجربة اعتُبرت لاحقًا غير ملائمة لواجهة برمجة تطبيقات cgroups، فأُزيلت من نواة النظام.
استُلهمت مساحات أسماء لينكس من وظائف مساحات الأسماء الأكثر عمومية المستخدمة بكثافة في جميع أنحاء Plan 9 من مختبرات بيل . [ 35 ]
التحويل إلى نظام الملفات kernfs
تم إدخال نظام الملفات Kernfs إلى نواة لينكس مع الإصدار 3.14 في مارس 2014، وكان المؤلف الرئيسي له تيجون هيو. [ 36 ] أحد أهم دوافع إنشاء نظام Kernfs منفصل هو نظام ملفات cgroups. يُنشأ Kernfs أساسًا بفصل بعض وظائف sysfs إلى كيان مستقل، مما يُسهّل على الأنظمة الفرعية الأخرى في النواة تنفيذ نظام ملفات افتراضي خاص بها، مع إمكانية التعامل مع توصيل وفصل الأجهزة، والإنشاء والإزالة الديناميكية، وغيرها من الخصائص. لا يؤثر هذا على كيفية استخدام cgroups، ولكنه يُسهّل صيانة الكود. [ 37 ]
الميزات الجديدة التي تم تقديمها خلال الإصدار 1
مجموعات التحكم في ذاكرة النواة (تم دمج وحدة التحكم kmemcg في الإصدار 3.8 ( 18 فبراير 2013 ) مننواةلينكسالرئيسية.[38 ] [ 39 ] [ 4 ] تستطيع وحدة التحكم kmemcg تحديد مقدار الذاكرة التي يمكن للنواة استخدامها لإدارة عملياتها الداخلية.
تمت إضافة دعم إعداد netfilter لكل مجموعة في عام 2014. [ 5 ]
أُضيفت التسلسلية الهرمية الموحدة في عام 2014. وهي تعيد استخدام التسلسلية الهرمية الوهمية للإصدار الأول لتضم جميع وحدات التحكم التي لم تُستخدم بعد من قِبل وحدات تحكم أخرى. ستصبح هذه التسلسلية الهرمية الوهمية المُعدّلة هي التسلسلية الهرمية الوحيدة المتاحة في الإصدار الثاني. [ 7 ]
التغييرات بعد الإصدار الثاني
على عكس الإصدار الأول، فإن الإصدار الثاني من cgroup يحتوي على تسلسل هرمي واحد فقط للعمليات ويميز بين العمليات وليس بين الخيوط.
وعي مجموعة cgroup بقاتل نفاد الذاكرة
أدخلت نواة لينكس 4.19 (أكتوبر 2018) ميزة إدراك مجموعات التحكم (cgroup) في تنفيذ آلية إنهاء العمليات عند نفاد الذاكرة (OOM killer) ، مما أضاف القدرة على إنهاء مجموعة تحكم كوحدة واحدة، وبالتالي ضمان سلامة عبء العمل. [ 6 ]
التبني
تستخدم العديد من المشاريع cgroups كأساس لها، بما في ذلك CoreOS و Docker ( في عام 2013) و Hadoop و Jelastic و Kubernetes و lmctfy ( دعني أحتوي ذلك لك) و LXC ( حاويات لينكس) و systemd و Mesos و Mesosphere و HTCondor و Flatpak .
كما اعتمدت توزيعات لينكس الرئيسية هذه التقنية، مثل Red Hat Enterprise Linux (RHEL) 6.0 في نوفمبر 2010، أي قبل ثلاث سنوات من اعتمادها من قبل نواة لينكس الرئيسية. [ 41 ]
في 29 أكتوبر 2019، قام مشروع فيدورا بتعديل فيدورا 31 لاستخدام CgroupsV2 بشكل افتراضي. [ 42 ]
انظر أيضاً
- تطبيقات المحاكاة الافتراضية على مستوى نظام التشغيل
- مجموعة العمليات
- Tc (لينكس) – أداة للتحكم في حركة البيانات تتداخل وظائفها قليلاً مع إعدادات cgroup الموجهة للشبكة
- كائن المهمة – المفهوم المكافئ في نظام ويندوز ، كما تتم إدارته بواسطة مدير الكائنات الخاص بهذا النظام الأساسي
مراجع
- 1 2 3 4 5 6 7 8 9 10 "مجموعة التحكم الإصدار 2" . docs.kernel.org .
الأقسام المشار إليها في هذه الوثيقة:
- ↑ جوناثان كوربيت (29 مايو 2007). "حاويات العمليات" . LWN.net.
- ١ ٢ جوناثان كوربيت (٢٩ أكتوبر ٢٠٠٧). "ملاحظات من حاوية" . LWN.net . تم الاطلاع عليه في ١٤ أبريل ٢٠١٥. اعتُبر الاسم الأصلي "containers" عامًا جدًا - فهذا الكود جزء مهم من حل الحاويات، ولكنه ليس كل شيء. لذلك ،
أُعيد تسمية الحاويات إلى "مجموعات التحكم" (أو "cgroups") وتم دمجها في الإصدار ٢.٦.٢٤.
- 1 2 "memcg: إضافة توثيق حول وحدة تحكم kmem" . kernel.org . 18 ديسمبر 2012.
- 1 2 "netfilter: x_tables: مطابقة مجموعة التحكم في العمليات الخفيفة" . 23 أبريل 2014. مؤرشف من الأصل في 24 أبريل 2014.
- 1 2 "Linux_4.19 - Linux Kernel Newbies" .
- 1 2 "cgroup: التحضير للتسلسل الهرمي الموحد الافتراضي" . 13 مارس 2014.
- 1 2 "Documentation/cgroup-v2.txt كما ظهر في نواة لينكس 4.5" . 14 مارس 2016.
- ↑ "الفرق بين نواة لينكس 4.4 و 4.5" . 14 مارس 2016.
- ↑ جوناثان كوربيت (31 يوليو 2007). "التحكم في استخدام الذاكرة في الحاويات" . LWN.
- ↑ بالبير سينغ، فايديناثان سرينيفاسان (يوليو 2007). "الحاويات: تحديات وحدة التحكم في موارد الذاكرة وأدائها" (ملف PDF) . ندوة أوتاوا لينكس.
- ^ كارفاليو ، أندريه (18 أكتوبر 2017). "استخدام مجموعات التحكم للحد من الإدخال/الإخراج" . andrestc.com . تم الاسترجاع في 12 سبتمبر 2022 .
- ↑ لو، دان. "مشكلة تقييد الحاويات" . danluu.com . تم الاطلاع عليه بتاريخ 12 سبتمبر 2022 .
- ↑ دير، سيمون (2004). "CPUSETS" . تم الاسترجاع في 12 سبتمبر 2022 .
- ↑ "setrlimit(2) — صفحات دليل Arch" . man.archlinux.org . تم الاطلاع عليه بتاريخ 27 نوفمبر 2023 .
- ↑ جوناثان كوربيت (23 أكتوبر 2007). "مساحة النواة: جدولة عادلة للمستخدم في لينكس" . عالم الشبكات. مؤرشف من الأصل في 19 أكتوبر 2013. تم الاطلاع عليه في 22 أغسطس 2012 .
- ↑ كامكاميزاوا هيرويو (19 نوفمبر 2008). مجموعة التحكم ووحدة تحكم موارد الذاكرة (ملف PDF) . ندوة لينكس اليابانية. مؤرشف من الأصل (شرائح عرض PDF) في 22 يوليو 2011.
- 1 2 هانسن د، مركز تكنولوجيا لينكس التابع لشركة آي بي إم (2009). إدارة الموارد (شرائح عرض تقديمي بصيغة PDF) . مؤسسة لينكس.
- ↑ مات هيلسلي (3 فبراير 2009). "LXC: أدوات حاويات لينكس" . IBM developerWorks.
- ↑ "تكامل مجموعات التحكم في محرك الشبكة" . المنطق القابل للتوسع. 22 مايو 2012.
- 1 2 "مجموعات التحكم الإصدار 1" . docs.kernel.org .
- ↑ "1.2. التسلسلات الهرمية الافتراضية لمجموعات التحكم | دليل إدارة الموارد | ريد هات إنتربرايز لينكس | 7 | وثائق ريد هات" . docs.redhat.com .
- ↑ "إدارة مجموعات التحكم باستخدام systemd" . www.redhat.com .
- ↑ "Systemd-cgtop" .
- ↑ "كل ما يتعلق بنواة لينكس: إعادة تصميم مجموعة التحكم" . Linux.com . 15 أغسطس 2013. مؤرشف من الأصل في 28 أبريل 2019. تم الاطلاع عليه في 19 مايو 2014 .
- ↑ "التسلسل الهرمي الموحد لمجموعة التحكم في الإصدار 3.16" . LWN.net . 11 يونيو 2014.
- ↑ "سحب تحديثات cgroup للإصدار 3.15 من Tejun Heo" . kernel.org . 3 أبريل 2014.
- ↑ "سحب تحديثات cgroup للإصدار 3.16 من Tejun Heo" . kernel.org . 9 يونيو 2014.
- ^ بافيل إميليانوف ، كير كوليشكين (19 نوفمبر 2007). "مساحات أسماء PID في نواة 2.6.24" . LWN.net.
- ↑ جوناثان كوربيت (30 يناير 2007). "مساحات أسماء الشبكة" . LWN.net.
- ↑ سيرج إي. هالين، رام باي (17 سبتمبر 2007). "تطبيق مساحات أسماء التثبيت" . IBM developerWorks.
- ↑ مايكل كيريسك (27 فبراير 2013). "مساحات الأسماء قيد التشغيل، الجزء 5: مساحات أسماء المستخدم" . lwn.net معلومات لينكس من المصدر.
- ↑ "LKML: Linus Torvalds: Linux 4.6-rc1" .
- ↑ جاناك ديساي (11 يناير 2006). "وثائق نواة لينكس حول unshare" .
- ↑ "استخدام مساحات الأسماء في الخطة 9" . 1992. مؤرشف من الأصل في 6 سبتمبر 2014. تم الاطلاع عليه في 15 فبراير 2015 .
- ↑ "kernfs، sysfs، driver-core: تنفيذ الإزالة الذاتية المتزامنة" . LWN.net . 3 فبراير 2014. تم الاطلاع عليه في 7 أبريل 2014 .
- ↑ "شجرة مصدر نواة لينكس: kernel/git/torvalds/linux.git: cgroups: التحويل إلى kernfs" . kernel.org . 11 فبراير 2014. تم الاطلاع عليه في 23 مايو 2014 .
- ↑ "memcg: بنية تحكم kmem" . شفرة المصدر kernel.org . 18 ديسمبر 2012.
- ↑ "memcg: بنية أساسية لمحاسبة kmem" . شفرة المصدر kernel.org . 18 ديسمبر 2012.
- 1 2 "ميزوسفير تُتيح استخدام Kubernetes من جوجل على منصة ميسوس" . Mesosphere.io. 10 يوليو 2014. مؤرشف من الأصل في 6 سبتمبر 2015. تم الاطلاع عليه في 13 يوليو 2014 .
- ↑ "ملاحظات إصدار Red Hat Enterprise Linux - 6.0" (ملف PDF) . redhat.com . تم الاطلاع عليه بتاريخ 12 سبتمبر 2023 .
- ↑ "1732114 - تعديل Fedora 31 لاستخدام CgroupsV2 افتراضيًا" .
روابط خارجية
- الوثائق الرسمية لنواة لينكس حول cgroups v1 و cgroups v2
- دليل إدارة موارد Red Hat حول مجموعات التحكم (cgroups)
- صفحة دليل أوبونتو حول مجموعات التحكم (cgroups) مؤرشفة بتاريخ 9 أغسطس 2021 على موقع Wayback Machine
- مساحات أسماء نواة لينكس ومجموعات التحكم (cgroups) بقلم رامي روزن (2013)
- مساحات الأسماء ومجموعات التحكم، أساس حاويات لينكس (بما في ذلك مجموعات التحكم الإصدار 2) ، شرائح عرض تقديمي لرامي روزن، مؤتمر Netdev 1.1، إشبيلية، إسبانيا، 2016
- فهم واجهة برمجة تطبيقات مجموعات التحكم الجديدة ، LWN.net ، بقلم رامي روزين، مارس 2016
- إدارة المجموعات واسعة النطاق في Google مع بورغ ، أبريل 2015، بواسطة أبهيشيك فيرما، لويس بيدروسا، مادوكار كوروبولو، ديفيد أوبنهايمر، إريك تون وجون ويلكس
- كائنات الوظائف ، ميزة مماثلة في نظام التشغيل ويندوز
- واجهات نواة لينكس
- ميزات نواة لينكس
- أمان أنظمة التشغيل
- برنامج المحاكاة الافتراضية لنظام لينكس
