虚拟处理器和高级网络linux &视窗
在我提出我的问题之前,大家好:
如果您不想阅读,请跳到问题
假设:
- 我可以访问Linux(ubuntu) & Windows(xp 及更高版本,除了 Windows Vista)数量巨大。
- 我熟悉汇编器,并且我 很好地掌握了 C++。
- 我对两者都很熟悉 windows(专家)& linux(中级)
- 我熟悉驱动程序(windows)
- 我擅长网络,并且有 设置一些我自己的
- 我愿意付出惊人的努力来实现这一目标(不是用金钱,而是用时间/努力)
- 至少了解一些实际问题(记忆位置)
我在这些年中 我收集了大量不再使用的计算机(50 台)。最近我开始思考这是多么浪费,我想回收那些电脑/再次利用它们。于是这个想法诞生了:我想将它们全部捆绑在一个网络上,并将它们的综合 CPU 速度转发到我的主机。我已经安装了某种集群计算机,目前只有 5 台计算机。网络共享硬盘/显示器/键盘/鼠标,我想将处理器添加到该列表中。
问题:
我可以 - 如果可以的话我应该如何继续,将分布在我的网络上的其他计算机的所有处理器结合起来,并使其在我的 Windows Server 2008r2 主机上显示为处理器(s)? IA。我可以模拟处理器吗?
如何尽快将一台计算机的计算机电源/结果传输至主机?
我如何通过这个网络共享我的所有物理内存(ram,范围从 ddr 1 到 3)
谢谢提前;-)
ps:
我确实意识到这几乎是不可能实现的,请阅读假设6。
编辑:
我知道分布式程序,我已经阅读并尝试过它们。但我发现它们不适合我的需要,因为我想运行本机 PE 可执行文件。不是定制的二进制文件
,但感谢大家的建议:D
Hello everyone before I launch my question:
if you don't want to read skip to the question
Assume:
- I have access to both linux(ubuntu)
& windows (xp and up, except for
windows vista) in huge quantities. - I'm familiar with Assembler, and I
have a good if not advanced grasp of
C++. - I'm familiar with both
windows(expert) &
linux(intermidiate) - I'm familiar with drivers(windows)
- I'm good with networks, and have
set-up a few of my own - I'm willing to go to amazing lengths to achieve this(not with money, but with time/effort)
- I know about at least a few practical problems (memory locations)
In the course of the years I've gathered a big number of computers(50) that I don't use anymore. Recently I started thinking about what a waste it is, I wanted to recycle those computers/make use of them again. And so this idea was born: I want to bundle them all on a network, and forward their combined cpu speed to my host computer. I already have some sort of cluster computer installed, it's currently only 5 computers big. And the network shares it's hard disks/monitors/keyboards/mouses, I want to add processors to that list.
Question:
Can I -and if I can how should I proceed, combine all the processors of other computers spread over my network, and make it appear to my windows server 2008r2 host computer as a processor(s)? IA. Can I simulate a processor?
How can I get the computer power/result from one computer as quickly as possible over to the host computer?
How can I share all my physical memory over this network(ram, ranging from ddr 1 to 3)
Thanks in advance ;-)
ps:
I do realize this will almost be impossible to achieve, read assume 6.
EDIT:
I'm aware of distributed programs, I've read and experimented with them. But I find them not suiting my needs since I want to run native PE executables. Not custom built binaries
But thanks for the suggestions everyone :D
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
如果您想在 Windows 2008 中模拟一组虚拟 CPU,并且实际上获得的功率大于网络延迟损失的功率,那么我认为您无法在一生中单枪匹马地做到这一点。也许你可以,那样的话我会向我认识的每一位雇主推荐你。
您可以做的是选择一个统一的 Linux 发行版并在所有系统上运行它(作为 Windows 盒子或本机上的虚拟机)。在每个上安装 MPI 的实现,并使它们相互连接。现在您可以像在超级计算机上一样编写分布式应用程序。我建议节点之间使用 10Gb 以太网连接。您必须编写特殊的 MPI 应用程序才能利用该功能。
If you want to simulate a set of virtual CPU's in Windows 2008, and actually gain more power than you lose in network latency, then I don't think you can do that singlehandedly over your lifetime. Maybe you can, in that case I will reccomend you with every employer I know.
What you could do is choose a uniform linux distrubution and run it (as virtual machine on windows boxes or native) on all systems. Install an implementation of MPI on each, and have them connect to each other. Now you can write distributed applications like they do on supercomputers. I would recommend 10Gb ethernet connections between the nodes. You will have to write special MPI applications to take advantage of the power.
我建议坚持使用分布式编程环境,例如 OpenMP 或 Beowulf 以便您的应用程序是分布式的,而不是操作系统本身。
I'd suggest sticking to a distributed programming environment like OpenMP or Beowulf so that your application is distributed rather than the OS itself.
我知道的一个项目在(修改后的)Linux 内核下实现了这一点。它被称为莫西克斯;现在有几种变体。
这是我所知道的唯一一个真正的单系统映像集群并声称可以工作。
然而,我对你的项目是否有能力做任何有用的事情非常怀疑;实际上,与使用了 5 年的 PC 相比,插入 iPhone 可能会更好地利用(电力)电源。
尽管在网络上移动数据会产生一些成本。某些类型的计算问题需要移动少量数据,但需要大量处理 - 例如破解加密密钥和 3D 渲染。然而,许多其他问题领域需要大量数据分布在很多地方,这在实践中似乎需要使用非常昂贵的网络。大多数科学集群似乎都使用高速网络(> 千兆位以太网),
如果通过使用更昂贵的 CPU 而无需任何网络来更轻松地获得相同的结果,那么廉价 CPU 的昂贵网络似乎是一种错误的经济。如今,您可以在 1u 机架服务器中获得类似 16 个内核的东西,从而为您提供 16 个具有非常快速互连的 CPU,且无需额外成本。
A project I'm aware of implements this under (a modified) Linux kernel. It is called Mosix; there are now several variants.
This is the only one I know of which is a real single-system-image cluster and claims to work.
However, I am extremely skeptical about the ability of your project to do anything useful; in practice it would probably be a better use of (electrical) power to plug an iphone in than a PC which is 5 years old.
Notwithstanding the fact that moving data around a network incurs some costs. A few types of computing problems require little data to be moved around, but a lot of processing - examples are cracking encryption keys and 3d rendering. However, many other problem domains need lots of data to be in lots of places, which in practice seems to warrant the use of very expensive networking. Most scientific clusters seem to use high-speed networks (> gigabit ethernet)
Expensive networking for cheap CPUs seems like a false economy, if the same result can be got more easily by having more expensive CPUs without any networking. You can get something like 16 cores in a 1u rack server nowadays, giving you 16 CPUs with very fast interconnect and no additional cost.
您应该研究 SSI(单一系统映像)软件。该软件运行在多台计算机(节点)之上,可以为您提供在具有大量 CPU 的计算机上运行的单个操作系统的图片。但是,不幸的是,大多数SSI系统都是在节点之间分配进程(其中一些系统在程序启动时进行这种分配,另一些系统可以将整个正在运行的进程迁移到不同的节点)。我不知道任何 SSI 系统能够分配线程。
另一种变体是找到一个虚拟化软件,它本身能够在 MPI/TCP/任何快速网络上运行。我也不知道有这样的系统。例如,qemu 邮件列表中有一个线程: http://www .mail-archive.com/[email protected]/msg18338.html
也不错的文本:http://perilsofparallel.blogspot.com/2009/01/multi-multicore-single -system-image_9797.html
You should look into SSI (Single System Image) software. This software, running on top of several computers (nodes) can give you a picture of single OS running on computer with a lot CPU. But, unfortunately, most SSI systems are for distributing processes between nodes (some of them do such distribution at program start, another can migrate the whole running process to different node). I know no SSI system, capable of distributing threads.
The another variant can be to find a virtualization software, which itself capable of running on top of MPI/TCP/any fast network. I also know no any such system. E.g. there was a thread in qemu mailing list: http://www.mail-archive.com/[email protected]/msg18338.html
Rather good text also: http://perilsofparallel.blogspot.com/2009/01/multi-multicore-single-system-image_9797.html
我还应该推荐 Kerrighed ( http://www.kerrighed.org/wiki/index.html php/Main_Page )
它是 Linux 的 SSI(单一系统映像)变体,可以模拟共享内存:
这是通过 USE_REMOTE_MEMORY Kerrighed 功能打开的
I should also recommend a Kerrighed ( http://www.kerrighed.org/wiki/index.php/Main_Page )
It is a SSI (Single System Image) variant of linux, which can simulate a Shared memory:
This is turned on via
USE_REMOTE_MEMORY Kerrighed capability