如题。最近在跑强化学习代码,发现自己的代码跑的好慢好慢好慢,怀疑是可使用的cpu数量被管理员限制了,于是去学习了一下如何查看docker容器中cpu的相关信息。
查看docker容器中可用的 CPU 数量
cat /proc/cpuinfo
这将输出关于系统处理器的详细信息,包括每个 CPU 的数量、型号和速度。
在 Docker 容器中,默认情况下,可以使用主机的所有 CPU 核心。这意味着,如果主机上有 4 个 CPU 核心,Docker 容器将默认使用所有这些核心。
docker的管理员可以通过以下命令来限制容器可以使用的 CPU 核心范围。例如,要将容器限制为使用 0 到 2 号 CPU 核心,可以使用以下命令:
docker run --cpuset-cpus=0-2 <镜像名称>
这将在运行容器时将 CPU 核心限制为 0 到 2 号核心。请注意,这将限制容器可以使用的 CPU 核心范围,但不会限制容器可以使用的 CPU 核心数量。要限制容器可以使用的 CPU 核心数量,可以使用前面提到的
--cpus
参数。
在docker内部查看是否已经限制了容器可以使用的 CPU 核心范围
在 Docker 容器内部,你可以通过检查
/sys/fs/cgroup/cpuset/cpuset.cpus
文件来确定是否已经限制了容器可以使用的 CPU 核心范围。该文件包含了容器可以使用的 CPU 核心列表,如果这个文件的内容被限制为一个特定的范围,则容器将只能使用该范围内的 CPU 核心。
你可以在容器内运行以下命令来查看此文件的内容:
cat /sys/fs/cgroup/cpuset/cpuset.cpus
如果输出显示了一个特定的 CPU 核心范围,则表示容器的 CPU 核心已经被限制。如果输出为空,或者显示了所有 CPU 核心的列表,则表示容器没有被限制,可以使用主机的所有 CPU 核心。
请注意,查看该文件需要 root 权限。如果你没有 root 权限,你可能需要与管理员联系以获取更多信息。
但是这个命令只能给你当前的时刻。如果希望看到资源随着时间的推移而演变,那么该怎么办?或者
查看
Docker
Compose 项目
使用
了多少
CPU
和内存?或者根据
CPU
密集程度最高的
容器
进行排序,然后根据超过80% 的
CPU
使用
情况进行筛选?
在生产环境里运行服务的一个中心问题是资源分配,多个
容器
共享宿主机的资源,但是实际上这些
容器
也并不都是同等重要的,我们希望给重要的
容器
分配更多的
cpu
资源,防止失控的
容器
抢占资源,导致重要的服务难以获取资源支持。
如果没有安装htop命令,需要先安装htop命令。
yum install htop
用于
查看
运行状态
限制
容器
可以运行的内核
默认
情况下,
Docker
可以在主机的任意内核种运行。只有一个进程和线程的
容器
明显最多只能耗尽一个内核,但是
容器
种的多线程程序可以
使用
cpu
上所有的
您只需要在创建的Droplet上运行三个命令
您将需要至少1GB的盒子(postgres至少需要1GB的盒子才能处理3个连接)
我建议
使用
Ubuntu
16.04x64盒(1GB / 1
CPU
,30GB SSD,2TB传输)
$ git clone https://github.com/KorayGocmen/Express-Postgres-Nginx-
Docker
.git app
$ cd app
$ bash deploy.sh
应用程序
容器
不是以npm st
Docker
的资源管理控制(
CPU
、内存、磁盘IO配额)前言资源控制一、
CPU
资源控制1、设置
CPU
使用
率上限(1)
查看
CPU
使用
率(2)进行
CPU
压力测试(3)设置
CPU
使用
率2、设置
CPU
资源占用比(设置多个
容器
时才有效)3、设置
容器
绑定指定的
CPU
二、对内存
使用
的
限制
三、对磁盘IO配额控制(blkio)的
限制
一、
CPU
资源控制
cgroups,是一个非常强大的
linux
内核工具,他不仅可以
限制
被 namespace 隔离起来的资源, 还可以为资源设置权重、计算
使用
量、操控进
实际项目当中,我获取了
CPU
ID、系统序列号、系统UUID、系统型号、处理器厂家,之所有获取这么多信息标识机器,是考虑到有些信息在某些系统可能为空,而且
CPU
ID也不唯一了,所以就多获取些。思路:在
docker
容器
内安装ssh,sshpass服务,通过ssh连接到宿主机执行命令,获 取宿主机信息(必须知道宿主机Ip和密码)大体思路是
docker
支持通过-e来传递参数到
容器
内部
程序,就像安装
docker
-mysql那样密码可以通过参数传递一样。将宿主机的如下两个目录挂载到
容器
中。
相比
限制
容器
用的内存,
限制
CPU
的选项要简洁很多。但是简洁绝对不是简单,大多数把复杂东西整简单的过程都会丢失细节或是模糊一些概念,比如从和选项到 --
cpu
s 选项的进化。对于
使用
者来说这当然是好事,可以减缓我们的学习曲线,快速入手。
blkio:设置
限制
每个块设备的输入输出控制;
cpu
:
使用
调度程序为 cgroup 任务提供
cpu
的访问;
cpu
acct:产生 cgroup 任务的
cpu
资源报告;
cpu
set
Docker
----网络、
CPU
、内存、io资源控制
一个
docker
host 上会运行若干
容器
,每个
容器
都需要
CPU
、内存和 IO 资源。 对于 KVM,VMware 等虚拟化技术,用户可以控制分配多少
CPU
、内存资源给每个虚拟机;对于
容器
,
Docker
也提供了类似的机制避免某个
容器
因占用太多资源而影响其他
容器
乃至整个 host 的性能 。
Docker
基于 Linu...