我知道所有这些术语目前都是一个令人困惑的领域,但我试图解释它们的用法:http://www.cpu-world.com/CPUs/Xeon/Intel-Xeon%20E7-8870.html
我得到的情况是,我有一个用 VB6 编写的旧程序,我可以启动许多实例。我想知道在处理速度明显变慢之前我可以启动多少个实例?例如,对于 Xeon E7-8870,是 10 个内核、20 个线程还是 8 个多处理器限制了我?
(我知道该程序需要用 C# 重写,但其他优先事项优先...)
非常感谢
答案1
一旦物理核心达到饱和状态,每个实例都会显著变慢。如果所有线程都运行基本相同的指令组合,情况尤其如此。如果您有 10 个物理核心,那么启动更多实例时,您可能会开始看到总体性能下降。
不过,只有亲自尝试,你才会知道。如果任务执行大量 I/O,你可能会发现,即使在 I/O 期间,更多实例也会让 CPU 保持更忙碌的状态。但是,如果任务使用大量内存,你可能会发现,缓存和内存控制器上的压力越大,总吞吐量实际上就会下降,甚至可能大幅下降。
即使在最佳情况下,超线程也只能增加约 15% 的吞吐量。这意味着两个线程的运行速度各自只有单个线程的 57%。
答案2
确实没有什么混淆。
核心是位于芯片上的处理器。您可以拥有一个处理器,它是单个封装上的单个核心。您还可以拥有一个双核处理器,它是带有多个 CPU 的 1 个封装。任何多核处理器也是如此。您可以拥有 1000 个核心处理器,它仍然是带有 1000 个处理器的 1 个封装。
多处理器是指多个插槽和物理 CPU 封装。您可以拥有 2 个单核处理器,或更多。如果 CPU 支持,您还可以拥有多个多核处理器。就功率和性能而言,4 个四核处理器与在单独的封装上拥有 16 个处理器或 1 个 16 核封装基本相同。它只是 4 个封装,每个封装有 4 个核心。
线程是指一次可以运行多少个独立进程。简单来说,大多数处理器一次可以处理 1 个线程,而超线程一次可以处理 2 个线程。HTT(超线程)意味着每个核心(无论是 2 对 1 还是 1 对 2)都可以执行 2 个线程。因此,四核 HTT 处理器理论上可以执行 8 个线程。这并不总是正确的,有些软件处理 HTT 时表现很差。
至于您的进程,很难说。如果您有 10 个具有超线程的内核,并且应用程序只能在单个线程上运行,那么您可能会有 20 个单独的实例,前提是:您有足够的 RAM 您的磁盘驱动器可以跟上 IO 没有其他东西中断或接管
如果进程无法自行填满整个 CPU(假设使用率上限为 50%),您可能也能够向池中添加一些额外的线程/作业。