如何在linux中评估特定命令/ docker的CPU和Mem使用情况?

时间:2016-01-18 02:08:56

标签: linux docker resources kubernetes

我正在为在docker中运行并由kubernetes编排的脚本编写yaml文件。有没有办法评估特定命令或泊坞窗的资源利用率,或者为pod设置cpu和mem限制的最佳做法是什么?

修改

这些脚本中的大多数都会在短时间内运行,因此很难获得资源信息。我只想尝试找到一个工具来获得cpu和mem的最大用量,该工具就像@charset "utf-8"; /* CSS Document FOR HOME PAGE ONLY*/ .main { height: 100%; } .slider { height: 60%; } .promo-tiles { height: 30%; } .promo-tiles-ul{ width: 25%; display: inline-block; list-style: none; } .promo-tiles li{ color: white; } 一样,打印出执行时间。

2 个答案:

答案 0 :(得分:3)

您可以使用docker stats命令查看容器的统计信息。

例如;

docker stats containera containerb

CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O               BLOCK I/O
containera          0.00%               24.15 MB / 1.041 GB   2.32%               1.8 MB / 79.37 kB     0 B / 81.92 kB
containerb          0.00%               24.95 MB / 1.041 GB   2.40%               1.798 MB / 80.72 kB   0 B / 81.92 kB

或者,使用docker top <container>

查看在容器中运行的进程
docker top containera
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                4558                2850                0                   21:13               ?                   00:00:00            sh -c npm install http-server -g && mkdir -p /public && echo "welcome to containera" > /public/index.html && http-server -a 0.0.0.0 -p 4200
root                4647                4558                0                   21:13               ?                   00:00:00            node /usr/local/bin/http-server -a 0.0.0.0 -p 4200

限制资源

Docker compose(如docker本身)允许您为容器设置资源限制,例如,限制使用的最大内存量,cpu-shares等。

请阅读docker-compose yaml reference中的此部分,以及"Runtime constraints on resources"上的泊坞窗运行参考

答案 1 :(得分:2)

问题中有一些好的答案:Peak memory usage of a linux/unix process

TL; DR /usr/bin/time -v <command>或使用valgrind

这应该可以帮助您了解需要分配多少内存作为应用程序的限制,但CPU是一个有点不同的野兽。如果您的应用程序是CPU绑定的,那么无论您设置什么限制,它都将使用您提供的所有CPU。此外,在Kubernetes中,您可以为应用程序分配核心(或毫微秒),因此了解在任何特定计算机上使用的CPU百分比并不总是非常有用,因为它不会轻易转换为核心。

您应该为您的应用程序提供尽可能多的CPU核心,并且允许您的应用程序在可接受的时间内成功。这取决于成本以及群集中可用的核心数量。它还取决于您的应用程序的架构。例如,如果应用程序无法利用多个内核,那么提供多个内核的用量就不多了。

如果您有更长时间运行的应用,可以尝试安装Kubedash。如果您安装了Heapster,那么Kubedash使用Kubernetes的内置指标来显示平均和最大CPU /内存利用率。当试图弄清楚什么是请求时,它会有很大的帮助。分配给特定应用程序的限制。

Kubedash screenshot

希望有所帮助!