003 Linux的Cgroup《例項詳解》

2021-09-07 00:26:27 字數 1829 閱讀 4863

為什麼要有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)來顯示已經掛載的子系統:

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

apt-get install cgroup-bin

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

拿memory子系統為例:

通過檢視cgroup的配置檔案:

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

進入這個目錄

建立乙個資料夾,就建立了乙個control group

mkdir test

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

這些檔案的含義如下:

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

將乙個程序加入到這個test中

echo $$ > tasks

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

將這個cgroup刪除只要刪除目錄就行了

rmdir test

(003)linux基礎函式

1 常見的c庫io函式有 fopen fclose fread fwrite fgets fputs fscanf fprintf fseek fgetc fputc flush等。2 原理 其中,與linux系統函式不同的是 1 read 函式 2 write 函式 1 open 函式 其中,o ...

003Linux網路配置

基於vmware中的linux系統 1 vmware提供了三種網路工作模式 1 bridged 橋接模式 橋接模式,顧名思義,得有橋,誰充當橋呢?當然是主機,安裝了虛擬機器的主機,充當的是虛擬機器與外部網路的橋。主機上面安裝了虛擬機器,如果採用橋接模式,虛擬機器將能夠通過主機訪問到外部的網路,外部的...

003 linux基本目錄介紹

普通檔案 如文字檔案 c語言元 shell指令碼 二進位制的可執行檔案等,可用cat less more vi emacs來察看內容,用mv來改名。目錄檔案 包括檔名 子目錄名及其指標。它是linux儲存檔名的唯一地方,可用ls列出目錄檔案。連線檔案 是指向同一索引節點的那些目錄條目。用ls來檢視是...