您的位置:首页 > 科技 > IT业 > 医院网站设计方案_河北建造师网_新营销模式有哪些_中山网站seo优化

医院网站设计方案_河北建造师网_新营销模式有哪些_中山网站seo优化

2025/4/17 13:54:16 来源:https://blog.csdn.net/lzping_719/article/details/146979346  浏览:    关键词:医院网站设计方案_河北建造师网_新营销模式有哪些_中山网站seo优化
医院网站设计方案_河北建造师网_新营销模式有哪些_中山网站seo优化

以下是对 Docker 容器 CPU 核心绑定 (cpuset) 和 CPU 份额 (cpu-shares) 结合使用的详细总结与实验解析

1. 什么是 cpusetcpu-shares

cpuset

  • 用于限制容器运行在哪些 CPU 核心上。
  • 通过 --cpuset-cpus 参数指定 CPU 核心编号,例如 0,1 表示绑定到 CPU 0 和 CPU 1。
  • 适用于 NUMA 拓扑结构的多核服务器,确保高性能容器运行在指定核心上,避免资源争抢。

cpu-shares

  • 用于设置容器使用 CPU 的时间片权重,决定容器在资源竞争时的优先级。
  • 默认值为 1024,值越高,容器获得 CPU 时间片的比例越大。

2. cpusetcpu-shares 的主要区别

参数功能适用场景
cpuset限定容器运行在指定的 CPU 核心上性能隔离、高性能计算
cpu-shares设置容器 CPU 时间片的权重,优先级分配多容器竞争同一 CPU 资源时,分配优先级

3. 混合使用 cpusetcpu-shares 的场景

通过混合使用 --cpuset-cpus--cpu-shares,可以在特定 CPU 核心上对容器进行资源竞争控制。

  • 场景:

    • 两个容器运行在同一 CPU 核心上,设置不同的 CPU 时间片权重。
    • CPU 使用率会根据权重比例进行分配。
  • 预期结果:

    • 容器的 CPU 使用率按权重比例分配。例如,容器 A 的权重是 512,容器 B 的权重是 1024,则 B 的 CPU 使用率是 A 的两倍。

4. 实验:验证 cpusetcpu-shares 的效果

4.1 环境准备

1.确保主机是多核 CPU(至少 2 核)。

 使用 top 查看 CPU 核心:

top

1 键展开 CPU 核心信息,比如 CPU 0、CPU 1。

2.安装压测工具 stress

安装 EPEL 源:

yum install -y epel-release

 安装 stress

yum install -y stress

4.2 创建 Docker 容器

4.2.1 启动容器 docker10

将容器绑定到 CPU 0 和 CPU 1,设置 CPU 份额为 512

docker run -itd --name docker10 --cpuset-cpus="0,1" --cpu-shares=512 ubuntu
4.2.2 启动容器 docker20

同样绑定到 CPU 0 和 CPU 1,设置 CPU 份额为 1024(是 docker10 的 2 倍):

docker run -itd --name docker20 --cpuset-cpus="0,1" --cpu-shares=1024 ubuntu

4.3 压测实验

4.3.1 在容器 docker10 中运行压力测试

1.进入 docker10 容器:

docker exec -it docker10 bash

2.安装压测工具 stress

Ubuntu中安装此类工具命令如下:
apt install -y stress-ng
或者
apt install -y stress

3.使用 stress 工具运行 CPU 压测:

stress -c 2 --timeout 600
  • -c 2:产生两个 CPU 进程。
  • --timeout 600:压测持续 600 秒。
4.3.2 在容器 docker20 中运行压力测试

1.进入 docker20 容器:

docker exec -it docker20 bash

2.安装压测工具 stress

Ubuntu中安装此类工具命令如下:
apt install -y stress-ng
或者
apt install -y stress

3.使用 stress 工具运行 CPU 压测:

stress -c 2 --timeout 600

4.4 观察 CPU 使用率

1.在宿主机上运行 top 命令,并按 1 键展开 CPU 核心信息。

top

2.观察 CPU 0 和 CPU 1 的使用情况:

  • 容器 docker10docker20 应争抢 CPU 0 和 CPU 1 的资源。
  • 根据 cpu-shares 设置,docker20 的 CPU 使用率应是 docker10 的两倍。

4.5 验证结果

1.CPU 使用情况:

  • top 输出中,docker10docker20 的进程会显示在 CPU 0 和 CPU 1 上。
  • docker10 的 CPU 使用率约为 20%。
  • docker20 的 CPU 使用率约为 40%。

2.结论:

由于 docker20--cpu-shares=1024docker10 的 2 倍,因此分配的 CPU 时间片比例是 2:1。

5. 注意事项

1.虚拟机实验环境要求:

实验需要至少 2 核 CPU。如果虚拟机 CPU 核心不足,压测可能导致系统卡顿或崩溃。

2.cpuset 不会超出分配的 CPU 核心:

即使 CPU 0 和 CPU 1 被占满,容器也不会使用其他核心,限制效果完全生效。

3.资源分配的动态性:

如果 docker10docker20 中的任务为空闲,其余的 CPU 时间片可以被其他容器利用。

6. 总结

1.cpuset

用于绑定容器到特定的 CPU 核心,实现性能隔离。

2.cpu-shares

设置容器 CPU 使用的权重,控制多容器竞争时的优先级。

3.实验结果:

容器的 CPU 使用率按权重比例分配,验证了 cpusetcpu-shares 的结合使用效果。

 4.实践建议:

  • 在高性能计算场景下,可使用 cpuset 限定容器运行在指定核心上,确保关键任务性能。
  • 在资源有限的环境中,使用 cpu-shares 提高资源分配的灵活性。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com