我受到一个软件的限制,该软件每个程序运行实例使用一个核心。它将运行SQL服务器工作队列并将结果存入服务器。因此,我运行的实例越多,整个项目的完成速度就越快。我曾经使用过Azure VMs,可以通过两种方式加快这一过程。
1)我可以在单个核心虚拟机上运行该应用程序,克隆该虚拟机并在我认为必要的情况下运行它,以充分加快工作。
OR
2)我可以在8核VM上运行应用程序8次...再次克隆该VM并在我认为必要的情况下运行它以充分加快工作。
我在测试中注意到,添加8个单核VM和1个8核VM的速度大致相同。假设这是真的,拥有单核机器的价格会更好吗?
定价有点神秘,无论是真正的CPU使用时间,还是什么。使用1-8核心方法更容易,因为旋转机器并将它们拆除需要时间,但我想这可能是自动化的。
从某些定价页面看,多核单核VM方法的成本会降低吗?
附带问题:我可以像一些电源shell脚本一样继续添加某个映像的虚拟机并运行应用程序,然后在接近完成后开始关闭它们吗?在生成虚拟机后,是否有一些方法可以启动应用程序,而无需远程访问每个虚拟机并运行它?
答案 0 :(得分:12)
我认为所有其他条件相同,并且此代码真正受CPU限制,并且不会受益于在同一台机器上运行多个进程所提供的任何内存共享,您应该选择单核机器< / strong>而不是多核机器。
原因:
隔离故障域
在可能的情况下,缩小而不是向上扩展更好,因为它可以自然地隔离故障。如果您的一个小节点崩溃,那只会影响一个进程。如果大型节点崩溃,则多个进程会关闭。
负载平衡
与任何多租户系统一样,Windows Azure是一种共享资源。这意味着您可能会与其他工作负载竞争CPU周期。使用小型VM可以让您更好地分配数据中心中物理服务器,这些服务器在配置计算机时具有最佳资源状况(您可能希望确保在再次启动VM之前停止和取消分配VM Azure结构放置算法,以选择最佳主机)。如果您使用大型虚拟机,则不太可能找到具有最佳争用的合适主机以容纳许多虚拟核心。
虚拟处理器计划
对于调度虚拟CPU与调度物理CPU的方式不同,人们并不广泛了解,但这是值得一读的。要记住的主要事情是VMware ESXi和Hyper-V(运行Azure)等虚拟机管理程序将多个虚拟核心安排在一起而不是单独安排。因此,如果您有一个8核VM,则物理主机必须具有8个可以同时同时的物理核心,然后才能允许虚拟CPU运行。虚拟内核越多,主机在任何给定时间就越不可能拥有足够的物理内核(即使有7个物理内核空闲,VM也无法运行)。这可能导致虚拟化效果导致VM在添加更多虚拟CPU核心时表现更差。 http://www.perfdynamics.com/Classes/Materials/BradyVirtual.pdf
简而言之,单个vCPU机器比8个vCPU机器更有可能获得物理处理器的份额,其他条件相同。
我同意定价基本相同,只是存储许多小型虚拟机的存储成本稍高,而大型虚拟机的存储成本则较低。但Azure中的存储远比计算机便宜,因此可能不会给经济规模带来任何影响。
希望有所帮助。
答案 1 :(得分:5)
<强>结算强>
根据Windows Azure Virtual Machines Pricing Details,虚拟机按分钟收费(wall clock time)。价格按小时费率(60分钟)列出,并根据虚拟机运行部分小时的总分钟数计费。
2013年7月,1个小型虚拟机(1个虚拟核心)的成本为每小时0.09美元; 8个小型虚拟机(8个虚拟核心)的成本为每小时0.72美元; 1个超大型虚拟机(8个虚拟核心)的成本为每小时0.72美元(与8个小型虚拟机相同)。
VM规模和效果
虚拟机的大小不仅在核心数和内存数量上有所不同,而在于also on network I/O performance,从小型100 Mbps到超大型800 Mbps不等。
超小型虚拟机的CPU和I / O功率相当有限,并且不适合您所描述的工作负载。
对于单线程,I / O绑定的应用程序,如问题中所述,超大型虚拟机可能会有优势,因为每个请求的响应时间更快。
建议对每个核心运行2,4或更多进程的工作负载进行基准测试。例如,小型VM中的2个或4个进程以及超大型VM中的16个,32个或更多个进程,以在CPU和I / O负载之间找到适当的平衡(假设您没有使用比可用RAM更多的RAM)。
自动缩放强>
自动扩展虚拟机built-into Windows Azure directly。它可以基于CPU负载或Windows Azure队列长度。
另一种方法是使用专用工具或服务来监控服务器之间的负载,并运行PowerShell脚本以根据需要添加或删除虚拟机。
自动运行强>
您可以使用Windows计划程序在Windows启动时自动运行任务。
答案 2 :(得分:2)
定价为“机器的正常运行时间(小时)* VM大小/小时*实例数”
e.g。你有一个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