创建仓库

This commit is contained in:
2025-12-11 07:24:36 +08:00
commit 0d81c1792d
128 changed files with 15104 additions and 0 deletions

View File

@@ -0,0 +1,77 @@
---
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
```