Debian 如何使用大量 CPU 内核?

the*_*ror 3 command-line multiprocessor

我刚刚获得了一个 24 核 VPS 的帐户(根据 UnixBench 有 24 个 CPU)。

  1. 一般而言,如何在 Debian 中充分利用所有这些内核进行通用 shell 计算?
  2. 当我从 shell 发出长时间运行的应用程序以使每个进程在单独的内核上运行时,是否需要键入一些特殊的内容?或者 Debian 只是处理所有这些,对我来说是不可见的?

Gil*_*il' 5

你不需要做任何特别的事情:决定哪个线程在哪个 CPU 上运行是内核的工作,它比人类做得好得多。

但是,如果您没有至少 24 个并发线程可以运行,那么拥有 24 个 CPU 就毫无意义。如果有更多的 CPU 可用,程序不会神奇地跑得更快:只有被编码为具有多个并行线程的程序才会受益,而许多程序不会受益,不是因为它们的编写方式低劣,而是因为它们所做的是本质上不可并行化。

具有 N 个并发计算线程的程序将受益于最多 N 个 CPU(尽管它可能不会快 N 倍,因为线程之间的同步需要时间)。运行 M 个不同的程序,如果完全类似地利用 M 个 CPU(或者如果程序是多线程的,则不会有太多交互)。

在少数情况下,需要手动干预才能利用并行性。如果您正在启动多个数据处理任务,请注意它们是并行生成的(每个 CPU 略多于一个任务),而不是一个接一个。例如,在构建软件时,将-j选项传递给make. 查看其他一些示例和解释:

如果您正在运行 Web 服务器,则所有为重负载设计的 Web 服务器都擅长利用并行性。在评估 Linux 内核中的优化性能时,Apache 用作测试用例。但是请注意,CPU 中的并行性仅在没有其他瓶颈(例如由于数据库访问或输入-输出带宽引起的争用)的情况下才有帮助。