我受到一个软件的限制,该软件在程序运行的每个实例中都使用一个内核。它将从SQL server工作队列中运行并将结果存放到服务器。所以我运行的实例越多,整个项目就完成得越快。我曾经使用过Azure VM,可以通过两种方式加速这个过程。
1)我可以在单个核心虚拟机上运行应用程序,克隆该虚拟机,并在我认为需要的任意多个虚拟机上运行,以充分提高作业速度。
或
2)我可以在一个8核的虚拟机上运行应用程序8次,...again克隆该虚拟机,并在我认为需要的任何数量上运行它,以充分加快作业速度。
我在测试中注意到,添加8个单核VM和1个8核VM的加速效果大致相同。假设这是真的,那么单核机器在价格上会更好吗?
无论是真实的cpu使用时间,还是什么,定价都有点神秘。使用18核的方法会更容易一些,因为启动和关闭机器需要时间,但我猜这是可以自动化的。
从一些定价页面上看,多个单核心虚拟机方法的成本会更低吗?
附带问题:那么我是否可以像一些强大的shell脚本一样,继续添加某个映像的VM并运行应用程序,然后在接近完成时开始关闭它们?在生成虚拟机之后,是否有某种方法可以启动应用程序,而不必远程连接到每个虚拟机并运行它?
发布于 2013-07-16 04:38:30
计费
根据Windows Azure Virtual Machines Pricing Details的说法,虚拟机按分钟( wall clock time)收费。价格以小时费率(60分钟)列出,并根据VM运行不到一小时的总分钟数进行计费。
2013年7月,1个小型虚拟机(1个虚拟核心)的成本为0.09美元/小时;8个小型虚拟机(8个虚拟核心)的成本为0.72美元/小时;1个超大型虚拟机(8个虚拟核心)的成本为0.72美元/小时(与8个小型虚拟机相同)。
虚拟机大小和性能
虚拟机大小不仅在内核和内存数量上有所不同,而且在also on network I/O performance上也有所不同,从100MBps到800MBps不等。
超小型VM在CPU和I/O能力方面相当有限,不足以处理您所描述的工作负载。
对于单线程、I/O受限的应用程序(如问题中所述),超大VM可能具有优势,因为每个请求的响应时间更快。
对每个内核运行2个、4个或更多进程的工作负载进行基准测试也是明智的。例如,在小型VM中使用2或4个进程,而在超大型VM中使用16、32个或更多进程,以便在CPU和I/O负载之间找到适当的平衡(假设您使用的RAM不超过可用)。
自动伸缩
自动扩展虚拟机是built-into Windows Azure directly。它可以基于CPU负载或Windows Azure队列长度。
另一种替代方法是使用专门的工具或服务来监控服务器上的负载,并根据需要运行PowerShell脚本来添加或删除虚拟机。
自动运行
您可以使用Windows计划程序在Windows启动时自动运行任务。
发布于 2013-07-18 09:00:50
我会争辩说,在其他条件相同的情况下,这段代码确实是受CPU限制的,并且不能从在同一台机器上运行多个进程的任何内存共享中受益,你应该选择单核机器而不是多核机器。
原因:
隔离故障域
在可能的情况下,向外扩展比向上扩展更好,因为它可以自然地隔离故障。如果你的一个小节点崩溃,那只会影响一个进程。如果一个大型节点崩溃,多个进程就会宕机。
负载平衡
Windows Azure与任何多租户系统一样,都是共享资源。这意味着您可能会与其他工作负载竞争CPU周期。拥有较小的VM使您有更好的机会将它们分布在数据中心中在调配计算机时具有最佳资源状况的物理服务器上(您可能希望确保在重新启动VM之前停止并取消分配VM,以允许Azure fabric放置算法选择最佳主机)。如果您使用大型VM,则不太可能找到具有最佳争用的合适主机来容纳多个虚拟核心。
虚拟处理器调度
调度虚拟CPU与调度物理CPU的区别还不是很广泛,但这是值得一读的。要记住的主要事情是,像VMware ESXi和Hyper-V (运行Azure)这样的管理程序一起调度多个虚拟核心,而不是分开调度。因此,如果您有一个8核VM,则物理主机必须同时具有8个可用物理核心,然后才能允许虚拟CPU运行。虚拟核心越多,主机在任何给定时间拥有足够的物理核心的可能性就越大(即使有7个物理核心可用,虚拟机也无法运行)。这可能会导致一个矛盾的效果,即随着虚拟CPU内核的增加,虚拟机的性能会变得更差。http://www.perfdynamics.com/Classes/Materials/BradyVirtual.pdf
简而言之,在其他条件相同的情况下,单台vCPU机器比8 vCPU机器更有可能获得物理处理器的份额。
我同意价格基本相同,只是存储许多小型虚拟机的存储成本比存储较少大型虚拟机的存储成本稍高一些。但Azure中的存储比计算便宜得多,因此可能不会影响任何经济规模。
希望这能有所帮助。
发布于 2013-07-16 04:38:55
定价为“机器正常运行时间(小时)*虚拟机大小比率/小时*实例数”
例如,您有一个8核虚拟机(超大),运行一个月(30天) (30 * 24) *0.72美元* 1= 518.4美元
对于8个单核,将为(30 * 24) * 0.09 *8=518.4美元
因此,我怀疑是否会有任何价格差异。使用较小的机器和“向外扩展”的一个优点是,您可以对可伸缩性进行更细粒度的控制。一台超大型机器会比2-3台小型机器消耗更多的闲置资金。
是的,你绝对可以把它写成脚本。假设它们是IaaS机器,你可以将脚本添加到windows启动中,如果在PaaS上你可以使用"Startup Task“。Reference
https://stackoverflow.com/questions/17661248
复制相似问题