cgroup初步分析(1)

2021-06-21 11:26:35 字數 1028 閱讀 1996

cgroup的功能和作用不廢話,直說一下cgroup的幾條設計準則,有了幾條設計準則的約束,就比較容易理解其中的資料結構和函式,至於源**cgroup.c,無非是兩個內容,一是task_struct、cgroup、css_set三個資料結構互相關聯,而是cgroup檔案系統的實現。

先看設計準則:

問題1:如何通過乙個

task找到它在某個層級(

hierarchy)的

cgroup?

下面的結構可以說明這種尋找關係: 方法1

:首先從

task.

cgroups

找到css_set

結構,從

css_set

結構中找到

css_set

結構對應的所有的

cgroup

,從中找出屬於指定層級(

hierarchy)的

cgroup

(每個層級都有乙個唯一的

top cgroup

通過對比

cgroup

cgroup

來判斷是否屬於

該層級)。2:

首先從task.

cgroups

找到css_set

結構,從

css_set結構的

struct cgroup_subsys_state *subsys[cgroup_subsys_count]

元素中找到

每個子系統狀態的結構

struct cgroup_subsys_state變數,

其中有個指標,指向該子系統對應的

cgroup

。問題2:如何通過乙個cgroup

找到它目錄下所有的task?

cgroup

通過cg_cgroup_link

連線了多個css_set

結構變數,每個結構變數都有乙個tasks

的鍊錶,上面是該css_set

對應的所有tasks

。如圖所示:

給主人留下些什麼吧!~~

Cgroup框架分析

cgroups框架中涉及了大量的結構體,並且嵌入了很多list head以及hlist node等資料結構,目的是將這些資料結構鏈結在一起,無論從任何乙個結構體出發都可以很好的找到自己想要的目標結構體,因此核心中也出現了大量的短小精悍的inline funtion,這些function基本只有一兩句...

fqueue初步分析

fqueue是國產的乙個類似memcacheq,kestrel這樣的支援memcached協議的輕量級開源mq。它的專案主頁 介紹和特點都可以看主頁,我就不廢話了。今天老大提到,co了原始碼看了下,寫個初步分析報告。首先是它的儲存層,主要是乙個fqueue這麼乙個抽象佇列,內部實現是fsqueue,...

溢位初步(1)

溢位初步 1 2006 11 28 07 43 41 發表 2006 11 24 22 28 00 第 緩衝區溢位 審查 是否存在緩衝區溢位時,將審查工作主要放在通過 p invoke 或者 com 互操作層呼叫非託管 的 上。託管 本身受到緩衝區溢位攻擊的可能性很小,因為無論是否訪問陣列,系統都將...