前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker容器的CPU资源限制

docker容器的CPU资源限制

作者头像
Laikee
发布2022-04-25 14:45:05
1.2K0
发布2022-04-25 14:45:05
举报
文章被收录于专栏:Laikee Tech Space

准备

  • centos7
  • docker平台
  • stress命令(模拟CPU负载)
  • 用到docker参数--cpu-period(周期),--cpu-quota(配额)单位是微秒;1秒=1000毫秒,1毫秒=1000微秒,1秒=1000000微秒

过程

运行容器

(限制容器CPU占用比重为500 000/1 000 000=50%;1秒内最多使用0.5秒的CPU;最多不超过一个内核的50%)

代码语言:javascript
复制
[root@server ~]# docker run -dit --name centos1 --cpu-period=1000000 --cpu-quota=500000 192.168.200.104:5000/centos/stress:latest bash
59c89af717d4606f4a9ec3843ad7fe4d72a81ab81bc299095eab07627aae3952

压力测试(尽量超载):

进入到容器中模拟负载,负载量为400%(1个内核=100%):

代码语言:javascript
复制
[root@server ~]# docker exec -it centos1 bash
[root@59c89af717d4 /]# stress -c 4 
stress: info: [29] dispatching hogs: 4 cpu, 0 io, 0 vm, 0 hdd

同时查看该容器的CPU资源占用:

代码语言:javascript
复制
[root@server ~]# docker stats centos1
CONTAINER           CPU %               MEM USAGE / LIMIT    MEM %               NET I/O             BLOCK I/O           PIDS
centos1             50.07%              968 KiB / 3.86 GiB   0.02%               648 B / 648 B       5.895 MB / 0 B      0

CPU使用率为50.07%,说明限制生效了。

测试

也可以设置上限为2个内核(200%)

代码语言:javascript
复制
[root@server ~]# docker run -dit --name centos1 --cpu-period=1000000 --cpu-quota=2000000 192.168.200.104:5000/centos/stress:latest bash 
64428831a83319325d685c762e75306e5a45a75eeaa01979eeede758b5f68e65
root@server ~]# docexec -it centos1 bash
[root@64428831a833 /]# stress -c 4
stress: info: [28] dispatching hogs: 4 cpu, 0 io, 0 vm, 0 hdd
[root@server ~]# docker stats centos1
CONTAINER           CPU %               MEM USAGE / LIMIT    MEM %               NET I/O             BLOCK I/O           PIDS
centos1             201.48%             968 KiB / 3.86 GiB   0.02%               648 B / 648 B       5.886 MB / 0 B      0

本机有四个内核,设置上限为2000%(20个内核):

代码语言:javascript
复制
[root@server ~]# docker run -dit --name centos1 --cpu-period=1000000 --cpu-quota=20000000 192.168.200.104:5000/centos/stress:latest bash
4ac343f7b5e8a87118e10821b0a252013aeb08e9cbfed86cd2a691b699464d19
[root@server ~]# docker exec -it centos1 bash
[root@4ac343f7b5e8 /]# stress -c 10
stress: info: [35] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd
[root@server ~]# docker stats centos1
CONTAINER           CPU %               MEM USAGE / LIMIT      MEM %               NET I/O             BLOCK I/O           PIDS
centos1             417.47%             1.098 MiB / 3.86 GiB   0.03%               648 B / 648 B       5.878 MB / 0 B      0

总结

容器的CPU配额是通过period和quota之间的大小比重来确定内核的数量,而且是以时间为单位。

例如:1秒内可以使用0.5秒的CPU,等同于可以使用一个内核的50%;1秒内可以使用2秒的CPU,则是两个内核。

限制内核数为quota/period=n。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备
  • 过程
    • 运行容器
      • 压力测试(尽量超载):
      • 测试
      • 总结
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档