Memstop: Use LD_PRELOAD to delay process execution when low on memory
10 months ago
- #linux
- #parallel-processing
- #memory-management
- Memstop 是一个轻量级的 LD_PRELOAD 共享对象,当系统内存严重不足时延迟进程执行。
- 它监控可用内存,在达到可配置的百分比阈值前阻止应用程序启动。
- 专为防止并行处理系统中内存耗尽导致的崩溃而设计。
- 适用于并行构建系统(如 make -j)、批处理系统和高内存消耗应用场景。
- 通过 LD_PRELOAD 加载时,会在应用程序 main() 函数及所有子进程之前运行。
- 从 /proc/meminfo 读取系统内存,计算所需可用内存(默认10%)并持续等待直至满足条件。
- 编译要求:GCC 编译器、支持 /proc/meminfo 的 Linux 系统和 Make 工具。
- 安装需构建共享库(memstop.so)并放置到库路径中。
- 通过环境变量配置:MEMSTOP_PERCENT(默认值10,范围0-100)和 MEMSTOP_VERBOSE(输出详细日志)。
- 详细模式会输出内存状态和阻塞信息,但可能干扰正常执行流程。
- 采用 GNU 通用公共许可证 v3.0 (GPLv3) 授权。