Files
Inbox/系统基座文件/1/1.1/1.1.2 内存子系统策略 (Memory Subsystem Policy).md
2025-12-11 07:24:36 +08:00

3.1 KiB
Raw Blame History

tags, aliases, date created, date modified
tags aliases date created date modified
1.1.2 内存子系统策略 (Memory Subsystem Policy)
星期三, 十一月 19日 2025, 3:48:55 下午 星期三, 十一月 19日 2025, 3:49:00 下午

1.1.2 内存子系统策略 (Memory Subsystem Policy)

1. 透明大页状态 (Transparent HugePages Status)

  • 关键性P0

  • 预期信息:查看当前状态是 [always] 还是 [never]。在 64KB 基础页宽的系统上THP 机制更为激进,极易导致内存碎片化和不可预测的内核态 CPU 占用sys cpu high。雷达实时处理业务通常强制要求设为 nevermadvise

  • 探测命令:

    cat /sys/kernel/mm/transparent_hugepage/enabled
    always [madvise] never
    

2. 标准大页尺寸 (Default Hugepage Size)

  • 关键性P1

  • 预期信息:确认系统默认的大页物理尺寸。在 x86 (4KB 页) 上通常是 2MB但在 64KB 页宽的 aarch64 系统上,一级大页通常是 512MB。这直接决定了驱动程序(如 DMA 缓冲)申请连续物理内存时的对齐粒度和最小单元。

  • 探测命令:

    grep "Hugepagesize" /proc/meminfo
    Hugepagesize:     524288 kB
    

3. 大页内存预留量 (Total HugePages)

  • 关键性P1

  • 预期信息:检查系统是否在启动阶段通过 Boot Args 预留了物理大页。若显示 0,说明完全依赖运行时分配。对于从 ADC 采集的高速数据流,运行时动态申请大页极易失败,必须确认是否有静态预留。

  • 探测命令:

    grep "HugePages_Total" /proc/meminfo
    HugePages_Total:       0
    

4. 虚拟内存交换倾向 (Swappiness)

  • 关键性P1

  • 预期信息:数值范围 0-100。对于实时雷达系统任何形式的 Swap-out内存换出都是致命的会导致毫秒级的处理中断。该值应被严格限制在 010 以内。

  • 探测命令:

    cat /proc/sys/vm/swappiness
    10
    

5. 内存过载分配策略 (Overcommit Memory Policy)

  • 关键性P2

  • 预期信息:返回值为 0 (启发式), 1 (总是允许), 或 2 (严格限制)。GPGPU 驱动初始化时常需预分配巨大的虚拟地址空间,若此值为 2 (禁止过载) 且无足够 Swap驱动初始化cudaMalloc 等价调用)可能会直接崩溃。

  • 探测命令:

    cat /proc/sys/vm/overcommit_memory
    0
    

6. 物理内存全景 (Physical Memory Overview)

  • 关键性P2

  • 预期信息:获取 Total(物理总内存)与 Available(实际可用)。需特别关注在 64KB 页系统下内核自身的数据结构Page Tables会消耗比 x86 更多的内存,需评估剩余内存是否满足信号处理算法的峰值需求。

  • 探测命令:

    free -h
        total        used        free      shared  buff/cache   available
    Mem:           62Gi       2.8Gi        58Gi        81Mi       1.2Gi        54Gi
    Swap:         8.0Gi          0B       8.0Gi