You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

cgroupsv2环境下内存分配超出memory.max限制的问题求助

cgroupsv2环境下内存分配超出memory.max限制的问题求助

各位大佬好,我最近在做一个生成人工内存负载的应用,想用cgroups来实时监控它的运行状态,看看内存接近限制时会出现什么情况。

这个应用的核心逻辑很简单:每秒分配一个20MiB的缓冲区,然后把它存在一个KV结构里——键是缓冲区的SHA256校验和,值就是缓冲区本身。每一轮循环还会遍历整个KV结构,检查所有缓冲区有没有和计算哈希时的内容不一致。

我用Go写的源码片段如下:

package main

import (
    "crypto/sha256"
    "fmt"
    "log"
    "math/rand"
    "os"
    "time"
)

func main() {
    const bufSize = 20*1024*1024
    mem := make(map[[32]byte][]byte)

    for {
        buf := make([]byte, bufSize)

        // Checking buffer
        if buf == nil {
            log.Fatal("make() returned nil buffer")
        }
        // 原代码后续部分未完整粘贴,核心逻辑如上述描述
    }
}

现在遇到的问题是:当我用cgroupsv2设置memory.max限制后,发现应用的内存分配有时会超出这个限制,或者触发OOM的时机和预期不太匹配。有没有大佬能帮忙分析下可能的原因?比如Go的内存分配机制和cgroupsv2的交互细节,或者我这个应用的逻辑有没有什么地方会导致内存统计不准?

备注:内容来源于stack exchange,提问作者x7upLime

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 14:33:13