相关文章推荐
会搭讪的大葱  ·  Python获取CPU温度·  1 周前    · 
活泼的芒果  ·  java返回excel文件流-掘金·  1 年前    · 
豪气的板栗  ·  最新版Digital ...·  1 年前    · 

如题。最近在跑强化学习代码,发现自己的代码跑的好慢好慢好慢,怀疑是可使用的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...