调用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:洛杉矶/丹佛/荷兰高防服务器;1G独享$70/10G共享$240/10G独享$800

sharktech怎么样?sharktech (鲨鱼机房)是一家成立于 2003 年的知名美国老牌主机商,又称鲨鱼机房或者SK 机房,一直主打高防系列产品,提供独立服务器租用业务和 VPS 主机,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹,所有产品均提供 DDoS 防护。不知道大家是否注意到sharktech的所有服务器的带宽价格全部跳楼跳水,降幅简直不忍直视了,还没有见过这么便宜的独立服...

HostKvm($4.25/月),俄罗斯CN2带宽大升级,俄罗斯/香港高防限量5折优惠进行中

HostKvm是一家成立于2013年的国外VPS服务商,产品基于KVM架构,数据中心包括日本、新加坡、韩国、美国、俄罗斯、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。本月,商家旗下俄罗斯、新加坡、美国、香港等节点带宽进行了大幅度升级,俄罗斯机房国内电信/联通直连,CN2线路,150Mbps(原来30Mbps)带宽起,目前俄罗斯和香港高防节点5折骨折码继续优惠中...

创梦网络-新上雅安电信200G防护值内死扛,无视CC攻击,E5 32核高配/32G内存/1TB SSD/100Mbps独享物理机,原价1299,年未上新促销6折,仅779.4/月,续费同价

创梦网络怎么样,创梦网络公司位于四川省达州市,属于四川本地企业,资质齐全,IDC/ISP均有,从创梦网络这边租的服务器均可以****,属于一手资源,高防机柜、大带宽、高防IP业务,另外创梦网络近期还会上线四川眉山联通、广东优化线路高防机柜,CN2专线相关业务。广东电信大带宽近期可以预约机柜了,成都优化线路,机柜租用、服务器云服务器租用,适合建站做游戏,不须要在套CDN,全国访问快,直连省骨干,大网...

linux内存管理为你推荐
国际域名注册如何申请国际域名注册网站空间租赁网站空间必须通过租用得到吗?已备案域名查询如何查询已备案域名是不是万网/阿里云接入的备案域名备案查询网站备案查询中文域名注册查询中文域名注册怎么查询com域名注册com域名是永久注册的吗查询ip如何查找IP地址?便宜的虚拟主机免费、便宜的虚拟主机哪里有?要好用的 ,速度快的免费网站空间免费网站空间哪个好北京网站空间自己弄一个简单的网站,大概需要办理什么,大概需要多少钱?
域名投资 个人域名注册 租服务器价格 linuxapache虚拟主机 sugarhosts 密码泄露 windows2003iso 轻量 ca4249 柚子舍官网 最好的免费空间 河南移动网 免费申请个人网站 vip域名 国外视频网站有哪些 空间登录首页 宏讯 便宜空间 rewritecond 美国服务器 更多