多核心CPU服务器是否可以configuration为允许操作系统将所有内核视为单个CPU,并通过允许处理器作为单个CPU运行?
很多现代服务器都是多核CPU。 他们的方式是所有的CPU核心报告为1个CPU的操作系统? 这将是方便运行的应用程序被devise为一个单一的CPU。
你问的是
“我可以在多核机器上运行单线程应用程序,并充分利用所有内核?”
答案是不
单线程应用程序只能在一个内核上运行,并且永远不能使用比单内核所能提供的资源更多的资源。
你是说,说一个4核3Ghz的CPU,你想操作系统看到它作为一个单核12Ghz的CPU? 如果是这样的话,那么不,你不能这样做。
除非应用程序是专门编写来要求访问CPU0(我甚至不确定是否有这种可能性),应该没有关系。
汤姆斯硬件有一个实用程序,使应用程序在启动时具有特定CPU的亲和力。 我没有尝试过,所以把它当成你会的。 它可以在这里find
据我所知,你希望将双核心CPU转换到一个单核心应用程序的速度是每个核心两倍的CPU。 不幸的是,这是不能做到的。 最接近它的是在intel的i7 cpu中实现的想法,如果核心处于闲置状态时,它可以智能地超频其中一个内核。
如果一个应用程序只能使用一个CPU,它将无论如何。 不pipe有多less人在场。
操作系统将看到所有启用的CPU,但应该能够分离核心与套接字例如(例如SQL Server亲和力)。 但是,不,你不能让一个4核心显示为一个我知道的操作系统。
取决于BIOS,您可能可以禁用除了其中一个内核之外的所有内核,但是您将失去大部分性能。 您也可以将程序设置为在单个核心上运行。
使用单个内核创build虚拟机也将提供解决scheme。
关于使用虚拟机解决这个问题:重点是使用与系统中的物理内核一样多的单核虚拟机。 然后在每个虚拟机上运行应用程序的单个实例。 这实际上会导致每个单独的实例的运行速度比在主机操作系统上自行运行稍慢。 但是,这将允许更多的工作量并行化。
这一切都假设你的环境和代码将允许这个应用程序的多个实例,并且你可以将工作量分解成实例的块。
当然,这样做的最好方法是将应用程序重新编写为multithreading; 然而,就开发人员的工作时间而言,这样做多次是不切实际的。
AMD反向超线程!
http://www.theinquirer.net/inquirer/news/1005560/amd-socket-am2-has-a-secret-weapon
(剧透:不存在)
正如OP在评论中提到的那样,在VM中运行操作系统和应用程序又怎么样? 这基本上和伪装一个更快的CPU是一样的吗?
总之,没有。 虚拟化只有在本地执行操作系统和应用程序指令时才能够快速工作。 从理论上讲,有人可能会重写无用的指令,以更好地利用多个CPU,但这可能会失败,除了非常简单的任务。 你怎么知道你没有执行发送数据的手段,但是对这些数据的计算还没有完成呢?
这是应用程序必须编写和编译multithreading操作的原因之一。
正如Sage所说,如果你想看到一个大的cpu而不是多个核心,那么不会。 至less,不是我所知道的。
然而,在Linux中,你可以像这样临时禁用一个内核:
echo 0 >> /sys/devices/system/cpu/cpu1/online
你的性能会受到影响,因为现在系统上运行的所有内核都将运行在剩下的内核上。
我一直在想这件事。 我认为如果一个虚拟机使用仿真处理器,可以在所有物理CPU上同步传播它的位宽,那么在当前的多核CPU上就可以实现这一点。 例如,你可以使一个3 Ghz 8核心16线程芯片出现在操作系统和在VM上运行的程序为6 Ghz 4核心8线程芯片或12 Ghz 2核心4线程芯片。 我知道没有这样的虚拟机,但很有可能可以做到这一点(显然一些IPC从物理CPU的减less)。
至于devise这样做的芯片,目前还没有,但是如果一个devise允许连接内核的位宽的物理连接在每个周期的整个宽度上接受指令,那么你可以在不使用虚拟机和较小的击中IPC。
对于像VM Ware,Intel或者AMD这样的硬件或者软件公司来说,非常吃惊的是,鉴于CPU市场的现状,他们试图弄清楚如何做到这一点。 想象一下,无需在快速游戏CPU或具有所有这些额外PCIe通道的怪物多核心CPU之间进行select……当使用不使用多CPU线程的程序时,您可以简单地更改CPU的模式。 那么,开发人员的压力就会回落,如果CPU能够做到这一点,就不需要multithreading应用程序。 虚拟机的核心可能已经比物理CPU多出现在对IPC的沉重的税收上,我们需要一些可以做相反的事情,如果你能做到这个线程中的要求,很多程序性能仍然会受益匪浅。
AMD几年前就有了合并核心的Core Control软件来提高时钟速度。 用户是有限的核心组合,我曾经运行我的6核心在2核心合并,并能够得到4.2从基地3.2时钟
好吧,让我们假装我们是非常有钱的,在这篇文章的时候我们得到了最新的最好的处理器。 英特尔I9 7880X有18个内核。 我如何将所有这些内核绑定到一个处理器中? 简单的答案是,你不能。
最好的解释是你的处理器是一个有18人的房间。 你不能把它们组合成一个人。 软件的程序员必须设置程序来使用更多的内核。 大多数程序只使用1个内核。 所以这个问题一次就有核心任务。
一些程序知道接下来的任务是什么,所以他们分配更多的内核来完成更多的function,但据我所知,在这篇文章中,大多数MAINSTREAM软件使用的是4核。 有几个专门的程序将使用您的所有处理器。