当前位置: 首页 > 知识库问答 >
问题:

docker如何使用其主机操作系统的CPU内核?

汲品
2023-03-14

根据Docker基于LXC这一事实,我的理解是Docker容器共享来自其主机操作系统的各种资源。我关心的是CPU核心。下面是一个场景:

  • 主机linux操作系统有8个内核
  • 我必须在上面的主机操作系统上部署一组docker容器
  • 我需要部署的一些docker容器更适合使用2核

a) 因此,如果我在该主机上运行所有docker容器,它们是否会像在该主机操作系统上作为正常安装的应用程序运行一样,根据需要消耗CPU/内核?

b) docker容器是否会使用自己的进程,并且其中包含的所有处理都将被固定到父进程的CPU核心上?

c) 如何指定docker容器以使用多个核心(例如4个)。我看到有一个-C标志可以指向一个核心id,但似乎没有选项指定容器来随机选取N个核心。

共有3个答案

訾俊名
2023-03-14

从ORACLE留档:

  To control a container's CPU usage, you can use the
  --cpu-period  and --cpu-quota options with the docker 
  create and docker run commands  from version 1.7.0 of Docker onward.

  The --cpu-quota option specifies the number of microseconds 
  that a container has access to CPU resources during a 
  period specified by --cpu-period.
  As the default value of --cpu-period is 100000, setting the 
  value of --cpu-quota to 25000 limits a container to 25% of 
  the CPU resources. By default, a container can use all available CPU resources, 
  which corresponds to a --cpu-quota value of -1.
盖绪
2023-03-14

可能是在最新(少数)版本中发生了变化。现在,您可以使用docker run的参数约束docker容器:新docker版本中当前答案的等价物是docker run ubuntu/bin/echo“Hello world--cpuset cpus=”0-3“,但是,这会将docker进程限制在这些CPU上,但是(如果我错了,请纠正我)其他容器也可以要求相同的设置。可能更好的方法是使用CPU共享。

有关更多信息,请参阅https://docs.docker.com/engine/reference/run/

薛俊美
2023-03-14

目前,我不认为docker提供这种粒度级别。它没有指定它在lxc.conf文件中分配了多少内核,所以你可能会得到每个docker的所有内核(或者可能是1个,我不是100%确定)。

但是,您可以调整为给定容器生成的conf文件,并设置如下内容

cpuset {
    cpuset.cpus="0-3";
}
 类似资料:
  • 问题内容: 基于Docker基于LXC的事实,我的理解是Docker容器共享来自其主机操作系统的各种资源。我关心的是CPU内核。这是一个场景: 主机linux操作系统具有8个核心 我必须在上面的主机操作系统上部署一组docker容器。 我需要部署的某些Docker容器更适合使用2个内核 a)因此,如果我在该主机上运行所有docker容器,它们是否会按需消耗CPU /内核,就像它们在该主机OS上作为

  • 我开始使用Docker,我可以说,这是一个伟大的概念。到目前为止一切都很顺利。我在ubuntu(我的主机操作系统)上安装了docker,从存储库中播放图像并制作新图像。 我想制作当前(主机)操作系统的映像。我如何使用docker本身实现这一点?我是docker的新手,所以请忽略我问题中的任何愚蠢的事情,如果有的话。

  • 主要内容:进程控制块中保存了什么?,为什么需要调度?在像MS DOS这样的单编程系统中,当进程等待任何I/O操作完成时,CPU仍然是空闲的。 这是一个开销,因为它浪费时间并导致饥饿问题。 但是,在多程序系统中,CPU在进程的等待时间内不会保持空闲状态,而是开始执行其他进程。 操作系统必须定义CPU将被给予哪个进程。 在多程序系统中,操作系统调度CPU上的进程以获得最大的利用率,此过程称为CPU调度。 操作系统使用各种调度算法来调度过程。 这是短期调

  • 问题内容: 我不确定我在问正确的问题…但是当我阅读所有可以接触到的docker时,我发现可以在Ubuntu 12.04上安装Docker(例如),然后安装一个Fedora容器还是其他版本的ubuntu?(有一个示例,其中用户在容器中安装了busybox。) 当然,我可能完全错了。 但是,我希望基本系统与容器之间存在短暂的连接。 重述:主机操作系统和容器基础映像的操作系统之间是什么关系? 问题答案:

  • 我在一个物理服务器中有一个VM主机,里面有许多docker容器。 这是我fig.yml的一部分 我希望设置pg容器只使用主机cpu的25%,应用程序只使用主机cpu的50%,以此类推。 我可以用或手动管理链接吗? 在我的例子中,当这个容器中的一个正在运行一个昂贵的任务时,它会影响其他容器的cpu性能。但是,当在同一台物理服务器中,我有其他具有类似部署的VM时,问题会急剧增加。

  • 虚拟内存 分页系统地址映射 页面置换算法 1. 最佳 2. 最近最久未使用 3. 最近未使用 4. 先进先出 5. 第二次机会算法 6. 时钟 分段 段页式 分页与分段的比较 虚拟内存 虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。 为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被