天天看點

Linux的Cgroup為什麼要有cgroup概念如何安裝cgroup如何為cgroup配置設定限制的資源

Linux系統中經常有個需求就是希望能限制某個或者某些程序的配置設定資源。也就是能完成一組容器的概念,在這個容器中,有配置設定好的特定比例的cpu時間,IO時間,可用記憶體大小等。于是就出現了cgroup的概念,cgroup就是controller group,最初由google的工程師提出,後來被整合進Linux核心中。

Cgroup是将任意程序進行分組化管理的Linux核心功能。cgroup本身提供将程序進行分組化管理的功能和接口的基礎結構。

而後的Android作業系統也就憑借着這個技術,為每個應用程式配置設定不同的cgroup,将每個程式進行隔離,達到了一個應用程式不會影響其他應用程式環境的目的。

一個程序

控制族群,按照某種标準劃分的程序組

層級,control group可以形成樹形的結構,有父節點,子節點,每個節點都是一個control group,子節點繼承父節點的特定屬性。

子系統。

子系統就是資源控制器,每種子系統就是一個資源的配置設定器,比如cpu子系統是控制cpu時間配置設定的。

可以使用lssubsys -al來列出系統支援多少種子系統,和使用ls /sys/fs/cgroup/ (ubuntu)來顯示已經挂載的子系統:

Linux的Cgroup為什麼要有cgroup概念如何安裝cgroup如何為cgroup配置設定限制的資源

可以看到這裡的幾個子系統,比如cpu是控制cpu時間片的,memory是控制記憶體使用的。

apt-get install cgroup-bin

首先明白下,是先挂載子系統,然後才有control group的。意思就是比如想限制某些程序的資源,那麼,我會先挂載memory子系統,然後在memory子系統中建立一個cgroup節點,在這個節點中,将需要控制的程序id寫入,并且将控制的屬性寫入。

拿memory子系統為例:

通過檢視cgroup的配置檔案:

cat /etc/cgconfig.conf

Linux的Cgroup為什麼要有cgroup概念如何安裝cgroup如何為cgroup配置設定限制的資源

看到memory子系統是挂載在目錄/sys/fs/cgroup/memory下

進入這個目錄

建立一個檔案夾,就建立了一個control group了

mkdir test

發現test目錄下自動建立了許多檔案:

Linux的Cgroup為什麼要有cgroup概念如何安裝cgroup如何為cgroup配置設定限制的資源

這些檔案的含義如下:

Linux的Cgroup為什麼要有cgroup概念如何安裝cgroup如何為cgroup配置設定限制的資源

于是,限制記憶體使用我們就可以設定memory.limit_in_bytes

Linux的Cgroup為什麼要有cgroup概念如何安裝cgroup如何為cgroup配置設定限制的資源

将一個程序加入到這個test中

echo $$ > tasks

這樣就将目前這個終端程序加入到了記憶體限制的cgroup中了。

将這個cgroup删除隻要删除目錄就行了

rmdir test

本文轉自軒脈刃部落格園部落格,原文連結:http://www.cnblogs.com/yjf512/p/3298582.html,如需轉載請自行聯系原作者

繼續閱讀