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

78 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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
```