Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么amazon ec2的性能会大大降低?_Java_Performance_Amazon Ec2 - Fatal编程技术网

Java 为什么amazon ec2的性能会大大降低?

Java 为什么amazon ec2的性能会大大降低?,java,performance,amazon-ec2,Java,Performance,Amazon Ec2,没有详细介绍我的算法,只是给出了一些实验结果。对于某些给定的输入,我的Java顺序算法在我的笔记本电脑上工作4秒钟(Intel Core i5 430M-2核、4线程、2.27 GHz、4Mb缓存、3Gb内存)。该算法的并行版本使用1个线程工作6秒,使用2个线程工作5秒,使用3个线程工作4秒。如果我通过ssh在AmazonEC2上运行它,顺序的时间是6秒,并行的时间是6到7秒,不管有多少线程 你为什么认为它比较慢?因为亚马逊使用虚拟机,那里的代码运行速度较慢?你有什么经验 我有一个应用程序,我想

没有详细介绍我的算法,只是给出了一些实验结果。对于某些给定的输入,我的Java顺序算法在我的笔记本电脑上工作4秒钟(Intel Core i5 430M-2核、4线程、2.27 GHz、4Mb缓存、3Gb内存)。该算法的并行版本使用1个线程工作6秒,使用2个线程工作5秒,使用3个线程工作4秒。如果我通过ssh在AmazonEC2上运行它,顺序的时间是6秒,并行的时间是6到7秒,不管有多少线程

你为什么认为它比较慢?因为亚马逊使用虚拟机,那里的代码运行速度较慢?你有什么经验

我有一个应用程序,我想在有大量内存和计算能力的环境中进行测试。目前它在亚马逊上还没有成功

我使用普通Java对象和
hppc
外部库(高性能原语计算库)。没有数据库和花哨的东西

实例类型是c1,可能是这个(如果它正确,我会很快告诉您,我知道它是c1,但不知道它是中型还是大型):


根据我的经验,虚拟机具有非常昂贵的多线程任务切换惩罚,在以下情况下可能会导致严重的性能惩罚:

  • 您的线程具有大量的线程间通信
  • 在一台物理机器上运行多个虚拟机
  • 虚拟机“核心”实际上作为线程映射到物理机的主操作系统上。如果主操作系统的线程量为30ms,而虚拟机的线程量也为30ms,那么可能发生的情况是:

  • 虚拟机将尝试“唤醒”其一个虚拟内核上的休眠线程
  • 它向硬件操作系统发送信号,以唤醒物理内核上的线程
  • 另一个虚拟机正在使用它们。等待30毫秒等待quantum
  • 线程在硬件上唤醒
  • 如果您的另一个线程期望响应速度快于30毫秒,那么您就遇到了瓶颈。更糟糕的是,基于Linux的服务器上非空闲线程调度的默认量实际上是~100ms

    AmazonEC2系统不仅仅是虚拟机,它们是共享单个物理机的虚拟机。为了在每个服务器机架上获得最大的利润,亚马逊还必须在一定程度上超额订阅这些系统。例:

    • 物理主机有16个HT线程(8个物理内核)
    • 虚拟机每个都有8个虚拟核
    • EC2将在机器上粘贴3-4个虚拟机(超额订阅)

    这样做是因为很多应用程序不使用8核的满负载。但是如果你与使用8个内核的东西配对。。真倒霉我不确定实际的配对比例是多少,我想亚马逊一直在调整它。

    你在用什么?我的经验是,虚拟机并不总是按照你认为应该的方式扩展。但不要回答你的问题。在任何情况下,您的算法似乎都不能很好地扩展,即使用3个线程可以使性能提高50%。您是否进行了任何磁盘i/O?使用更多线程时,硬盘IO到HDD的速度通常会较慢。如果操作系统只找到一个核心,听起来性能特征是合理的。否则,正如其他人所说,它可能是由I/O引起的,根据我的经验,I/O在EC2上可能非常慢。
    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