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

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

CYUN(29元/月)美国、香港、台湾、日本、韩国CN2,续费原价

关于CYUN商家在之前有介绍过一次,CYUN是香港蓝米数据有限公司旗下的云计算服务品牌,和蓝米云、蓝米主机等同属该公司。商家主要是为个人开发者用户、中小型、大型企业用户提供一站式核心网络云端部署服务,促使用户云端部署化简为零,轻松快捷运用云计算。目前,CYUN主要运营美国、香港、台湾、日本、韩国CN2线路产品,包括云服务器、站群服务器和独立服务器等。这次看到CYUN夏季优惠活动发布了,依然是熟悉的...

ParkInHost - 俄罗斯VPS主机 抗投诉 55折,月付2.75欧元起

ParkInHost主机商是首次介绍到的主机商,这个商家是2013年的印度主机商,隶属于印度DiggDigital公司,主营业务有俄罗斯、荷兰、德国等机房的抗投诉虚拟主机、VPS主机和独立服务器。也看到商家的数据中心还有中国香港和美国、法国等,不过香港机房肯定不是直连的。根据曾经对于抗投诉外贸主机的了解,虽然ParkInHost以无视DMCA的抗投诉VPS和抗投诉服务器,但是,我们还是要做好数据备...

HostKvm四月优惠:VPS主机全场八折,香港/美国洛杉矶机房$5.2/月起

HostKvm是一家成立于2013年的国外主机服务商,主要提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。本月商家针对全场VPS主机提供8折优惠码,优惠后美国洛杉矶VPS月付5.2美元起。下面列出几款不同机房VPS主机产品配置信息。套餐:美国US-Plan0CPU:1cores内存:1GB硬...

linux内存管理为你推荐
美国主机租用租用美国服务器有什么优势?免费虚拟空间有国内免费虚拟主机空间吗cm域名注册cm域名是什么含义?价格是多少?注册地址是多少?有什么投资价值?已备案域名查询如何查询网站的域名是否已经备案asp主机空间asp空间是什么asp主机空间asp空间是什么域名主机域名和主机名之间的区别是什么美国网站空间购买美国网站空间使用会不会麻烦呢,网站空间购买企业网站空间购买的网站空间具体需要多大的合适?网站空间价格1M网站空间是多少钱
工信部域名备案系统 n点虚拟主机管理系统 3322免费域名 主机测评 美国独立服务器 漂亮qq空间 128m内存 512au 赞助 什么是服务器托管 服务器合租 百度云1t 免费私人服务器 无限流量 cloudlink 独立主机 乐视会员免费领取 netvigator nnt 脚本大全 更多