Cluster computing 一个vCPU是否可以使用来自两台不同硬件计算机的不同CPU

Cluster computing 一个vCPU是否可以使用来自两台不同硬件计算机的不同CPU,cluster-computing,cpu,virtualization,hpc,Cluster Computing,Cpu,Virtualization,Hpc,我对此进行了调查,但似乎没有得到公正的答案。 假设我不想创建一个有vCPU的虚拟机,vCPU必须有10个内核,但我只有2台计算机,每台计算机有5个物理CPU内核 是否可以通过在这两个物理CPU上中继来创建一个vCPU,使其像常规的一个物理CPU一样运行? 更新1:假设我使用的是virtualBox,术语vCPU指的是虚拟cpu,这是一个众所周知的术语 更新2:我问这个问题是因为我正在做一些关于HPC集群中动态资源调配的研究,我不知道“动态”这个词是否真的意味着从不同的硬件(如裸机服务器)动态分配

我对此进行了调查,但似乎没有得到公正的答案。 假设我不想创建一个有vCPU的虚拟机,vCPU必须有10个内核,但我只有2台计算机,每台计算机有5个物理CPU内核

是否可以通过在这两个物理CPU上中继来创建一个vCPU,使其像常规的一个物理CPU一样运行?

更新1:假设我使用的是virtualBox,术语vCPU指的是虚拟cpu,这是一个众所周知的术语


更新2:我问这个问题是因为我正在做一些关于HPC集群中动态资源调配的研究,我不知道“动态”这个词是否真的意味着从不同的硬件(如裸机服务器)动态分配虚拟CPU。我不知道我是否在错误的地方搜索,但文档中没有人真正回答这个问题。

我将使用术语vCPU作为虚拟核心,pCPU作为物理核心,正如virtualbox文档所定义的:

在“处理器”选项卡上,您可以设置来宾操作系统应该看到的虚拟CPU内核的数量。从3.0版开始,VirtualBox支持对称多处理(),可以向每个虚拟机提供多达32个虚拟CPU核。但是,您不应该将虚拟机配置为使用比实际可用的CPU内核更多的CPU内核(真实内核,无超线程)

我将尝试回答您的问题:

假设我不想创建一个有vCPU的虚拟机,vCPU必须有10个内核,但我只有2台计算机,每台计算机有5个物理CPU内核

如果您想要创建虚拟机(使用单OS映像,SMP机器),那么所有虚拟核心都应该具有共享内存两台物理机器5个核中的每台核总共有10个核,但它们没有共享内存
。因此,使用经典的虚拟化软件(qemu、kvm、xen、vmware、virtualbox、virtualpc),您无法将两台物理机转换为单个虚拟机

是否可以通过在这两个物理CPU上中继来创建vCPU,使其像常规的一个物理CPU一样运行

没有

普通物理机器有一个或多个CPU芯片(插槽),每个芯片有一个或多个内核。第一台PC有一个单核芯片;服务器有两个插槽,每个插槽中有一个核心。后来制造了多核芯片,大型服务器可能有2个、4个、6个甚至8个插槽,每个插槽有一定数量的内核。此外,物理机器具有RAM动态计算机内存,用于存储数据。早期的multisocket系统只有一个内存控制器,当前的multisocket系统有多个内存控制器(MC,每个插槽1-2个,每个控制器有1个、2个,有时是3个或4个内存通道)。多核和多插槽系统都允许任何CPU内核访问任何内存,即使它由其他插槽的MC控制。所有对系统内存的访问都是一致的(,)-任何内核都可以写入内存,任何其他内核都可以看到第一个内核以某种定义的顺序写入(根据系统的类型)。这是最新的

两台不同机器(你的电脑和笔记本电脑)的“两个物理”芯片没有将它们的RAM连接在一起,也没有在硬件中实现任何内存共享和一致性模型。两台不同的计算机使用网络(以太网、Wifi,…只发送数据包)或文件(将文件存储在USB驱动器上,断开与PC的连接,连接到笔记本电脑,获取文件)进行交互。网络和文件共享不一致,也不是共享内存

我正在使用virtualBox

使用VirtualBox(以及其他一些虚拟化解决方案),您可以为虚拟机分配8个虚拟核心,即使您的物理机有4个核心。但VMM将模拟有8个核,在可用的物理核上逐个调度它们;因此,在任何时候,只有来自4个虚拟核的程序将在物理核上运行(“core i7,这是一个4核..我在虚拟机上最多可以使用16个VCPU..是的,这意味着主机核将过度提交…所有来宾VCPU的总负载将在实际CPU之间分配。”)。在这种情况下,您将能够在5核物理上启动10核虚拟机,而想要使用10核的应用程序将得到它们。但应用程序的性能不会比5个真正的CPU更好,而且会更少,因为会有“虚拟CPU切换”,频繁的同步会增加额外的开销

更新2:我问这个问题是因为我正在做一个关于动态资源调配的小研究

如果你想研究“动态资源调配”,问问它,而不是“同时在两台电脑上运行未知的东西”)

在HPC集群中

没有单一类型的“HPC”或“HPC群集”。HPC的不同变体将需要不同的解决方案和实现。某些HPC任务需要大量内存(0.25、0.5、1、2 TB)并且将仅在共享内存的4或8插槽计算机上运行,其中包含最大的内存DIMM模块。其他HPC任务可能会大量使用GPGPU。第三种将结合线程并行(OpenMP)和进程并行(MPI),因此应用程序将使用共享内存,而线程在一台机器上运行,它们将通过网络发送和接收数据包,以便在一个任务上共同工作,同时在多个(数千个)机器上运行物理机器。第四种HPC可能需要100或1000 TB的共享内存;但没有这样数量的SMP/NUMA机器,因此应用程序可以用范例/模型(分布式全局地址空间DGAS、分区全局地址空间PGAS)编写在特殊的机器或大型集群上运行。使用特殊的解决方案,PGAS中的100s TB的全局共享内存是从许多连接到网络的计算机上模拟的。程序是用特殊的语言编写的,或者只使用特殊的