Skip to main content

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 和原始引擎。工作流设置决定使用哪种引擎。

注意

When you upgrade to Server version 2022.1, we recommend validating your engine choice settings and resource allocations. The new 'Allow Server to manage workflows running simultaneously' functionality, and the change to enable AMP by default, can result in settings changing in your environment.

If you have an existing Server and want to maintain your current system settings, please read these instructions before upgrading.

1.  Controller(控制器) > General(常规信息) > Enable AMP Engine(启动 AMP Engine)

  • Before upgrading, note your current settings.

  • After upgrading, restore the selection to your desired value.

2. Worker(工作程序) > General(常规信息) Allow Server to manage workflows running simultaneously(允许 Server 管理同时运行的工作流)

  • Before upgrading, note the number set for ‘workflows allowed to run simultaneously’.

  • After upgrading, deselect Allow Server to manage workflows running simultaneously.

  • Input the number you saved for ‘workflows allowed to run simultaneously’.

3.  Engine(引擎) > General(一般信息)  > Engine(引擎

  • Before upgrading, note your current settings.

  • After upgrading, restore the selection to your desired value.

4. Engine(引擎) > General(常规信息)  >  Run engine at a lower priority(以较低的优先级运行引擎)

  • Before upgrading, note your current settings.

  • After upgrading, restore the selection to your desired value.

我们建议您使用新的选项 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 性能。这些计算的公式如下:

Calculation Formulas

并发作业数

同时作业数 = min(floor(逻辑处理器数量 / 8), (floor(总内存 / 8000) - 2))

内存上限

内存上限 = floor(总内存 / (同时作业数 +2))

  • For Server machines that act as both a worker and a controller with the embedded MongoDB, the Memory Limit (MB) is automatically calculated based on this formula:

    (((Total Physical RAM/2) - 4096) / Number of Simultaneous Jobs)

  • For standalone workers, more memory is allocated to run workflows based on this formula:

    (Total Physical RAM / (Number of Simultaneous Jobs +2))

  • If the formulas result in less than 2 GB, set the Memory Limit to the minimum of 2 GB to ensure the engine is able to execute.

处理线程数

线程数 = floor(逻辑处理器总数/并发作业数)

手动值设置的建议

我们建议您在手动设置这些值时遵循以下准则,以获得最佳性能:

  • 每个运行工作流的内存用量: 为了使 AMP 实现最佳性能,建议每个工作流至少使用 8GB 内存。

  • 每个运行工作流的 CPU 用量: 每 6-8 个逻辑 CPU 核心处理 1 个同时运行的工作流。

  • Number of physical cores per node: For optimal performance, we recommend 8 physical cores per node and horizontal scaling to additional nodes. Typically, this means 4 simultaneous running workflows per node.

  • 并行运行的 AMP 引擎的最大数量: 完全取决于硬件。理论上来讲,如果工作程序具有 128 个逻辑核心和 160GB 的 RAM,则可以同时运行 16 个 AMP 或混合 AMP 和原始引擎作业。但是,此时磁盘 I/O 和网络带宽更有可能成为瓶颈。原始引擎和 AMP 的性能都将受到磁盘 I/O 和网络带宽的限制,具体取决于数据大小以及数据来源和输出位置。

  • 运行 E1 的同时可以运行的 AMP 引擎的最大数量: Server 不区分 AMP 引擎和原始引擎作业。Server 只需将工作流发送给引擎,由引擎决定是否需要通过 AMP 或原始引擎运行。因此,如果启用了 AMP 引擎,Server 将假定所有作业都是 AMP。

我们建议您为操作系统保留 1 个作业所需的内存,并额外保留 1 个作业所需的内存,以避免在通过 Server 手动运行来自 Designer 的工作流时产生负面影响。我们用于计算资源的公式已经考虑到了这些建议。

如需详细了解最新的 Server 系统要求,请参阅 Server 系统要求 帮助页面。我们的建议分两类: 最低硬件要求 可实现最佳性能的推荐硬件

最低硬件要求

Server 最低硬件要求的定义是运行 Alteryx Server 稳定安装所需的最低硬件要求。如果您无法满足最低要求,则可能会在引擎运行的任何节点上出现性能低下和随机服务关闭的风险。

为了完成所需的并行工作流数量,建议满足以下最低硬件要求:

Desired # Concurrent Workflows

Minimum System Requirements

Memory (GB RAM)

Physical Cores

2

32

4

3

48

6

4

64

8

5

80

10

6

96

12

7

112

14

8

128

16

  1. 在 2022.1版之前,AMP 在 Server 上是可用的,但默认禁用。

  2. 对于 2022.1 及以后的版本,如要安装新的 Server,控制器和工作程序将默认设置为 AMP 和原始引擎均允许执行。对于现有 Server,现有的控制器和工作程序设置可能会改变,并且新的工作程序将默认设置为 AMP 和原始引擎均允许执行。如果您希望避免发生这种情况,请参阅我们关于如何保留当前设置的说明。

  3. 用于在控制器和工作程序节点中启用 AMP 引擎的设置位于 Alteryx 系统设置中。现在还有其他设置用于管理每个引擎的硬件分配。还有一项推荐设置,用于 允许 Server 管理引擎资源

  4. 现有 Server 安装的系统设置:

    1. Controller > General > Enable AMP Engine 如果您曾经更改过此值,则无论更改为什么值,该值在升级后都将保持不变。如果您从未更改过此设置,并且始终将默认状态保持为未选中状态,该复选框现在将被选中,这意味着在默认情况下启用 AMP。

    2. 对于所有工作程序, Worker > General > Allow Server to manage workflows running simultaneously 默认设置为 True 。此设置设为 True 时,您无法设置可同时运行的工作程序数量。

      1. 将在服务启动时根据 Server 环境中的可用 CPU 和内存自动计算允许同时运行的工作程序。

        Worker configuration in Alteryx System Settings.
    3. Engine > General > Engine ,如果客户更改了该值,则无论更改为什么值,该值在升级后将保持不变。如果客户从未更改过此设置,并且始终使用默认的原始引擎选项,则新的默认设置将设置为“Both Engines”。

    4. Engine > General > Allow Server to manage engine resources 是一个默认设为 False 的新设置。

      Both Engines configuration in Alteryx System Settings.
    5. 用于计算默认值的 Engine > General > Memory Limit 公式已更改。

    6. 用于计算默认值 Engine > General > Default number of processing threads  的公式已更改。

    7. Engine > General > Run engine at a lower priority :如果客户更改了该值,则无论其更改为什么值,该值在升级后将保持不变。如果客户始终使用默认值 False,则升级后,新的默认值将设置为 True

  5. 新 Server 安装的系统设置:

    1. Controller > General > Enable AMP Engine 复选框默认为 True

    2. 对于所有工作程序, Worker > General > Allow Server to manage workflows running simultaneously 默认设置为 True

      1. 将在服务启动时根据 Server 环境中的可用 CPU 和内存自动计算 Workers allowed to run simultaneously(允许同时运行的工作程序)

    3. Engine > General > Engine 下拉菜单默认设为 Both Engines

    4. Engine > General > Allow Server to manage engine resources 默认设为 False

    5. 用于计算默认值的 Engine > General > Memory Limit 公式已更改。

    6. 用于计算默认值 Engine > General > Default number of processing threads  的公式已更改。

    7. Engine > General > Run engine at a lower priority 默认设为 True

  6. 用户是否可以改回设置,即在 Server 中关闭 AMP?

    1. 如果管理员不想使用 AMP,他们需要手动实现禁用。请参见下图,了解“系统设置”的 控制器常规配置 部分中的“引擎”设置。

      Controller configuration in Alteryx System Settings.
    2. 如果管理员希望在某些工作程序节点上禁用 AMP,可以在“系统设置”的 引擎配置 部分中完成此操作。请参阅下面的“引擎”下拉设置。在下图中,它设置为 两类引擎 ,但可以改为仅选择 原始引擎 两类引擎 是新 Server 环境中的默认设置。

      Engine configuration in Alteryx System Settings.
  • 没有单独的内存限制。在 系统设置 中, Engine > General > Memory Limit 字段适用于引擎。它既适用于 Designer,也适用于 Server,基本上适用于运行引擎的任何地方。

  • Designer 一次只运行一个工作流,因此限制不同且宽容度更高。

默认情况下,系统将自动启用 AMP 并配置所有相关设置。只有想要禁用时,才需要进行更改。请参阅 Designer 和 Server 发生了哪些变化? 中的回答

确保遵循 最低硬件要求准则 以获得最佳性能和稳定性。

No, they will run in the exact same way as they did before.

  • 在 Designer 中保存工作流时,“运行时”设置选项是否使用 AMP Engine。在 Server 中运行时,在 Designer 中保存的任何选项都将被遵守。Server 永远不会覆盖工作流的引擎选项。因此,允许 AMP 和原始引擎均可在 Server上执行,并不会导致任何以原始引擎保存的工作流使用 AMP 引擎运行。如果保存工作流时选择 AMP 作为引擎选项,但 AMP 未在 Server 上启用,则工作流将不会以原始引擎运行,并会失败。

  • 要让以前保存为原始引擎的工作流以 AMP 运行,必须在 Designer 中重新保存工作流,并选择 使用 AMP 引擎 设置。

  • 在 AMP 中运行工作流时,可能会更改生成的输出行的顺序,因为一些操作现在是并行完成的。请记住这一点,并验证您的流程是否依赖于输出排序。如果是这样,您可以对工作流进行调整,以确保原始引擎排序。

  • 您可以预期每个工作流的运行时间会发生变化。

  • 通常,AMP 工作流作业将使用正确数量的处理核心显著加快运行速度。

  • 在某些情况下,AMP 作业所需的时间可能比原始引擎作业所需的时间更长,特别是当工作流占用大量 CPU 资源且每个工作流的线程数较低时。

  • 虽然在一般情况下,您的工作流的完成速度会更快,非 AMP 工作流的运行时间可能会略长,因为争用资源的 AMP 工作流会占用一些资源。但是,它不会改变 服务质量 (QoS) 的运作方式,某些工作流可能运行得更快。QoS 将继续以其一贯的方式运作。

If it’s properly resourced, both AMP and original Engine workflows should be predictable (predictable using a new baseline, instead of going off of historic original Engine performance results only). The only time it would become unpredictable is if a worker’s hardware resources are under-allocated (original Engine and AMP competing for resources).

可以在启用 AMP 的情况下将工作流保存到 Server,然后在禁用 AMP 的情况下保存工作流的副本。然后将每个工作流运行几次,以查看哪种工作流性能更好。另请注意,当与其他 AMP 工作流同时运行时,AMP 工作流的运行速度通常会更快。

对服务质量的关注

无论是原始引擎还是 AMP 引擎,都受 引擎配置内存限制 。不同之处在于每个引擎处理该内存限制的方式:

  • 原始引擎将预分配整个限值。

  • AMP 将按需分配内存,并确保不超过内存限值。

这是对资源的更有效利用。原始引擎是多线程的,但不是高度多线程的。AMP 更擅长串行运行作业。优点在于总吞吐量,使用 AMP 的总吞吐量要高于使用原始引擎时的总吞吐量。

Server 现在能够分析您的硬件并为每个引擎分配适当的资源。它的功能无法媲美操作系统上的资源管理器,但通过这个新功能,我们为 Server 实施了管理资源的功能。

如果管理员做了相应的配置,我们会根据可用的硬件资源自动分配允许同时运行的作业数。有关工作程序配置的详细信息,请转至 工作程序 帮助页面。

否,资源是按引擎作业分配的。每个作业都有自己的可用资源,这意味着,作业之间不应存在资源争用。

AMP 文章

AMP 引擎网络讲座 (32 分钟)

Alteryx AMP Engine

Alteryx Engine 和 AMP:主要区别

AMP 的内存使用

在 AMP 上使用工具

使用全新 AMP 引擎加快分析流程

以 AMP 运行工作流

Alteryx AMP 引擎:说明

AMP 引擎技术深度剖析 | 第 1 部分 | 为什么选择 AMP?

AMP 引擎技术深度剖析 | 第 2 部分 | AMP 引擎的关键概念