Linux buddyinfo

pi@raspberrypi:~$ cat /proc/buddyinfo

Node 0, zone Normal 41 19 14 8 7 3 1 1 4 2 102

/proc/buddyinfo 输出是 Linux 内核中 伙伴系统(Buddy Allocator) 的内存分配状态。它是内核用来管理 页框(page frame)分配 的一种机制,尤其用于分配连续的物理页。

📘 什么是 Buddy Allocator?

Linux 将物理内存划分为多个阶层(order),每个阶层表示 2ⁿ 个连续页:

Order页数大小(以 4KB 页为单位)
014 KB
128 KB
2416 KB
3832 KB
.........
1010244 MB

当内核需要分配连续的物理页时,它会从这些阶层中寻找合适的块。

🧾 你的输出解析

Node 0, zone   Normal     41     19     14      8      7      3      1      1      4      2    102
  • Node 0:你的系统只有一个 NUMA 节点(树莓派是单节点架构)

  • zone Normal:这是用于普通内存分配的区域(非 DMA 或高端内存)

  • 后面的数字对应每个阶层(order 0 到 order 10)中当前可用的块数量:

Order可用块数总大小(每块)
0414 KB
1198 KB
21416 KB
3832 KB
4764 KB
53128 KB
61256 KB
71512 KB
841 MB
922 MB
101024 MB ✅

📊 总结分析

  • 低阶块(order 0–4):数量较多,适合小内存分配。

  • 高阶块(order 10):你有 102 个 4MB 块,说明系统当前内存碎片不严重,仍能分配大块连续内存。

  • 中阶块(order 5–9):数量较少,可能是内核或驱动程序已经使用了部分中等大小的连续内存。

🧠 为什么这很重要?

  • 如果高阶块数量为 0,系统可能无法分配大块内存,会导致某些驱动或模块加载失败。

  • Buddy Allocator 不能合并非伙伴页,因此内存碎片会影响性能和稳定性。

  • 你可以通过观察这个文件来判断系统是否需要重启或优化内存使用

/proc/buddyinfo:伙伴系统内存分配状态

这个文件显示的是内核的 伙伴系统(Buddy Allocator) 的内存块分布情况。它用于管理页框分配,尤其是连续物理页的分配。

示例输出:

Node 0, zone   Normal    110     17     11     13      5      5      2      1      4      2    102
  • Node 0, zone Normal:表示这是单节点系统(树莓派),使用的是“Normal”内存区域。

  • 后面的数字代表每个阶层(order)中可用的页块数量:

    • order 0:单页(4KB)

    • order 1:2 页(8KB)

    • order 2:4 页(16KB)

    • 依此类推,直到 order 10(1024 页 = 4MB)

这可以帮助你判断系统是否容易出现内存碎片或分配失败。

🧩 /proc/vmallocinfo:vmalloc 区域分配详情

这个文件列出了所有通过 vmalloc() 分配的虚拟内存区域。你需要 sudo 权限才能访问它。

示例片段:

0x7a02c5ac-0xda825f0f  462848 load_module+0x9b4/0x266c pages=112 vmalloc
  • 地址范围:虚拟地址起止

  • 大小(字节):如 462848 表示约 452 KB

  • 来源函数:如 load_module+0x9b4/0x266c 表示该区域由模块加载时分配

  • pages=112:分配了 112 个页(约 448 KB)

  • 类型:vmalloc 表示使用了 vmalloc 而非 kmalloc

这些区域通常用于模块、驱动程序、内核数据结构等需要连续虚拟地址但不要求连续物理地址的场景。

🔍 你可以进一步探索的内容

  • 查看模块使用的内存

    bash

    lsmod
    cat /proc/modules
    
  • 查看 slab 分配器状态

    bash

    cat /proc/slabinfo
    
  • 查看物理内存分布

    bash

    cat /proc/zoneinfo
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值