Concurrency 什么是编写并发和分布式应用程序的良好硬件设置?

Concurrency 什么是编写并发和分布式应用程序的良好硬件设置?,concurrency,distributed-computing,Concurrency,Distributed Computing,我没有钱构建自己的uber刀片系统,但我想进入并发和分布式编程(想想CCR/DSS、Hadoop、伏地魔计划等) 我目前有一个4GB的Q6600和一些单独的硬盘,但仅此而已。虽然我可以编写多线程程序,但我无法正确地测试分布式文件系统/键值存储并查找相关的瓶颈(磁盘访问、网络等) 有人有什么建议吗?买一些便宜的小盒子并建立一个迷你网络?或者是一个带有两个i7和ESX以及一个模拟网络的机箱 编辑: 我目前正在使用VirtualBox和VmWare,这对我来说还不够好,如果我错了,请纠正我:例如,硬盘

我没有钱构建自己的uber刀片系统,但我想进入并发和分布式编程(想想CCR/DSS、Hadoop、伏地魔计划等)

我目前有一个4GB的Q6600和一些单独的硬盘,但仅此而已。虽然我可以编写多线程程序,但我无法正确地测试分布式文件系统/键值存储并查找相关的瓶颈(磁盘访问、网络等)

有人有什么建议吗?买一些便宜的小盒子并建立一个迷你网络?或者是一个带有两个i7和ESX以及一个模拟网络的机箱

编辑:

我目前正在使用VirtualBox和VmWare,这对我来说还不够好,如果我错了,请纠正我:例如,硬盘驱动器可能会锁定,要么是因为两台虚拟机在其上运行,要么是因为所有硬盘驱动器访问都通过同一个hdd控制器进行。网络是完全虚拟的,所以这里也没有真正的案例测试


如果我选择虚拟化路线,您会推荐什么,以便我尽可能接近“现实生活”

为分布式系统测试虚拟化。在机器上“拔下插头”、断开网络电缆等操作要容易得多

是一个优秀的免费虚拟机,我发现它对于开发非常方便。如果你喜欢的话,大部分都是开源的



至于多线程部分,它实际上更容易——总是使用比硬件线程数量更多的软件线程进行测试。然后,只是为了好玩,做一些事情,比如在硬盘上写一个10GB的文件,插入/拔出硬件以关闭调度程序。您将得到令人惊讶的结果。

HDD访问可能通过同一控制器进行,但顺序是任意的。如果有多个进程请求IO,则基本上会在块级别对单个请求进行随机排序。也就是说,除非你真的这样做,否则你无法真正进入现实生活。使用虚拟化作为廉价的替代方案,您应该能够捕获大多数同步问题。