Cgroups控制cup,內存,io資源示例html
http://www.cnblogs.com/yanghuahui/p/3751826.html學習
Docker組成 LXC+AUFS LXC=cgroup+namespace+chroorui
libcgroupgoogle
http://libcg.sourceforge.net/html/index.htmlspa
Cgroup全稱control groups,可用來限制、記錄、隔離進程組的物理資源,下面小編將針對Cgroup在Linux上的安裝和配置作個詳細介紹,對Cgroup感興趣的朋友能夠來學習下。操作系統
爲何要有cgroup.net
Linux系統中常常有個需求就是但願能限制某個或者某些進程的分配資源。也就是能完成一組容器的概念,在這個容器中,有分配好的特定比例的cpu時間,IO時間,可用內存大小等。因而就出現了cgroup的概念,cgroup就是controller group,最初由google的工程師提出,後來被整合進Linux內核中。htm
Cgroup是將任意進程進行分組化管理的Linux內核功能。cgroup自己提供將進程進行分組化管理的功能和接口的基礎結構。blog
然後的Android操做系統也就憑藉着這個技術,爲每一個應用程序分配不一樣的cgroup,將每一個程序進行隔離,達到了一個應用程序不會影響其餘應用程序環境的目的。繼承
概念
task:
一個進程
control group:
控制族羣,按照某種標準劃分的進程組
hierarchy:
層級,control group能夠造成樹形的結構,有父節點,子節點,每一個節點都是一個control group,子節點繼承父節點的特定屬性。
subsystem:
子系統。
子系統就是資源控制器,每種子系統就是一個資源的分配器,好比cpu子系統是控制cpu時間分配的。
可使用lssubsys -al來列出系統支持多少種子系統,和使用ls /sys/fs/cgroup/ (Ubuntu)來顯示已經掛載的子系統:
能夠看到這裏的幾個子系統,好比cpu是控制cpu時間片的,memory是控制內存使用的。
如何安裝cgroup
安裝cgroup:
apt-get install cgroup-bin
如何爲cgroup分配限制的資源
首先明白下,是先掛載子系統,而後纔有control group的。意思就是好比想限制某些進程的資源,那麼,我會先掛載memory子系統,而後在memory子系統中建立一個cgroup節點,在這個節點中,將須要控制的進程id寫入,而且將控制的屬性寫入。
拿memory子系統爲例:
經過查看cgroup的配置文件:
cat /etc/cgconfig.conf
看到memory子系統是掛載在目錄/sys/fs/cgroup/memory下
進入這個目錄
建立一個文件夾,就建立了一個control group了
mkdir test
發現test目錄下自動建立了許多文件:
這些文件的含義以下:
因而,限制內存使用咱們就能夠設置memory.limit_in_bytes
將一個進程加入到這個test中
echo $$ >> tasks (tasks是test目錄下的一個文件)
這樣就將當前這個終端進程加入到了內存限制的cgroup中了。
將這個cgroup刪除只要刪除目錄就好了
rmdir test
上面就是Linux安裝及配置Cgroup的方法介紹了,本文主要介紹了爲Cgroup分配限制資源的方法,以及Cgroup的安裝和做用。