调用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的值.

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

Sharktech鲨鱼服务器商提供洛杉矶独立服务器促销 不限流量月99美元

Sharktech(鲨鱼服务器商)我们还是比较懂的,有提供独立服务器和高防服务器,而且性价比都还算是不错,而且我们看到有一些主机商的服务器也是走这个商家渠道分销的。这不看到鲨鱼服务器商家洛杉矶独立服务器纷纷促销,不限制流量的独立服务器起步99美元,这个还未曾有过。第一、鲨鱼机房服务器方案洛杉矶机房,默认1Gbps带宽,不限流量,自带5个IPv4,免费60Gbps / 48Mpps DDoS防御。C...

美国云服务器 1核 1G 100M 10G防御 39元/月 物语云计算

物语云计算(MonogatariCloud)是一家成立于2016年的老牌国人商家,主营国内游戏高防独服业务,拥有多家机房资源,产品质量过硬,颇有一定口碑。本次带来的是美国圣何塞 Equinix 机房的高性能I9-10980XE大带宽VPS,去程CN2GIA回程AS9929,美国原生IP,支持解锁奈飞等应用,支持免费安装Windows系统。值得注意的是,物语云采用的虚拟化技术为Hyper-V,资源全...

[黑五]ProfitServer新加坡/德国/荷兰/西班牙VPS五折,不限流量KVM月付2.88美元起

ProfitServer已开启了黑色星期五的促销活动,一直到本月底,商家新加坡、荷兰、德国和西班牙机房VPS直接5折,无码直购最低每月2.88美元起,不限制流量,提供IPv4+IPv6。这是一家始于2003年的俄罗斯主机商,提供虚拟主机、VPS、独立服务器、SSL证书、域名等产品,可选数据中心包括俄罗斯、法国、荷兰、美国、新加坡、拉脱维亚、捷克、保加利亚等多个国家和地区。我们随便以一个数据中心为例...

linux内存管理为你推荐
免费美国主机哪里有免费不限流量的国外主机代理主机电脑店卖组装机,怎么赚钱。便宜的虚拟主机哪里有便宜的国内虚拟主机?免费网站空间免费个人网站 空间深圳网站空间菜鸟问:网站空间如何选择,与空间的基本知识?网站空间免备案想买一个网站空间,大家给推荐个稳定的,速度的,免备案的?虚拟主机软件哪种虚拟机软件好用大连虚拟主机大连横展网络科技有限公司怎么样?天津虚拟主机天津有代理店掌柜的公司吗?在哪?长沙虚拟主机长沙双线虚拟主机湖南稳定双线虚拟主机湖南双线主机租用推荐一个?
济南域名注册 阿里云搜索 樊云 godaddy优惠券 论坛空间 韩国网名大全 nerds 服务器防火墙 免费网络 免费php空间 wordpress空间 免费的加速器 let crontab qq部落24-5 瓦工工资 海康流媒体服务器 usb大容量存储设备 789艺术 789开心网 更多