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 配置和工作流构造而异。

基准测试结果

注意

我们使用以下测量指标进行了基准测试:

  • 工作流吞吐量 =(工作流/运行时)。运行时是运行工作流的总时间。

  • 引擎吞吐量 =(工作流/引擎运行时)。engine_runtime 是引擎运行工作流的时间。

  • 工作流 = 工作流数量。

当只有 1 个工作流时,引擎吞吐量和工作流吞吐量之间没有显著的时间上的差别。如果队列中有 2 个工作流,且只有 1 个工作程序时,第一个工作流的运行时会影响第二个工作流的运行时。

典型数据准备任务的基准测试结果

Benchmark results for a typical data prep task.
Benchmark results for a typical data prep task.

典型 CPU 高负荷预测或机器学习任务的基准测试结果

Benchmark results for a typical CPU heavy predictive or machine learning task.
Benchmark results for a typical CPU heavy predictive or machine learning task.

有关详细信息,请参阅本文档底部的 文档链接 。

默认情况下,Designer 已为新工作流启用 AMP。对于新的 Server 安装或现有 Server 上的新工作程序,默认设置是允许同时执行 AMP 和原始引擎。工作流设置决定使用哪种引擎。

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

1. 升级前,请记下您的当前设置。

2. 升级后,请将选项恢复到您所需的值。

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

1. 升级前,请记下为 workflows allowed to run simultaneously(允许同时运行的工作流)设置的数字。

2. 升级后,取消选中 Allow Server to manage workflows running simultaneously

3. 输入为 workflows allowed to run simultaneously(允许同时运行的工作流)保存的数字。

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

1. 升级前,请记下您的当前设置。

2. 升级后,请将选项恢复到您所需的值。

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

1. 升级前,请记下您的当前设置。

2. 升级后,请将选项恢复到您所需的值。

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

注意

并发作业数

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

内存上限

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

处理线程数

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

手动值设置的建议

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

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

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

  • 并行运行的 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 稳定安装所需的最低硬件要求。如果您无法满足最低要求,则可能会在引擎运行的任何节点上出现性能低下和随机服务关闭的风险。

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

Minimum hardware requirements for Server

注意

用绿色突出显示的行是建议的最低配置。显示 1 个并行工作流信息的行有助于您了解需要增加多少资源才能将 1 个额外的作业添加到现有配置中。

为实现最佳性能而推荐的硬件

Server 最佳性能硬件建议的定义是,在使用 AMP Engine 时,Server 能够尽可能高效地完成工作流的最适当的硬件配置。这有助于消除繁忙系统上的拥塞问题,并优化 AMP 引擎的性能和吞吐能力。

我们建议使用以下硬件设置以获得最佳性能:

Recommended Hardware for Optimal Performance of Server

注意

* 逻辑核心指的是 vCPU 或物理核心中的逻辑核心。实现逻辑核心引用方式标准化,是一种在本地部署服务器和云中的虚拟服务器之间进行一致比较的方式。

  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 发生了哪些变化? 中的回答

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

在 Server 中打开 AMP 是否会导致现有的任何工作流失败?

  • 不会,它们的运行方式与以前完全相同。

允许 AMP 和原始引擎均可在 Server 上执行会改变现有工作流的运行方式吗?

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

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

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

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

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

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

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

启用 AMP 后,客户是否能够这样做?

  • 完成的时间应该仍然持续较好,只有少数例外情况下,完成时间会稍长一些。

如果启用 AMP 导致丧失了对于“一致运行时间”的保证,那么,是否建议此类业务案例的用户禁用 AMP?

  • 如果资源配置得当,AMP 和原始引擎工作流运行都应是可预测的(可使用新基准进行预测,而不是仅根据原始引擎的历史性能结果)。唯一会变得不可预测的情况是:工作程序的硬件资源分配不足(原始引擎和 AMP 竞争资源)。

可以在启用 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 引擎的关键概念