【问题标题】:Supervisor : Why am I able to run more than 4 processes on a 4 core machine?主管:为什么我可以在 4 核机器上运行超过 4 个进程?
【发布时间】:2015-12-10 07:59:52
【问题描述】:

我正在使用 4 核机器并使用 vagrant box 来托管我的应用程序。我已经将 Supervisor 配置为在不同的端口上生成 5 个进程,并且我可以轻松地独立运行所有进程。这是否意味着由 Supervisor 生成的每个进程都不遵循单独的核心?

【问题讨论】:

  • 如果你想将进程限制在 cpu 核心上,你必须设置进程的 cpu 亲和性:linux.die.net/man/1/taskset 不过很少有用。
  • 要明确一点,您在主机或虚拟机上有 4 个核心?即使您在主机上有 4 个核心,除非您声明它,否则 vm 也不会有 4 个核心

标签: vagrant multiprocessing tornado supervisord


【解决方案1】:

运行进程是操作系统的工作。它决定运行什么以及何时运行。 您拥有 4 个内核这一事实意味着您可以并行执行 4 个不同的“代码”(4 个不同的线程不一定来自同一个进程)

这意味着如果您将 4 个进程放在具有 4 个内核的同一台机器上,它们很可能都将并行运行。 如果您有 5 个进程,那么在任何给定时刻,只有 4 个在运行,但看起来它们都在并行运行,因为它们会执行“上下文切换”,您的核心将随机停止运行 1 个进程并切换到其他

【讨论】:

  • 这是否意味着如果同时(理论上)在所有 5 个进程上提交作业,其中一个会失败?
  • 不,它不会失败,它只会“等待”。实际上你甚至不会注意到,你的一个核心只会在一个进程上工作几毫秒,然后切换到另一个进程几毫秒,然后再回到第一个进程,依此类推。它只是意味着它们不会真正并行运行,但它们只会“似乎”这样做
  • 这只是意味着同时只能运行4个进程。操作系统将同时处理哪些进程用完 5 个。简单的方法是使用循环,它为每个进程在一个循环中运行提供平等的机会。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2018-02-19
  • 2013-11-28
  • 2013-10-11
  • 2013-05-14
  • 2012-10-02
  • 1970-01-01
相关资源
最近更新 更多