问题域/PD-236

容器感知资源管理

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 减少跨核调度