AMP 引擎最佳实践
本文档的目的是回答与全新 AMP 引擎相关的问题。本文档面向现有管理员和新用户。
如需详细了解 AMP 引擎,请转至 Alteryx AMP Engine和引擎帮助页面。
如需详细了解 Server 系统要求,请访问系统要求帮助页面。
一般译题
对于大多数使用案例来说,只要有足够的系统资源,AMP Engine 的性能和效率都较原始引擎有显著提高。有关系统资源要求和建议的更多信息,请参阅如何使用 AMP 管理系统资源?和 AMP Engine 系统有哪些要求?部分。
AMP 旨在以更快的速度处理更多的数据,与原始引擎相比,通常能更全面地使用机器资源,因而能更快地执行工作流。
原始引擎架构基本上使用单线程处理,系统按记录顺序逐条处理数据。而新的 AMP 概念允许大规模的多线程处理。AMP 以数据包为单位处理记录,以缩短运行时间,而且工具可以并行运行。在对记录进行分组和排序时,AMP 还使用了性能更高的算法,这可能会影响输出记录的顺序。
AMPlify your Workflows一文介绍了使用 AMP Engine 会获得的一些性能优势:
那些最常用的工具使用 AMP Engine 性能是最佳的。
往往数据量越大 AMP 的优势就越强。
性能因数据大小、基础硬件、数据中心和网络基础设施、Alteryx Server 配置和工作流构造而异。
默认情况下,Designer 已为新工作流启用 AMP。对于新的 Server 安装或现有 Server 上的新工作程序,默认设置是允许同时执行 AMP 和原始引擎。工作流设置决定使用哪种引擎。
注意
当您升级到 Server 版本 2022.1 时,我们建议验证您的引擎选择设置和资源分配。新增的 Allow Server to manage workflows running simultaneously(允许 Server 管理同时运行的工作流)功能以及更改为默认启用 AMP 可能会导致环境中的设置发生更改。
如果您有现有的 Server 并且想要保持当前的系统设置,请在升级前阅读这些说明。
1.控制器 > 常规 > 启用 AMP Engine
升级前,请记下您的当前设置。
升级后,请将选项恢复为需要的值。
2.工作程序 > 常规 > 允许 Server 管理同时运行的工作流
升级前,请记下您设置的“允许同时运行的工作流”的数字。
升级后,取消选中允许 Server 管理同时运行的工作流。
输入您保存的“允许同时运行的工作流”的数字。
3.引擎 > 常规 > 引擎
升级前,请记下您的当前设置。
升级后,请将选项恢复为需要的值。
4.引擎 > 常规 > 以较低的优先级运行引擎
升级前,请记下您的当前设置。
升级后,请将选项恢复为需要的值。
我们建议您使用新的选项 Allow Server to manage workflows running simultaneously(允许 Server 管理同时运行的工作流)以及 Allow Server to manage engine resources(允许 Server 管理引擎资源)。我们添加了逻辑,以使每个引擎实例在系统设置中定义的内存和逻辑 CPU 限制内运行。如果管理员要手动设置这些值,而不是让 Server 去管理这些值,则必须注意不要过度分配。
计算
当您启用 Allow Server to manage workflows running simultaneously 和 Allow Server to manage engine resources 选项时,Server 会计算同时执行的作业数,以及在服务启动时为每个作业分配的 CPU 线程(核心)和内存量。这些计算基于主机上的可用 CPU 核心总数和系统内存资源总数。它们可以还根据我们的基准测试结果,优化可用硬件的 AMP 性能。这些计算的公式如下:
计算公式
并发作业数
同时运行的作业数 = (物理处理器数/2) 取整
内存上限
内存上限的计算:如果节点上启用了 MongoDB,则公式为 (((总物理内存/2) - 4096)/同时运行的作业数);否则,公式为 (总物理内存/(同时运行的作业数 + 2))
如果使用嵌入式 MongoDB 的 Server 计算机既充当工作程序又充当控制器,则内存上限 (MB) 将根据以下公式自动计算:
(((总物理内存/2) - 4096)/同时运行的作业数)
对于独立工作程序,将根据以下公式分配更多内存来运行工作流:
(总物理内存/(同时运行的作业数 + 2))
如果公式计算结果小于 2 GB,请将内存上限设置为最小 2 GB,以确保引擎能够执行。
处理线程数
默认处理线程数 = [逻辑核心数]
手动值设置的建议
我们建议您在手动设置这些值时遵循以下准则,以获得最佳性能:
每个运行工作流的内存用量:为了实现 AMP 的最佳性能,建议每个物理核心配置 8 GB 内存。
每个运行工作流的 CPU 用量:每 2 个物理核心同时运行 1 个工作流。
每个节点的物理核心数:为了获得最佳性能,我们建议每个节点有 8 个物理核心,并水平扩展到其他节点。通常,这意味着每个节点同时运行 4 个工作流。
并行运行的 AMP 引擎的最大数量:完全取决于硬件。理论上讲,如果工作程序有 128 个逻辑核心和 160 GB 的内存,则可以同时运行 16 个 AMP 或者 AMP 与原始引擎混合的作业。但是,此时磁盘 I/O 和网络带宽更有可能成为瓶颈。原始引擎和 AMP 的性能都将受到磁盘 I/O 和网络带宽的限制,具体取决于数据大小以及数据来源和输出位置。
运行 E1 的同时可以运行的 AMP 引擎的最大数量:Server 不区分 AMP 引擎和原始引擎作业。Server 只需将工作流发送给引擎,由引擎决定是否需要通过 AMP 或原始引擎运行。因此,如果启用了 AMP 引擎,Server 将假定所有作业都是 AMP。
我们用于计算资源的公式已经考虑到了这些建议。如需了解详情,请转到引擎。
如需详细了解最新的 Server 系统要求,请参阅 Server 系统要求帮助页面。我们的建议分为两类:最低硬件要求和计算密集型工作负载的推荐硬件。
最低硬件要求
Server 最低硬件要求的定义是运行 Alteryx Server 稳定安装所需的最低硬件要求。如果您无法满足最低要求,则可能会在引擎运行的任何节点上出现性能低下和随机服务关闭的风险。
为了完成所需的并行工作流数量,建议满足以下最低硬件要求:
所需的并行工作流数量 | 最低系统要求 | |
---|---|---|
内存 (GB RAM) | 物理核心 | |
2 | 32 | 4 |
3 | 48 | 6 |
4 | 64 | 8 |
5 | 80 | 10 |
6 | 96 | 12 |
7 | 112 | 14 |
8 | 128 | 16 |
计算密集型工作负载的推荐硬件
计算密集型工作负载的服务器硬件建议是指 Server 能够尽可能高效执行高要求工作流的理想规格。这对于减少繁忙系统的拥塞至关重要。
对于计算密集型工作负载,建议使用以下硬件规格:
所需的并行工作流数量 | 针对计算密集型工作负载的建议 | ||
---|---|---|---|
内存 (GB RAM) | 物理核心 | 逻辑核心* | |
2 | 64 | 8 | 16 |
3 | 96 | 12 | 24 |
4 | 128 | 16 | 32 |
5 | 160 | 20 | 40 |
6 | 192 | 24 | 48 |
7 | 224 | 28 | 56 |
8 | 256 | 32 | 64 |
* 逻辑核心指的是 vCPU 或物理核心中的逻辑核心。实现逻辑核心引用方式的标准化是一种在物理本地服务器和云中的虚拟服务器之间进行一致比较的有效方式。英特尔超线程技术,AMD SMT,vCPU 与物理核心的比例为 2:1。
在 2022.1版之前,AMP 在 Server 上是可用的,但默认禁用。
对于 2022.1 及以后的版本,如要安装新的 Server,控制器和工作程序默认设置为允许 AMP 和原始引擎执行。对于现有 Server,现有的控制器和工作程序设置可能会不同,并且新的工作程序可能默认设置为启用 AMP 和原始引擎执行。如果您希望避免发生这种情况,请参阅我们关于如何保留当前设置的说明。
用于在控制器和工作程序节点中启用 AMP 引擎的设置位于 Alteryx 系统设置中。现在还有其他设置用于管理每个引擎的硬件分配。还有一项推荐设置,用于允许 Server 管理引擎资源。
现有 Server 安装的系统设置:
控制器 > 常规 > 启用 AMP Engine,如果您曾经更改过此值,则无论更改为什么值,该值在升级后都将保持不变。如果您从未更改过此设置,并且始终将默认状态保持为未选中状态,该复选框现在将被选中,这意味着在默认情况下启用 AMP。
对于所有工作程序,工作程序 > 常规 > 允许 Server 管理同时运行的工作流默认设置为 True。此设置设为 True 时,您无法设置允许同时运行的工作流数量。
允许同时运行的工作流会在服务启动时根据此节点上的 CPU 和内存总量自动计算。
引擎 > 常规 > 引擎,如果您曾经更改过此值,则无论更改为什么值,该值在升级后都将保持不变。如果您从未更改过此设置,并且始终使用默认的原始引擎选项,则新的默认设置将设置为两类引擎。
引擎 > 常规 > 允许 Server 管理引擎资源是默认为 False 的新设置。
引擎 > 常规 > 内存上限,用于计算默认值的公式已更改。
引擎 > 常规 > 默认处理线程数,用于计算默认值的公式已更改。
引擎 > 常规 > 以较低的优先级运行引擎:如果您曾经更改过此值,则无论更改为什么值,该值在升级后都将保持不变。如果您始终使用默认值 False,则升级后,新的默认值将设置为 True。
新 Server 安装的系统设置:
控制器 > 常规 > 启用 AMP Engine 复选框默认为 True。
对于所有工作程序,工作程序 > 常规 > 允许 Server 管理同时运行的工作流默认设置为 True。
允许同时运行的工作流会在服务启动时根据此节点上的 CPU 和内存总量自动计算。
引擎 > 常规 > 引擎下拉列表默认为两类引擎。
引擎 > 常规 > 允许 Server 管理引擎资源默认为 False。
引擎 > 常规 > 内存上限,用于计算默认值的公式已更改。
引擎 > 常规 > 默认处理线程数,用于计算默认值的公式已更改。
引擎 > 常规 > 以较低的优先级运行引擎默认为 True。
用户是否可以改回设置,即在 Server 中关闭 AMP?
如果管理员不想使用 AMP,他们需要手动实现禁用。请参见下图,了解“系统设置”的控制器常规配置部分中的“引擎”设置。
如果管理员希望在某些工作程序节点上禁用 AMP,可以在“系统设置”的引擎配置部分中完成此操作。请参阅下面的“引擎”下拉设置。在下图中,它设置为两类引擎,但可以改为仅选择原始引擎。两类引擎是新 Server 环境中的默认设置。
没有单独的内存限制。在系统设置中,引擎 > 常规 > 内存上限字段适用于引擎。它既适用于 Designer,也适用于 Server,基本上适用于运行引擎的任何地方。
Designer 一次只运行一个工作流,因此限制不同且宽容度更高。
默认情况下,系统将自动启用 AMP 并配置所有相关设置。只有想要禁用时,才需要进行更改。请参阅 Designer 和 Server 发生了哪些变化?中的回答
确保满足最低硬件要求,以维持稳定的 Server 环境。
不会,它们的运行方式与以前完全相同。
在 Designer 中保存工作流时,“运行时”设置选项是否使用 AMP Engine。在 Server 中运行时,在 Designer 中保存的任何选项都将被遵守。Server 永远不会覆盖工作流的引擎选项。因此,允许 AMP 和原始引擎均可在 Server上执行,并不会导致任何以原始引擎保存的工作流使用 AMP 引擎运行。如果保存工作流时选择 AMP 作为引擎选项,但 AMP 未在 Server 上启用,则工作流将不会以原始引擎运行,并会失败。
要让以前另存为原始引擎的工作流以 AMP 运行,必须在 Designer 中重新保存工作流,并选择使用 AMP 引擎设置。
在 AMP 中运行工作流时,可能会更改生成的输出行的顺序,因为一些操作现在是并行完成的。请记住这一点,并验证您的流程是否依赖于输出排序。如果是这样,您可以对工作流进行调整,以确保原始引擎排序。如需了解详情,请转到引擎兼容模式。
您可以预期每个工作流的运行时间会发生变化。
通常,AMP 工作流作业将使用正确数量的处理核心显著加快运行速度。
在某些情况下,AMP 作业所需的时间可能比原始引擎作业所需的时间更长,特别是当工作流占用大量 CPU 资源且每个工作流的线程数较低时。
服务质量 (QoS) 将继续以一贯的方式运行。
如果资源配置得当,AMP 和原始引擎工作流运行都应是可预测的(可使用新基准进行预测,而不是仅根据原始引擎的历史性能结果)。唯一会变得不可预测的情况是:工作程序的硬件资源分配不足(原始引擎和 AMP 竞争资源)。
可以在启用 AMP 的情况下将工作流保存到 Server,然后在禁用 AMP 的情况下保存工作流的副本。然后将每个工作流运行几次,以查看哪种工作流性能更好。另请注意,当与其他 AMP 工作流同时运行时,AMP 工作流的运行速度通常会更快。
对服务质量的关注
无论是原始引擎还是 AMP 引擎,都受引擎配置内存限制。不同之处在于每个引擎处理该内存限制的方式:
原始引擎将预分配整个限值。
AMP 将按需分配内存,并确保不超过内存限值。
这是对资源的更有效利用。原始引擎是多线程的,但不是高度多线程的。AMP 更擅长串行运行作业。优点在于总吞吐量,使用 AMP 的总吞吐量要高于使用原始引擎时的总吞吐量。
Server 现在能够分析您的硬件并为每个引擎分配适当的资源。它的功能无法媲美操作系统上的资源管理器,但通过这个新功能,我们为 Server 实施了管理资源的功能。
如果管理员做了相应的配置,我们会根据硬件资源总量自动分配允许同时运行的作业数。有关工作程序配置的详细信息,请转至工作程序帮助页面。
否,资源是按引擎作业分配的。每个作业都有自己的可用资源,这意味着,作业之间不应存在资源争用。