我已经在Linux上开发了一个应用程序,它可以从一个具有更多RAM的进程中受益,而不是将单个进程卸载到具有较少RAM的较小计算节点上。所以这是我在这里研究的一个选项。
我想在主节点上运行一个进程,但却以某种方式使所有计算节点上的所有可用RAM显示为主节点的一个大块可用RAM(就像单个系统一样)。
据我所知,这种单系统映像(SSI)的使用现在称为分布式共享内存(DSM)。我一直在研究单个系统映像,但无法分辨哪些支持这个。
有谁知道哪些开源SSI软件包可以实现这一目标?我也想知道OpenSSI,虽然列表非常不活跃。
编辑:
在我使用DSM时,我在考虑在不同计算节点上具有物理上独立的地址空间,并且能够访问它们就像它们是单个节点上单个进程可用的一个逻辑共享地址空间一样节点。我使用术语SSI(在此上下文中使用不正确)因为我希望系统从用户角度出现为单个系统。我目前使用的SSI是一个文件系统,其中所有无盘节点都从主节点上特定位置的单个映像启动。
我理解多个节点的内存是通过comm lib(目前正在使用)完成的,但我需要更多的RAM。因此,在研究似乎提到支持“单个IPC空间”的能力的SSI包时,我认为可能是有用的。我读过几篇白皮书,其中节点的内存管理可以在操作系统级别处理,因此我不需要通信库,因为这将在用户空间下面抽象。
我不想修改代码,因为如果它已经在localhost上可用,它已经利用了大量的RAM。我确实有大量的RAM,除了RAM分布在不同的节点上,因此需要使用一些MPI类型的库。修改代码成本很高,添加更多RAM需要新的集群,成本高昂。但是,这个解决方案会让我的应用程序产生一个非常大的单一地址空间的错觉......我只能希望。
答案 0 :(得分:1)
这是一个商业解决方案,而不是开源,但我相信ScaleMP可以做你想要的。我曾在过去使用它的安装工作,将多个商品服务器聚合成一个更大的系统,但我自己并没有直接使用它。我认为它需要Infiniband作为节点互连,并且它们有一个不太长的supported hardware列表。
答案 1 :(得分:0)
虽然您必须重构应用程序以使用它们,但有许多库可以实现此目的。
仅举几例。这些都不是自动的,但使用它们不应该是一个巨大的负担。
答案 2 :(得分:0)
您可以做很多选择,包括在群集中使用MPI,PGAS语言或使用像ScaleMP那样的软件包。这实际上取决于您的预算,您的应用程序可以利用不同技术的程度以及您当前的应用程序已经编写使用的内容。如果应用程序仅在单个操作系统下运行并且没有充分利用集群环境,那么最好的选择是纯硬件配置中的SMP系统(4个甚至8个CPU)或最多128个CPU&# 39; s处于虚拟SMP配置中。然后你需要确定它是计算还是只需要你需要的内存。如果使用vSMP类型实现,则可以拥有2,4,6或更多节点,这些节点具有高内核数和高频CPU。如果您不需要处理能力,只需要内存占用,您就可以向vSMP添加更多节点,这些节点具有较低的核心数和低频率。 CPU&只是将它们用作内存控制器。
答案 3 :(得分:0)
@Ender
您可以下载vSMP Foundation Free - 它将允许您聚合最多8个节点的内存,总计高达1TB RAM,免费。请注意,免费版本仅允许内存聚合,这意味着您将拥有仅一个节点的核心的计算能力,但许多的RAM。
http://www.ScaleMP.com/free