pi@raspberrypi:~$ sudo cat /proc/pagetypeinfo
Page block order: 10
Pages per block: 1024
Free pages count per migrate type at order 0 1 2 3 4 5 6 7 8 9 10
Node 0, zone Normal, type Unmovable 1 3 4 2 0 1 1 0 0 0 0
Node 0, zone Normal, type Movable 161 51 18 5 0 1 1 1 1 1 88
Node 0, zone Normal, type Reclaimable 0 2 0 2 3 1 1 1 1 1 0
Node 0, zone Normal, type HighAtomic 0 0 0 0 0 0 0 0 0 0 0
Node 0, zone Normal, type CMA 1 0 2 1 1 0 0 0 1 0 15
Node 0, zone Normal, type Isolate 0 0 0 0 0 0 0 0 0 0 0
Number of blocks type Unmovable Movable Reclaimable HighAtomic CMA Isolate
Node 0, zone Normal 1
你查看的 /proc/pagetypeinfo 是 Linux 内核用于内存分配的详细信息,特别是关于页面迁移类型(migrate types)和每种类型在不同大小(order)下的空闲页面数量。这对于分析内存碎片、页面分配失败、性能瓶颈等非常有帮助。
下面是详细的中文解释:
📦 页面块与 Order 的概念
-
Page block order: 10:每个页面块由 210=10242^{10} = 1024 个页面组成。
-
每个页面大小是 4KB,所以一个页面块是 4MB。
-
Order 0 到 10:表示连续页面的数量,例如:
-
Order 0:1 页(4KB)
-
Order 1:2 页(8KB)
-
Order 2:4 页(16KB)
-
...
-
Order 10:1024 页(4MB)
-
🧠 migrate type(页面迁移类型)
Linux 将页面分为几种类型,以便在内存回收、压缩、分配时更高效:
| 类型 | 含义 |
|---|---|
Unmovable | 不可移动页面(如内核数据结构) |
Movable | 可移动页面(如用户空间数据) |
Reclaimable | 可回收页面(如缓存、Slab) |
HighAtomic | 高优先级原子分配(用于中断等) |
CMA | 连续内存分配器使用的页面 |
Isolate | 被隔离的页面(用于迁移或调试) |
📊 当前空闲页面分布(按类型和大小)
你看到的是每种类型在不同 order 下的空闲页面数量。例如:
text
Node 0, zone Normal, type Movable
Order 0: 161 页
Order 10: 88 页(即 88 个连续的 4MB 块)
这说明系统中有不少可移动页面,利于内存压缩和大块分配。
🧮 页面块数量统计
text
Number of blocks type
Unmovable: 15
Movable: 188
Reclaimable: 5
CMA: 16
这表示系统中大多数页面块是 Movable 类型,有利于内存整理和大页分配。
✅ 总结与用途
-
系统当前 内存碎片不严重,有不少高 order 的连续页面(如 Order 10 的 Movable 有 88 个)。
-
CMA 区域也有一定数量的连续页面,适合需要大块物理内存的设备(如摄像头、DMA)。
-
没有
HighAtomic页面,说明系统没有保留高优先级分配区域,可能是因为内存压力不大。
🔍 你可以用这些信息来:
-
分析为什么某些大内存分配失败(如
vmalloc或hugepages)。 -
判断是否需要调整 CMA 大小或页面迁移策略。
-
优化内核模块或驱动的内存使用方式。
5 188 5 0 16 0
2846

被折叠的 条评论
为什么被折叠?



