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

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

ShineServers(5美元/月)荷兰VPS、阿联酋VPS首月五折/1核1G/50GB硬盘/3TB流量/1Gbps带宽

优惠码50SSDOFF 首月5折50WHTSSD 年付5折15OFF 85折优惠,可循环使用荷兰VPSCPU内存SSD带宽IPv4价格购买1核1G50G1Gbps/3TB1个$ 9.10/月链接2核2G80G1Gbps/5TB1个$ 12.70/月链接2核3G100G1Gbps/7TB1个$ 16.30/月链接3核4G150G1Gbps/10TB1个$ 18.10/月链接阿联酋VPSCPU内存SS...

SugarHosts新增Windows云服务器sugarhosts六折无限流量云服务器六折优惠

SugarHosts糖果主机商我们较早的站长们肯定是熟悉的,早年是提供虚拟主机起家的,如今一直还在提供虚拟主机,后来也有增加云服务器、独立服务器等。数据中心涵盖美国、德国、香港等。我们要知道大部分的海外主机商都只提供Linux系统云服务器。今天,糖果主机有新增SugarHosts夏季六折的优惠,以及新品Windows云服务器/云VPS上线。SugarHosts Windows系统云服务器有区分限制...

wordpress外贸企业主题 wordpress高级全行业大气外贸主题

wordpress高级全行业大气外贸主题,wordpress通用全行业高级外贸企业在线询单自适应主题建站程序,完善的外贸企业建站功能模块 + 高效通用的后台自定义设置,更实用的移动设备特色功能模块 + 更适于欧美国外用户操作体验 大气简洁的网站风格设计 + 高效优化的网站程序结构,更利于Goolge等SEO搜索优化和站点收录排名。点击进入:wordpress高级全行业大气外贸主题主题价格:¥398...

linux内存管理为你推荐
虚拟主机代理个人适合代理虚拟主机的业务吗虚拟空间哪个好虚拟空间哪个好深圳网站空间深圳宝安网站设计,深圳网站空间,哪里做的最好???网站空间免备案哪里能找到免费、免备案的空间?上海虚拟主机上海哪个域名注册和虚拟主机IDC稳定可靠,价格合适?asp虚拟主机ASP源码上传到虚拟主机什么地方新加坡虚拟主机请问新网的虚拟主机靠谱吗?域名解析域名解析是什么意思为什么要域名解析?申请域名如何申请自己的域名?查域名如何通过ip查域名
国内最好的虚拟主机 广州服务器租用 服务器配置技术网 新加坡服务器 10t等于多少g lighttpd me空间社区 世界测速 天翼云盘 绍兴电信 上海电信测速 godaddy空间 宿迁服务器 国外代理服务器 好看的空间 万网服务器 小夜博客 架设代理服务器 winserver2008r2 美国服务器 更多