Cgroup 核心 API¶
裝置記憶體 Cgroup API (dmemcg)¶
-
bool dmem_cgroup_state_evict_valuable(struct dmem_cgroup_pool_state *limit_pool, struct dmem_cgroup_pool_state *test_pool, bool ignore_low, bool *ret_hit_low)¶
檢查是否應從 test_pool 中驅逐
引數
struct dmem_cgroup_pool_state *limit_pool達到限制的池
struct dmem_cgroup_pool_state *test_pool要測試的池
bool ignore_low是否必須遵守低水位線。
bool *ret_hit_low指向是否考慮低水位線的指標。
描述
如果可以從 test_pool 中驅逐,此函式返回 true,否則返回 false。當返回 false 且 ignore_low 為 false 時,ret_hit_low 可能會被設定為 true,表示此函式可以重新嘗試,並將 ignore_low 設定為 true。
返回
bool
-
void dmem_cgroup_unregister_region(struct dmem_cgroup_region *region)¶
登出之前註冊的區域。
引數
struct dmem_cgroup_region *region要登出的區域。
描述
此函式撤銷 dmem_cgroup_register_region 的效果。
-
struct dmem_cgroup_region *dmem_cgroup_register_region(u64 size, const char *fmt, ...)¶
為裝置 cgroup 註冊區域。
引數
u64 size要註冊區域的大小,以位元組為單位。
const char *fmt要註冊的區域引數
...可變引數
描述
此函式在 dmem cgroup 中註冊一個具有給定名稱的節點。呼叫此函式後,該區域可用於分配。
返回
成功時返回 NULL 或結構體,失敗時返回 PTR_ERR。
-
void dmem_cgroup_pool_state_put(struct dmem_cgroup_pool_state *pool)¶
丟棄對 dmem_cgroup_pool_state 的引用
引數
struct dmem_cgroup_pool_state *pooldmem_cgroup_pool_state
描述
呼叫此函式以丟棄對 dmem_cgroup_try_charge() 返回的限制池的引用。
-
void dmem_cgroup_uncharge(struct dmem_cgroup_pool_state *pool, u64 size)¶
解除池的費用。
引數
struct dmem_cgroup_pool_state *pool要解除費用的池。
u64 size要解除費用的大小。
描述
撤銷 dmem_cgroup_try_charge 的效果。必須以返回的池作為引數呼叫,並且 **index** 和 **size** 相同。
-
int dmem_cgroup_try_charge(struct dmem_cgroup_region *region, u64 size, struct dmem_cgroup_pool_state **ret_pool, struct dmem_cgroup_pool_state **ret_limit_pool)¶
嘗試對區域進行新的分配計費。
引數
struct dmem_cgroup_region *region要計費的 dmem 區域
u64 size要計費的大小(位元組)。
struct dmem_cgroup_pool_state **ret_pool成功分配後,被計費的池。
struct dmem_cgroup_pool_state **ret_limit_pool分配失敗時,限制池。
描述
此函式對 **region** 區域按 **size** 位元組大小進行計費。
如果函式成功,將設定 **ret_pool**,在撤銷分配時必須將其傳遞給 dmem_cgroup_uncharge()。
當此函式因 -EAGAIN 失敗且 **ret_limit_pool** 不為空時,它將被設定為達到限制的池。這可以用作 dmem_cgroup_evict_valuable() 的引數進行驅逐。此引用必須使用 **dmem_cgroup_pool_state_put()** 釋放。
返回
成功時返回 0,達到限制時返回 -EAGAIN,失敗時返回負錯誤碼。