文档详情

Docker容器技术应用 实验指导书 任务7.2.2 限制CPU内核、内存和Block IO.docx

发布:2025-04-16约2.59千字共4页下载文档
文本预览下载声明

任务7.2.2限制CPU内核、内存和BlockIO

(1)任务目标

掌握限制CPU内核、内存和BlockIO的方法

(2)任务内容

限制CPU内核

限制内存

限制BlockIO

(3)完成任务所需的设备和软件

一台安装Windows10操作系统的计算机

VMwareWorkstation,Docker

远程管理工具MobaXterm

(4)任务实施步骤

第一步:对于多核服务器,设置容器运行所使用的CPU内核,操作命令如下:

[root@docker~]#dockerrun-itd--namecontainer4--cpuset-cpus0-1centos:stress

--cpuset-cpus:指定容器可以使用的CPU内核。

[root@docker~]#dockerps-a

[root@docker~]#dockerexec-itcontainer4bash

[root@bcb54cf525ef/]#cat/sys/fs/cgroup/cpuset/cpuset.cpus

命令运行结果如图7-8所示:

图7-8对于多核服务器设置容器运行所使用的CPU内核

第二步:查看容器内所有进程,将容器内进程与CPU内核进行绑定,操作命令如下:

[root@docker~]#dockerexeccontainer4psaux

[root@docker~]#dockerexeccontainer4taskset-cp1

-c:以列表格式显示和指定CPU。

-p:在已经存在的pid上操作。

1:容器内第一个进程编号。

[root@docker~]#dockerexeccontainer4taskset-cp01

0:第一个CPU内核编号。

1:容器内第一个进程编号。

命令运行结果如图7-9所示:

图7-9将容器进程与CPU内核进行绑定

第三步:在同一个CPU内核上运行两个容器,分别开启一个stress进程,设置两个进程的CPU份额为1:2,操作命令如下:

[root@docker~]#dockerrun-itd--namecontainer5--cpuset-cpus1--cpu-shares521centos:stressstress-c1

[root@docker~]#dockerrun-itd--namecontainer6--cpuset-cpus1--cpu-shares1024centos:stressstress-c1

[root@docker~]#dockerps-a

[root@docker~]#dockerexec-itcontainer5bash

[root@adce81285bc2/]#top

[root@adce81285bc2/]#exit

[root@docker~]#dockerexec-itcontainer6bash

[root@2538d8621bd6/]#top

命令运行结果如图7-10、7-11所示:

图7-10在同一个CPU内核上运行两个容器

图7-11在同一个CPU内核上运行两个容器

从图中可以看出,第二个CPU内核的资源已耗尽,使用率为100%。两容器的CPU份额为1:2。

第四步:拉取对容器执行压力测试的镜像progrium/stress,分配容器内存,操作命令如下:

[root@docker~]#dockerrun-it--namecontainer7-m128M--memory-swap=256Mprogrium/stress--vm1--vm-bytes220M

-m或--memory:设置内存的使用限额。

--memory-swap:设置交换分区的使用限额。

--vm1:启动一个内存工作线程。

--vm-bytes220M:为每个线程分配220MB内存。

命令运行结果如图7-12所示:

图7-12分配容器内存,线程工作正常

分配给线程的220MB内存小于256MB,从图中可见,工作线程运行正常。当分配给线程的内存为300MB时,操作命令如下:

[root@docker~]#dockerrun-it--namecontainer8-m128M--memory-swap=256Mprogrium/stress--vm1--vm-bytes300M

命令运行结果如图7-13所示:

图7-13分配容器内存,线程报错

从图中可见,当分配给线程的内存为300MB大于256MB时,线程报错,容器退出。

第五步:查看容器写速率,

显示全部
相似文档