78 lines
3.1 KiB
Markdown
78 lines
3.1 KiB
Markdown
---
|
||
tags:
|
||
aliases:
|
||
- 1.1.2 内存子系统策略 (Memory Subsystem Policy)
|
||
date created: 星期三, 十一月 19日 2025, 3:48:55 下午
|
||
date modified: 星期三, 十一月 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`。
|
||
- 探测命令:
|
||
|
||
```bash
|
||
cat /sys/kernel/mm/transparent_hugepage/enabled
|
||
always [madvise] never
|
||
```
|
||
|
||
**2. 标准大页尺寸 (Default Hugepage Size)**
|
||
|
||
- **关键性**:P1
|
||
- **预期信息**:确认系统默认的大页物理尺寸。在 x86 (4KB 页) 上通常是 2MB;但在 64KB 页宽的 aarch64 系统上,一级大页通常是 **512MB**。这直接决定了驱动程序(如 DMA 缓冲)申请连续物理内存时的对齐粒度和最小单元。
|
||
- 探测命令:
|
||
|
||
```bash
|
||
grep "Hugepagesize" /proc/meminfo
|
||
Hugepagesize: 524288 kB
|
||
```
|
||
|
||
**3. 大页内存预留量 (Total HugePages)**
|
||
|
||
- **关键性**:P1
|
||
- **预期信息**:检查系统是否在启动阶段通过 Boot Args 预留了物理大页。若显示 `0`,说明完全依赖运行时分配。对于从 ADC 采集的高速数据流,运行时动态申请大页极易失败,必须确认是否有静态预留。
|
||
- 探测命令:
|
||
|
||
```bash
|
||
grep "HugePages_Total" /proc/meminfo
|
||
HugePages_Total: 0
|
||
```
|
||
|
||
**4. 虚拟内存交换倾向 (Swappiness)**
|
||
|
||
- **关键性**:P1
|
||
- **预期信息**:数值范围 0-100。对于实时雷达系统,任何形式的 Swap-out(内存换出)都是致命的,会导致毫秒级的处理中断。该值应被严格限制在 `0` 或 `10` 以内。
|
||
- 探测命令:
|
||
|
||
```bash
|
||
cat /proc/sys/vm/swappiness
|
||
10
|
||
```
|
||
|
||
**5. 内存过载分配策略 (Overcommit Memory Policy)**
|
||
|
||
- **关键性**:P2
|
||
- **预期信息**:返回值为 `0` (启发式), `1` (总是允许), 或 `2` (严格限制)。GPGPU 驱动初始化时常需预分配巨大的虚拟地址空间,若此值为 `2` (禁止过载) 且无足够 Swap,驱动初始化(`cudaMalloc` 等价调用)可能会直接崩溃。
|
||
- 探测命令:
|
||
|
||
```bash
|
||
cat /proc/sys/vm/overcommit_memory
|
||
0
|
||
```
|
||
|
||
**6. 物理内存全景 (Physical Memory Overview)**
|
||
|
||
- **关键性**:P2
|
||
- **预期信息**:获取 `Total`(物理总内存)与 `Available`(实际可用)。需特别关注在 64KB 页系统下,内核自身的数据结构(Page Tables)会消耗比 x86 更多的内存,需评估剩余内存是否满足信号处理算法的峰值需求。
|
||
- 探测命令:
|
||
|
||
```bash
|
||
free -h
|
||
total used free shared buff/cache available
|
||
Mem: 62Gi 2.8Gi 58Gi 81Mi 1.2Gi 54Gi
|
||
Swap: 8.0Gi 0B 8.0Gi
|
||
```
|