3.1 KiB
tags, aliases, date created, date modified
| tags | aliases | date created | date modified | |
|---|---|---|---|---|
|
星期三, 十一月 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)。雷达实时处理业务通常强制要求设为never或madvise。 -
探测命令:
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(内存换出)都是致命的,会导致毫秒级的处理中断。该值应被严格限制在
0或10以内。 -
探测命令:
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