没有详细介绍我的算法,只是给出了一些实验结果。对于某些给定的输入,我的Java顺序算法在我的笔记本电脑上工作4秒(Intel Core i5 430 m-2核,4个线程,2.27 GHz,4Mb缓存,3Gb内存)。该算法的并行版本使用1个线程运行6秒,5秒使用2个线程,4秒使用3个线程。如果我通过ssh在亚马逊ec2上运行它,那么无论有多少线程,时间顺序是6秒,并行是6到7秒。
你为什么觉得速度慢些?因为amazon使用虚拟机,而在那里运行的代码更慢?你有什么经验?
我有一个应用程序,我想在具有大量内存和计算能力的环境中进行测试。目前,它在亚马逊上是不成功的。
我使用普通Java对象和hppc外部库(高性能的原始计算库)。没有数据库和花哨的东西。
实例类型是c1,可能是这个类型(如果它正确,我很快就会通知您,我知道它是c1,但不知道它是中型还是大型):
High-CPU Extra Large Instance
7 GiB of memory
20 EC2 Compute Units (8 virtual cores with 2.5 EC2 Compute Units each)
1690 GB of instance storage
64-bit platform
I/O Performance: High
EBS-Optimized Available: 1000 Mbps
API name: c1.xlarge发布于 2013-04-11 16:28:04
根据我的经验,虚拟机有非常昂贵的多线程任务切换惩罚,如果:
虚拟机“核心”实际上被映射为线程到物理机器的主操作系统上。如果主操作系统的线程量为30 OS,而VM的线程量为30 OS,那么可能发生的情况是:
如果您的另一个线程期望响应速度比30 If快一点,那么您就遇到了瓶颈。更糟糕的是,在基于Linux的服务器上,非空闲线程调度的默认量程实际上是100 is。
亚马逊的EC2系统不仅仅是虚拟机,它们是共享一台物理机器的虚拟机。要想在每个服务器机架上获得最大的实惠,亚马逊必须在一定程度上进一步超额订阅这些系统。例如:
这是因为许多应用程序不使用满载8个核心。但是如果你和一个用了整整8个核心的东西配对.令人扫兴!我不知道实际的配对比率是多少,我想亚马逊也在不断地调整它。
https://stackoverflow.com/questions/15953324
复制相似问题