5.6 KiB
5.6 KiB
tags, date created, date modified
| tags | date created | date modified |
|---|---|---|
| 星期三, 十一月 19日 2025, 3:57:04 下午 | 星期三, 十一月 19日 2025, 4:02:26 下午 |
1.1.4 系统级资源限制 (System Resource Limits)
1. 进程级资源配额 (Process Limits / ulimit)
-
关键性:P0
-
信息解析:
- 关键风险点:
max locked memory(锁定内存) 仅为 64KB。这是致命配置。雷达实时程序必须通过mlock()锁定物理内存以防止被 Swap 换出。此限制会导致锁定失败,进而引发不可控的缺页中断(Page Fault),破坏实时性。 - 有利配置:
open files(文件句柄) 已达 524288,core file size为unlimited,这有利于高并发 Socket 通信和崩溃现场保留。 - 注意点:
stack size为 8192KB (8MB)。对于深度递归或在栈上分配大型矩阵的 DSP 算法,可能面临 Stack Overflow 风险,建议在工程中调整或改为堆分配。
- 关键风险点:
-
探测命令与结果:
ulimit -a core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 255853 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 524288 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 255853 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
2. 系统级文件句柄上限 (System-wide File Handles)
-
关键性:P2
-
信息解析:
file-max约为 $9.22 \times 10^{18}$,nr_open约为10.7亿。- 结论:内核层面的文件描述符限制极其宽裕,不存在系统级瓶颈。任何 "Too many open files" 错误均将源自进程级(ulimit)限制。
-
探测命令与结果:
cat /proc/sys/fs/file-max 9223372036854775807cat /proc/sys/fs/nr_open 1073741816
3. 线程与进程容量 (Thread & Process Capacity)
-
关键性:P1
-
信息解析:
pid_max(419 万) 和threads-max(51 万) 提供了充足的 ID 空间。- 结论:系统支持高并发多线程模型,能够容纳雷达处理管线中密集的数据分发线程。
-
探测命令与结果:
cat /proc/sys/kernel/pid_max 4194304cat /proc/sys/kernel/threads-max 511707
4. 核心转储策略 (Core Dump Strategy)
-
关键性:P2
-
信息解析:
core_pattern被重定向至systemd-coredump。这意味着 Core 文件会被压缩并统一存储在/var/lib/systemd/coredump/,而非散落在当前目录。这对长期运行的无人值守系统有利,便于统一回溯。suid_dumpable为0。这意味着如果雷达主程序使用了setuid提权或文件 capabilities,崩溃时将不会产生 Core Dump。调试阶段建议临时设为1。
-
探测命令与结果:
cat /proc/sys/kernel/core_pattern |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %hcat /proc/sys/fs/suid_dumpable 0
5. 管道缓冲区限制 (Pipe Buffer Limits)
-
关键性:P2
-
信息解析:
pipe-max-size为 1MB。- 结论:如果进程间通信(IPC)大量依赖 Pipe,单次原子写入不应超过此值。对于高吞吐雷达数据,建议使用共享内存而非管道。
-
探测命令与结果:
cat /proc/sys/fs/pipe-max-size 1048576
6. System V IPC 限制 (Shared Memory & Semaphores)
-
关键性:P1
-
信息解析:
- 共享内存:最大段大小 (Max Segment Size) 极为巨大(PB 级),完全满足 GPGPU 异构计算中零拷贝(Zero-copy)或大块内存共享的需求。
- 消息队列:
max message size仅为 8192 字节。这表明 System V 消息队列仅适用于传递极小的控制指令(Control Plane),严禁用于传输雷达回波数据(Data Plane)。
-
探测命令与结果:
ipcs -l ---------- 消息限制 ----------- 系统最大队列数量 = 32000 最大消息尺寸 (字节) = 8192 默认的队列最大尺寸 (字节) = 16384 ---------- 同享内存限制 ------------ 最大段数 = 4096 最大段大小 (千字节) = 18014398509465599 最大总共享内存 (千字节) = 18014398509481920 最小段大小 (字节) = 1 --------- 信号量限制 ----------- 最大数组数量 = 32000 每个数组的最大信号量数目 = 32000 系统最大信号量数 = 1024000000 每次信号量调用最大操作数 = 500 信号量最大值=32767
7. 持久化资源配置文件 (Persistent Config File)
-
关键性:P1
-
信息解析:
- 输出为空。说明
/etc/security/limits.conf中没有显式配置。 - 结论:当前的系统限制值(如
open files = 524288)可能来自于 systemd 的全局默认配置或/etc/security/limits.d/下的子文件。但memlock的 64KB 限制必须在此文件中显式覆盖,否则每次重启都会面临实时性风险。
- 输出为空。说明
-
探测命令与结果:
grep -vE "^#|^$" /etc/security/limits.conf (空)