Linux 如何在多个 CPU 内核上分配负载

5 central-processing-unit load-balancing

假设我有 2 个四核处理器(8x 2,13Ghz)。服务器运行多个程序,只能同时使用 1 个内核 + Nginx 和 Apache worker。

问题是,Linux 是否有效地将单线程程序分配给每个内核,以便每个程序都可以利用 1 个内核的全部能力,并且不会干扰 Apache 和 Nginx 的负载。所以基本上确保所有内核都被使用而不是堆,所以程序可能最终会滞后?

Chr*_*s S 7

对于SF来说,对您的问题的一个很好的回答太复杂了。简短的回答是“是”,Linux 和大多数现代操作系统平衡了准备非常有效地跨可用处理器运行的进程。

有一些技术可以修改进程如何分配给资源,包括更改调度程序将进程分配给特定处理器,但我不建议使用它们中的任何一个,除非真正了解它们的作用或使用它们来解决特定问题。

此外,默认情况下 nginx 和 Apache httpd 多线程/多进程。它们作为单个进程运行会很奇怪。它们不轮询网络连接/流,它们使用内核调用在无事可做时停止运行,并在有事可做时自动唤醒。