gpt4 book ai didi

docker - 如何找出Docker运行执行最多消耗了多少RAM?

转载 作者:行者123 更新时间:2023-12-02 19:36:20 25 4
gpt4 key购买 nike

我创建了一个新的docker服务,并正在确定其所需的资源。由于将RAM应用于新服务是很贪婪的-假设容器可以有8GB的RAM,它将获得它们-我不想浪费群集的资源。

现在,我试图找出一个 docker 运行在高峰期占用了多少内存。

例如,我创建了一个httpie图像(对于正确的偏执狂,我通过以下命令执行Dockerfile is also on dockerhub:

docker run -it k0pernikus/httpie-docker-alpine HEAD https://stackoverflow.com/

我知道有一个 docker stats 命令,但它似乎显示了当前的内存使用情况,我真的不想监视它。

如果我在容器结束后运行它,它将显示 0。 (要获取容器ID,请使用 d标志。)
$ docker run -itd k0pernikus/httpie-docker-alpine HEAD https://stackoverflow.com/ 
132a93ffc9e297250b8ca37b2563aa2b5e423e146890fe3383a91a7f26ef990c
$ docker stats 132a93ffc9e297250b8ca37b2563aa2b5e423e146890fe3383a91a7f26ef990c

它会显示:
CONTAINER                                                          CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
132a93ffc9e297250b8ca37b2563aa2b5e423e146890fe3383a91a7f26ef990c 0.00% 0 B / 0 B 0.00% 0 B / 0 B 0 B / 0 B 0

然而,它最多消耗了多少RAM?

最佳答案

tl; dr:

  • 启用内存记帐
  • cat /sys/fs/cgroup/memory/docker/${CONTAINER_ID}/memory.max_usage_in_bytes

  • Docker uses cgroups under the hood。我们只需要问内核正确的问题,即 cat正确的文件。为此,必须启用内存记帐(如文档中所述)。
    在基于系统的系统上,这很简单。为Docker守护程序创建一个嵌入式配置:
    systemctl set-property docker.service MemoryAccounting=yes
    systemctl daemon-reload
    systemctl restart docker.service
    (这将增加一点开销,尽管每次容器分配RAM时必须更新一个计数器。更多详细信息: https://lwn.net/Articles/606004/)
    然后使用您可以通过docker inspect发现的完整容器ID:
    docker inspect --format="{{.Id}}" $CONTAINER_NAME
    您可以获得使用的最大内存:
    cat /sys/fs/cgroup/memory/docker/${CONTAINER_ID}/memory.max_usage_in_bytes
    容器必须运行才能正常工作。

    关于docker - 如何找出Docker运行执行最多消耗了多少RAM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44825628/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com