docker-compose中cpu资源限制究竟是百分比还是核心数?

 

问题描述:

在docker-compose中,可以通过下面方式限定容器使用的资源,比如:

    deploy:
      resources:
         limits:
            cpus: "2.00"
            memory: 5G

现在的问题是,在网上搜索到的资料,关于 limits.cpus 参数的含义,众说纷纭,有说是cpu核心数,有说是cpu使用百分比。

那么对于 8核心的云服务器,如果想要限制容器最多使用到 所有cpu资源的 80%,那么应该怎么写呢?
写成:cpus: "0.80" 还是 cpus: "6.40" ?


 

第 1 个答案:

是数量,不是百分比。

看官方文档:

REF: https://docs.docker.com/compose/compose-file/deploy/#resources
cpus configures a limit or reservation for how much of the available CPU resources (as number of cores) a container can use.

注意加粗的部分,“以内核数量为单位”。

P.S.1 说是百分比的倒也不算错,只是可能你理解错意思了。比如我有 4 个核、然后 cpus 设成 2.0,那么不是说限制成了最多只有 2 个核在工作、另 2 个核不工作,而是说这 4 个核都可能工作、但加一起的利用率是 200%。所以你看它的值是个小数,要不然核心数怎么也不可能出现“半个”这种说法,只能是“50% 利用率”。

P.S.2 你要真的是想设置“最多只有几个核工作”,那也有。2.2 之后有了 cpu_count 这个参数,它的值是一个整数。


 

第 2 个答案:

核数。

resources

cpus

cpus configures a limit or reservation for how much of the available CPU resources (as number of cores) a container can use.

说百分比的话,其实说 CPU 的使用百分比的时候,很多时候是以一个核用满为 100% 的。一个机器有 6 个核,全用满的话就是 600% 。这样的意义下跟核数是一样的。


需求就是vuejs中window.open打开另一个网站,并传参,但是参数不能拼接显示在url中,数据量也比较大,是一个对象,请问这样的话我应该如何传递呢?