容器感知资源管理
Container-Aware Resource Management
自动检测 cgroup/Docker/K8s 环境的 CPU 和内存限制,自适应配置运行参数
子问题
1.cgroup v1/v2 兼容检测
2.内存限制自适应
3.跨平台资源探测
4.cgroup UNLIMITED 魔数识别与过滤
5.线程池大小与 CPU 配额的自动对齐
6.BufferManager LRU 淘汰阈值与 cgroup 内存限制联动
各项目的解法1 solutions
Signals
横向对比
| 维度 | zvec |
|---|---|
| cgroup 版本支持 | v2 → v1 双版本降级链,含 UNLIMITED 魔数过滤 |
| 内存限制策略 | cgroup 限制 × 0.8 安全水位 + Validate 硬上限校验 |
| 跨平台资源探测 | Linux cgroup/sysconf + macOS sysctl/mach 编译期分支 |
| 线程池适配 | 查询池 + 优化池双线程池,大小 = cgroup CPU 配额 |
| 内存池集成 | BufferManager 分片 LRU 池,limit 由 cgroup 探测值驱动 |
| CPU 绑核 | pthread_setaffinity_np 可选绑核,减少跨核调度 |
最佳实践
1.默认使用 cgroup 限制的 80% 作为内存上限
2.配置校验层拒绝超过 cgroup 探测值的用户自定义内存
3.使用 std::call_once 确保资源初始化的线程安全单次执行
4.CPU 绑核作为可选优化,通过 pthread_setaffinity_np 减少跨核调度