【1000个Linux内存知识-013】-关于kmalloc分配内存使用的kmalloc cache的全局表kmalloc_caches和kc名字表kmalloc_info

术语

kmalloc cache:是slab分配器分配出来的节点,是一种kmem_cache。
kmem_cache: 是slab分配器提供的slab描述符或者说存在对象,kmem_cache下面管理着多个object提供分配。

前言

slab分配器提供使用者自己创建cache仓库,然后使用者自己从仓库中分配。通过查看/proc/slabinfo可以看到kmalloc有多个slab cache,或者说slab的零售商。比如kmalloc-32,从slab批发了kmalloc-32的内存,然后自己在kmalloc中去零售。
kmalloc-32就是一种kmem_cache,或者叫一个slab节点。
后文称为kmalloc零售商。kmalloc提供了13个零售商,用来处理不同大小的内存分配请求。

先看/proc/slabinfo中kmalloc

cat /proc/slabinfo |grep -E “malloc” |grep -v dma
在这里插入图片描述
可以看到有13个kmalloc零售商,或者叫slab节点,或者叫kmem_cache节点。

再看kmalloc的13个零售商在slab中如何创建的?

系统全局kmalloc cache名字表:kmalloc_info零售商列表

也就是零售商列表,包括零售商的名字和size
A table of kmalloc cache names and sizes
在这里插入图片描述

在这里插入图片描述

根据kmalloc_info创建slab管理节点的kmalloc_caches缓存表

slab管理节点是kmem cache
将kmalloc相关的kmem cache存入kmalloc_caches。
这里kmalloc_caches不是简单的缓存意思,他代表了slab里面的kmem cache,或者全称是 kmalloc_kmem_caches。
以kmalloc_cache本质是slab节点kmem_caches,只是在kmalloc的不同kmem_caches管理的obj大小不一样。
根据kmalloc_info零售商列表信息,为3种memory创建对应的零售商列表。
可见目前有3种内存mormal reclaim和dma,每种内存有13个零售商负责不同大小的内存分配。
在这里插入图片描述

再看关系

buddy伙伴系统
slub分配器-提供kmem_cache_create创建
slub节点0-kmalloc-8kmem cache
slub节点xslub节点x-kmem cache
slub节点n-kmalloc-32-kmem cache
obj0大小是不大于8字节的
objx大小是不大于8字节的
objn大小是不大于8字节的
NORMAL内存
kmalloc_caches表
RECLAIM内存
DMA内存

综述

  • slab分配的对象是kmem_cache
  • kmalloc使用slab分配的kmem_cache存到kmalloc_caches二维数组指针中
  • kmalloc_info存储kmalloc_caches的名字和size,使用kmalloc_info初始化kmalloc_caches之后,找slab分配kmem_cache的缓存
  • kmalloc的cache表是:kmallc_caches,存的是struct kmem_cache
  • 系统根据3种内存(normal reclaim dma),为每种内存分配13个kmem_cache,都存在kmalloc_caches表中
  • kmaloc_caches表累计有39个kmem_cache,每个kmem_cache的obj大小都是在固定范围比如 kmalloc-8都是1-8大小的内存单元
  • 和cpu cache关系后期补充完善
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值