如何共享CPU或RAM?


21

在网络中,我们共享文件(磁盘驱动器)或数据库。但是,我们如何通过网络共享CPU或RAM。


3
这样做的问题在于,与CPU和RAM之间的纳秒级延迟相比,网络速度实在令人难以置信!
Phoshi 2011年

@Phoshi:即使网络增加了延迟,这种设置也可能比基于磁盘的交换更快。
Piskvor 2014年

@Piskvor:但是,正如任何人都可以告诉你的那样,基于磁盘的交换对性能造成了巨大的打击!
Phoshi 2014年

@Phoshi:我同意-确实如此,最佳解决方案是“添加更多物理内存”。我要说的是,通过快速网络分页到快速设备(例如ramdisk)可能仍然比分页到物理磁盘要快。换句话说:与物理介质上的交换相比,这可能是一种更快的交换设备,即使它比物理RAM慢许多个数量级。
Piskvor 2014年

1
@Piskvor:完全合理,即使您错了,也肯定是在相同的数量级上,因此在最坏的情况下也不会更糟。我想拥有更多本地物理存储可能更便宜!
Phoshi 2014年

Answers:


21

为此,访问CPU / RAM资源的程序必须专门设计为访问所述资源。以这种方式建立的系统称为集群,资源共享的典型方式是使用称为MPI(消息传递接口)的协议。它是免费下载的软件,在Linux上使用它可以以最小的成本生成强大的群集(甚至可能是超级计算机),但是除非您具有专门设计用于利用MPI的程序,否则它没有用。这里有一些很好的集群教程,如果您仍然有兴趣的话,应该阅读一下。

编辑:

如果要设置集群,我会在这里推荐该教程。大约一年前,我通过遵循本教程制作了一个集群,并且运行良好。本教程有点陈旧,因此某些文件可能与本教程所说的文件不完全相同(有时文件会在不同/较新的Linux发行版中移动),但是如果您对Linux不太熟悉,那么这应该不是问题。本教程使用了较旧的MPI版本,但是我使用的是最新版本,并且没有不容易解决的问题。根据您的操作,实际上可能有一个可以利用MPI的程序。我知道有一些利用MPI的视频编码和数字处理程序,可以从通用来源下载。


请告诉我一些参考。
MJH

1
@MJH看到我编辑的答案。
2011年

谢谢。但是本教程可以在Linux上运行,而我使用Windows。因此,应用程序必须在MPI及其约束下编写。
MJH

3
@MJH如果要使用Windows,则只需要一个可以在Windows上使用的MPI库,但是概念是相同的。 MPICH可与Windows一起使用,或者如果您需要投入一些资金,则可以使用Windows HPC(已内置MPI电导率)构建Windows群集。尽管这确实允许您使用Windows,但是您仍将必须使用为MPI编写的程序,但目前尚无解决方法。
2011年

2
感谢您的回答-所引用的教程似乎已将地址更改为uiowa.edu/mihpclab/hpcSystsemTechnicalReport / ... ...干杯!
sdaau

9

您可以使用RAM磁盘共享RAM,但是就像共享普通磁盘一样,只不过它们位于另一台计算机的RAM中。一台计算机无法像使用自己的RAM一样直接使用另一台计算机的RAM,但是可以使用某些方法来使用另一台计算机的RAM。下一节将对此进行更多介绍。

至于CPU共享,这是可能的,但没有统一的标准。您不能只是共享它,而让另一台计算机获取所需的资源。相反,您需要具有专门设计的应用程序,这些应用程序可以在一台多台计算机上运行。这通常被称为分布式计算,并且被一些研究项目所使用,例如SETI @ Home,Einstein @ Home,Climateprediction.net等。

基本上,程序的工作方式是只有一台中央服务器来分发需要完成的工作。网络上的计算机从中央计算机下载工作单元并进行处理。之后,中央计算机从客户端接收结果,并将其合并为一个有凝聚力的结果。这样,计算机可以通过网络“共享” CPU和RAM资源。不利的一面是,程序的制作方式必须使其可以在网络上工作,而现在分布式计算在计算机的通用用途中还不够普及,因此只有少数专门的程序支持它。另一方面,它通常用于科学目的,因为获得大量的个人计算机或游戏机3比获得对大型计算机的访问便宜。


–是否有软件可以在我的网络中共享我的应用程序?而无需到国外网络!(例如,我要渲染文件,我的PC可以在7天之内完成渲染,但是我可以将其共享到我的网络中,并且可以减少到1天?
MJH

@MJH不幸的是,我还没有听说过任何可以渲染的程序。
AndrejaKo 2011年

1
共享ramdisk是没有意义的,不是吗?您会发现ram的波动性以及网络附加存储的缓慢性
Journeyman Geek

1
@AndrejaKo对于直接视频转码,我也没有听说过(但是有些人在做谷歌搜索时确实在alpha / beta中找到了一个或两个能做到的项目)。但是,对于3D渲染,自90年代以来,我还没有看到不支持 网络 渲染的3D渲染程序。
Scott Chamberlain 2013年

5

–是否有软件可以在我的网络中共享我的应用程序?而无需到国外网络!(例如,我要渲染文件,我的PC可以在7天之内完成渲染,但是我可以将其共享到我的网络中并减少到1天?) MJH 2011年3月12日在1:19

您陷入了XY问题,您不应该问“如何共享cpu和ram accros计算机”,而是“如何使用多台计算机使我的渲染更快地使用ZZZZZ?”

这在很大程度上取决于您所使用的软件以及渲染的内容(是对视频进行转码,还是渲染3D模型/视频?)。

仅举几个例子,免费的3D软件Blender支持分布式渲染,您可以让多台计算机一起工作以生成一个输出。如果要进行视频渲染,可以快速浏览一下开源项目MediaEncodingCluster,该项目可让您使用多台计算机渲染视频和音频文件。


5

我知道唯一可以共享CPU / RAM的操作系统是plan9。在那里,您几乎可以导出/安装任何东西。当然,这并不意味着表现良好。


0

通过网络共享cpu / ram来完成任务将是一个不错的功能。当前,对于将程序保存在发生情况的框中,我们仍然有一些旧观念,但是我们可以允许同一台计算机上的多个cpus访问同一段代码。我们确实有(至少)执行类似此操作的方法。网页上的Java既可以使用服务器也可以使用客户端,但是它仍然以服务器-客户端的方式进行锁定(服务器保存大部分数据)。我们需要的任务分配方式与我们在拥有多个cpus时所做的分配方式几乎相同(除了需要工作的机器需要分配程序片段和数据片段的方式。这确实给网络增加了负担)如果任务本身不是简单性质,并且可能导致新的瓶颈形成,我喜欢它在哪里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.