我正在运行r软件包“secr”中的模型。最简单的模型在4G macbook上需要数天才能完成,而且我已经尽可能在模型设置中减少运行时间。在secr中可以进行并行(多核)处理,但好处很小,运行时间可能会增加。如果我切换到云中的高功率虚拟机(例如AWS的EC2,具有16 RAM和4 vCPUs),我是否可能看到运行时间的改善,或者EC2的四个vCPUs像多核系统一样工作(在这种情况下,即使有4个vCPU,我也只能从一个vCPU中受益)?我已在几个不同的论坛上提出了这个问题,并收到了不同的答案。
您可以将vCPUs视为多核系统。对于在系统上运行的任何软件,它们都会显示为多个内核。
好问题。这取决于情况。如果您切换到具有更好虚拟硬件规格的EC2实例类型,您可能会看到运行时的改进。AWS运行定制版本的Xen hypervisor,并且您正在获取vCPUs,正如您所指出的那样。性能将取决于其他客户工作负载的变化。如果所有vCPUs都分配给实例,并且每个实例都在运行CPU密集型工作负载,则您将看到性能下降趋势。这取决于在hypervisor上运行的所有实例使用模式。Citrix的这篇文章解释了在Xen上平衡vCPU时间之间的一些微妙差别以及为什么性能会有所不同:
Citrix on Xen vCPU Performance
实例类型很重要,不仅是vCPUs和RAM。避免使用T2实例,因为它们是“可突发”的,CPU性能肯定会有所不同。这篇来自AWS的文章建议尝试M4实例类型进行与R的并行处理:
针对特定类型的 EC2 实例,您可以控制 C 状态(核心空闲时可以进入的睡眠级别)和 P 状态(核心的期望性能频率)。这将允许您为您的工作负载调整实例性能。以下链接详细解释了哪些实例类型允许 C 状态和 P 状态控制,并向您展示如何使用实用程序“压力”对不同配置进行基准测试和调整。
最好在首次提供实例时设计一个测试,以查看该类型是否符合您的性能要求,然后稍后再次运行测试,以查看性能基准是否保持。
t2
机器就有100%的核心可用。可突发并不意味着您所暗示的可变或不可预测。它不是“尽力而为”或共享核心平台。可突发意味着您无法24/7以100%的速度运行核心,因为您将比赚取积分更快地耗尽积分-只有在这种情况下才会限制速度。相比之下,t1
极其不稳定且糟糕。 - Michael - sqlbot