سلام به بخش دوم زیر پوست داکر خوش اومدید تو قسمت اول cgroup v1 رو معرفی کردیم و سه جز اصلی اون رو نام بردیم و کمی دربارشون حرف زدیم. تو این بخش کاربرد cgroup رو با مثال میبینیم و میفهمیم چرا hierarchy وجود داره.
در گذشته تلاشهای متعددی شد تا بشه پروسههای سیستم رو گروهبندی کرد، مهمترین دلیلش هم بررسی منابع مصرفی پروسهها بود، پروژههایی مثل cpusets و UserBeanCounters ساخته شدن که منابع مصرفی رو بررسی کنن، این پروژهها و مشابهشون نیاز داشتن یک گروهبندی برای پروسهها وجود داشته باشه که اگه فورکی هم از این پروژهها ساخته شد توی همون گروه قرار بگیره.
اینجوری شد که cgroup ساخته شد تا با کمترین تاثیر روی سرعت اجرای برنامهها، نیازهای اساسیای که این پروژهها(همون subsystem که تو بخش یک دربارشون حرف زدیم) داشتن رو برآورده کنه(اینکه چجوری این کار رو میکنه برای بخش بعدیه) و بهشون این اجازه رو میده تا به گروهها دسترسی داشته باشن و کارشون رو بکنن.
از طرفی اجازه داده شد که سیستم چند تا hierarchy داشته باشه، که اگه نیاز بود یک یا چند subsystem خاص یک hierarchy داشته باشه. در کل ما میتونیم کل تسکهای سیستم رو با یه hierarchy تقسیمبندی کنیم و تمام subsystemها از همون یه دونه استفاده کنن، اما طبق چیزی که دولوپرهای لینوکس مدنظر داشتن این کار زیادی پیچیدگی ایجاد میکرد و داشتن چند hierarchy کار رو خیلی ساده میکرد مثلا مثال زیر رو در نظر بگیرید
فرض کنید توی یه دانشگاه افراد برای کار کردن به یه سیستم لینوکسی مشترک وصل میشن ما یه hierarchy برای cpuset داریم که کاربرها رو جدا میکنه و برای استادها و دانشجوها محدودیت میذاره
از طرفی برای مصرف مموری، دیسک، و شبکه hierarchyهای جداگانه تعریف میکنیم و hierarchy شبکه به شکل زیره
طبق این hierarchy استفاده از شبکهی وب میتونه تا بیست درصد پهنای باند موجود رو استفاده کنه شصت درصدش برای nfs(برای اشتراک فایل توی دانشگاه) و بیست درصد کارهای دیگه استفاده میشه. حالا فرض کنید شب شده و اساتید دیگه نیستن، و میشه دانشجوها اینترنت بیشتری استفاده کنن. برای تغییر محدودیتها فقط کافیه میزان اینترنت گروه دانشجوها رو بیشتر کرد و بدون اینکه محدودیتهای دیگه مثل دیسک یا مموری تغییر کنه ما مصرف اینترنت دانشجوها رو افزایش دادیم.
حالا دو تا نکته رو در نظر داشته باشید، اولین نکته اینکه این موضوع برای cgroup v1 هست پس اگه سیستم جدیدی داشته باشید این احتمال وجود داره که cgroup و hierarchy به این شکل روی سیستم شما نباشه که بعدا به اون میپردازیم. و موضوع دوم اگه دقت کرده باشید ما چهار تا hierarchy داریم هر کدوم از این مستطیلها و دایرهها خودشون یه گروه هستن و این گروهها با هم دیگه تداخلی ندارن. درسته که شما میتونین برای هر hierarchy یک یا چند subsystem بذارید، اما هر subsystem فقط توی یه hierarchy میتونه باشه پس نمیتونید دو تا hierarchy داشته باشید که تو جفتش cpuset کار کنه.
توی این بخش تلاش کردیم یخورده بیشتر با مفهوم hierarchy آشنا شید اگه سوالی دارید خوشحال میشم بپرسید تا جواب بدم.