linux 内核的 lru_list 的结构
2023-12-20 22:58:44
在linux的slab分配的入口slab_alloc有一个传入参数lru,它的作用是使每个slab对象在unused,但可能后面继续使用的时候,不需要free,可以先放在lru_list上。lru_list的结构为:
struct list_lru {
struct list_lru_node *node;
struct list_head list;
int shrinker_id;
bool memcg_aware;
struct xarray xa;
};
其中node是一个数组,存了每个numa node的lru_list头,这个结构只在不支持memory group 时(memcg_aware = false)使用。
在支持memory group的场景(memcg_aware = true),每个每个memory group都分配了一个lru_list数组,数组中每个元素是这个对象对应的memory group在一个numa node上的lru_list的头。memory group id 与lru_list数组地址的映射表存在xa上,
xa是一个前缀树的实现(可以参考:linux中xarray与maple结构简析)
文章来源:https://blog.csdn.net/qq_37517281/article/details/135114945
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!