调用Linux 内存管理:Kmem_cache_init

linux内存管理  时间:2021-01-15  阅读:()

Linux内存管理 Kmem_cache_init

之前多多少少接触过cache之类的东西总觉的很神秘 当然cache 就是为了读写内存更高效。 比如查看meminfo或者slabinfo的时候你是否真的对内存机制理解的很清晰 参考内核l inux

3.8.13

我们看看调用它的函数接口

这个函数在start_kernel里调用.下面我们就看看kmem_cache_init();//默认slab分配器第一行来自一个全局的指针变量即为创建第一个cache

 kmem_cache

在mm/slab_common.c中struct kmem_cache*kmem_cache;

创建的所有cache都会挂在LIST_HEAD(slab_caches);这个全局链表上.在cat/proc/slabinfo可以查看》 这里可以看看struct kmem_cache在slab_def.h中

这个结构体里面几个关键的元素之前在kmal loc里已经说到了。 而kmem_cache_boot则是注释解释的已经很清晰了.

而setup_nodel ists_pointer的作用就是把struct kmem_cache里array 指针地址存放在nodel ists.目的是为了便于操作指针.对于一致性内存访问inode只有一个.

它是slab.c中静态全局变量kmem_l ist3_init初始化slab的三个链表slabs_ful l 、 slabs_partial、slabs_free.为什么初始化这个和cache

组成结构有关系可以看个图

这里CACHE_CACHE在文件的开头部分被定义为0.

接着就要开始了真正的创建cache的工作并且给出了初始化步骤和说明

首先创建第一个cache它名为kmem_cache并且kmem_cache指针变量指向

了kmem_cache_boot.下面我们看看create_boot_cache函数

而它接着调用了__kmem_cache_create这是最关键的函数

它里面有个很有趣的函数很关键的一个函数它泄露了slab具体管理obj的布局和方法.

经过上面的初始化和设置最后调用setup_cpu_cache就完成了一个创建cache的工作.接着进行第2、 3步的工作

这里在说一下cache_names和mal loc_sizes

这里就不扩展开了.create_kmal loc_cache实际上是调用create_boot_cache.把kernel预定义的通用cache创建一遍.之后我们进入第四步、第5步

最后把slab_state状态设置为up即已经可以正常使用了。虽然上面大部分是代码具体申请内存的流程前面kmal loc已经讲过了。仅仅是为了弄明白cache到底是个什么玩意 以及如何初始化的。

在kmem_cache_init后还有一个kmem_cache_init_late函数.它主要是调用

了enable_cpucache和注册一个cpu通知连

还记不记得之前我们分析batchcount的时候的矛盾点

它会根据obj size计算l imit值再去计算batchcount的值.

这个只是一个小小的开始吧 内存管理本来就博大精深 只有遇到具体问题具体分析来加深理解了.

无忧云:洛阳BGP云服务器低至38.4元/月起;雅安高防云服务器/高防物理机优惠

无忧云怎么样?无忧云,无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点。一、无忧云官网点击此处进入无忧云官方网站二...

ThomasHost(月付5美元)美国/法国/英国/加拿大KVM,支持Windows

ThomasHost域名注册自2012年,部落最早分享始于2016年,还算成立了有几年了,商家提供基于KVM架构的VPS,数据中心包括美国、法国、英国、加拿大和爱尔兰等6个地区机房,VPS主机套餐最低2GB内存起步,支持Windows或者Linux操作系统,1Gbps端口不限制流量。最近商家提供了一个5折优惠码,优惠后最低套餐月付5美元起。下面列出部分套餐配置信息。CPU:1core内存:2GB硬...

2021年全新Vultr VPS主机开通云服务器和选择机房教程(附IP不通问题)

昨天有分享到"2021年Vultr新用户福利注册账户赠送50美元"文章,居然还有网友曾经没有注册过他家的账户,薅过他们家的羊毛。通过一阵折腾居然能注册到账户,但是对于如何开通云服务器稍微有点不对劲,对于新人来说确实有点疑惑。因为Vultr采用的是预付费充值方式,会在每月的一号扣费,当然我们账户需要存留余额或者我们采用自动扣费支付模式。把笔记中以前的文章推送给网友查看,他居然告诉我界面不同,看的不对...

linux内存管理为你推荐
中文域名注册查询中文.com域名是什么,怎么注册免费国内空间跪求国内最好的免费空间!网站服务器租用哪些网站适合独立服务器租用?价格方面怎么样?com域名注册com域名是永久注册的吗虚拟主机控制面板如何利用虚拟主机控制面板对网站进行管理美国虚拟主机购买我公司需要购买美国的虚拟主机。但是为什么有的海外主机很便宜!有的却很贵呢。 质量如何区分!有没办法去安徽虚拟主机安徽众仁联合科技有限公司是做什么的啊??华众虚拟主机管理系统华众虚拟主机管理系统请问。华众 虚拟主机管理系统 这个问题 怎么解决 。就是后台可以开通虚拟主机 没有问题,但是 删除虚拟主机 后台显示删除成功的,但是实际在服务器上 文件夹 ftp iis站点 都没有被删除 是什么问题二级域名一级域名与二级域名有啥区别域名邮箱邮箱域名是什么
老域名 免费域名跳转 优惠码 l5520 wordpress技巧 sub-process win8升级win10正式版 骨干网络 创梦 刀片服务器是什么 hostloc 域名接入 cdn加速是什么 百度云加速 云营销系统 免费的域名 申请免费空间 ledlamp 测速电信 免费个人网页 更多