41、Linux内核Slab分配器详解

Linux内核Slab分配器详解

1. 理解内核Slab分配器

Slab分配器或Slab缓存位于页分配器之上。它的存在主要基于两个目的:
- 对象缓存 :作为常见“对象”的缓存,这些对象是Linux内核中频繁分配的数据结构。内核在启动时会预先分配大量对象到多个Slab缓存中,当内核代码或设备驱动需要这些对象的内存时,直接向Slab分配器请求。如果对象已缓存,分配几乎是即时的,释放时也是如此。例如,网络和块I/O子系统的关键代码路径对性能要求高,网络栈的套接字缓冲区 sk_buff 、块层的 biovec 以及核心的 task_struct 数据结构等都会被内核自动缓存。此外,文件系统元数据结构(如 inode dentry 结构)、内存描述符 struct mm_struct 等也会预先分配到Slab缓存中。
- 减少页分配器的高浪费(内部碎片) :通过提供小的、大小合适的缓存,这些缓存通常是页的片段,来减少页分配器的内部碎片。

2. 查看Slab缓存的当前状态

可以通过多种方式查看Slab缓存的当前状态,如通过 proc sysfs 文件系统查看原始视图,或使用各种前端实用工具(如 smem vmstat slabtop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值