如何评估在linux中的特定命令/泊坞窗的CPU和内存使用情况?

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

编辑

大多数这些脚本将在短时间内运行,所以很难获取资源信息。 我只想尝试find一个工具,以获得最大的CPU和内存使用情况,工具工作如同time ,打印执行时间。

在这个问题中有一些很好的答案: linux / unix进程的最高内存使用率

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

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

您应该为您的应用程序提供尽可能多的CPU内核,从而让您的应用程序在可接受的时间内取得成功。 这将取决于成本以及集群中有多less核心可用。 这也取决于你的应用程序的架构。 例如,如果应用程序不能利用多核,那么给它多于1就没有多大用处。

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

Kubedash截图

希望有所帮助!

您可以使用docker stats命令查看容器的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组合(就像docker本身)允许你设置一个容器的资源限制,例如,限制使用的最大内存量,cpu-shares等。

请阅读docker-compose yaml参考中的这一部分,以及docker run参考资源上的“运行时约束”