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 *pool
dmem_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,失败时返回负错误码。