员工线程

通过 WORKERTHREADS 配置设置,可以增加或减少线程池中可用于并行 Essbase 操作的线程数。

语法

WORKERTHREADS [appname] value
  • appname(可选)- 应用程序名称。如果未指定应用程序,则指定的线程数将应用于所有应用程序。

  • value - 要在线程池中可用的线程数。最小值为 5。最大值为 2048。如果 WORKERTHREADS 设置不存在,则默认值为 SERVERTHREADS 值的一半。

说明

以前, Essbase 会为并行操作(例如并行计算、并行数据加载和并行重构)动态创建线程。但是,从发行版 11.1.2.4.000 开始,以下并行操作不会动态创建线程,而是使用预创建的线程池中设定的线程数:

  • 并行计算,使用 CALCPARALLEL 或 FIXPARALLEL

  • 并行数据加载,用于聚合存储和块存储多维数据集

  • 并行导出,适用于块存储多维数据集

  • 并行重组

线程操作准则

Oracle 建议使用以下设置,具体取决于您的系统体系结构。

表 2-1 线程操作准则

Parameter (参数) 64 位(16 个核心) 64 位(32 个核心) 64 位(16 个核心)和两个多维数据集 Oracle Exalytics In-Memory Machine,40 个核心,X2-4 Oracle Exalytics In-Memory Machine、SPARC 128 核心 Oracle Exalytics In-Memory Machine,60 个核心,X4-4
服务器线程 100英尺 1 100英尺 1 100英尺 1 100英尺 1 200英尺 1 120英尺 1
员工线程 50 50 50 50 100 60
代理线程 30英尺 1 30英尺 1 30英尺 1 30英尺 1 30英尺 1 30英尺 1
DLTHREADSPREPARE 2 2 2 2 英尺 2 2 英尺 2 2 英尺 2
直接线程写入 2英尺 3 2英尺 3 2英尺 3 2英尺 3 2英尺 3 2英尺 3
附录脚注 4 8 8 8 40 40 40
重构线程 4 4 4 8 8 8
CALCPARALLEL 最大值脚注 5 8 8 8 32英尺 6 32 32英尺 6
FIXPARALLEL 最大值 Foot 7 8 8 8 32英尺 6 32 32英尺 6

脚注 1

可能需要根据分区和并发性进行调整

脚注 2

24 个聚合存储

脚注 3

1(如果使用 .txt 加载)

脚注 4

除了设置 EXPORTTHREADS 外,还必须在数据导出中指定多个数据文件

脚注 5

必须在计算脚本中设置 SET CALCPARALLEL

脚注 6

16(如果三个或更多立方正在运行并发计算)

脚注 7

必须在计算脚本中设置 FIXPARALLEL

说明

  • WORKERTHREADS 是用于处理线程池中可用线程数的配置设置。无论是在配置中显式设置此可用性阈值,还是将其保留为其默认值 SERVERTHREADS/2,如果有效设置小于所请求的并行操作要求的值, Essbase 都会隐式降低所请求操作的并行度,使其符合线程池的参数。

    例如,考虑加载数据:

    管道的概念与 Essbase 数据加载相关。管道是内存中可以串行或并行执行的一系列数据处理元素。Essbase 数据加载操作使用由 5 个阶段组成的管道。因此,所有数据加载操作至少需要 5 个线程。

    如果使用 DLTHREADSPREPARE 或 DLTHREADSWRITE,则会增加所需的最小数据加载线程数。例如,如果将 DLTHREADSPREPARE 设置为 4,将 DLTHREADSWRITE 设置为 2,则需要 9 个线程(最小值 5 加上加 4)。

    如果为所有管道请求的线程数为 9,如上例所示,但 WORKERTHREADS 仅设置为 8,则 Essbase 会隐式将 DLTHREADSPREPARE 和 DLTHREADSWRITE 设置为 1,并且数据加载的运行总线程要求为 5(最小值和默认值)。

  • 同样,如果运行并行计算、并行导出或并行重构,则这些操作的执行并行度不会超过可用线程数。

    例如:

    • 如果 WORKERTHREADS 设置为 8,并且您尝试了 CALCPARALLEL 16,则并行计算将作为 CALCPARALLEL 8 运行。

    • 如果 WORKERTHREADS 设置为 5,并且您尝试了 EXPORTTHREADS 12,则并行导出将作为 EXPORTTHREADS 5 运行。

    • 如果 WORKERTHREADS 设置为 16,并且您尝试了 RESTRUCTURETHREADS 32,则并行重组将作为 RESTRUCTURETHREADS 16 运行。

  • 如果在同一应用程序上运行并发并行操作,则总并行度受线程池中线程数的限制。例如,如果将 WORKERTHREADS 设置为 16,并运行 CALCPARALLEL 16 的两个并发请求,则两个计算请求共享 16 个线程。计算将使用多达 16 个线程运行,但由于它们共享 16 个线程池,因此它们的运行速度接近所请求容量的一半。

  • 如果应用程序中有多个多维数据集,Oracle 建议将 WORKERTHREADS 设置为略高于一个多维数据集所需的并行线程。例如,如果 WORKERTHREADS 设置为 16,并且系统上的 CPU 数为 16,则应将 CALCPARALLEL 值设置为小于 16。

  • 如果不同服务器上的多维数据集使用 @XREF 或 @XWRITE 相互引用,请确保交叉引用的源多维数据集的 SERVERTHREADS 数量高于并行计算线程(CALCPARALLEL 或 FIXPARALLEL)。

  • 通过并行操作的线程池,需要增加资源来启动 Essbase 应用程序。如果在启动过程中遇到错误 Unable to Request Server Thread,请调整用于控制每个进程的线程数和系统中的线程总数的操作系统设置(例如,在 Linux 上,使用 ulimit 优化 nproc)。

范例

WORKERTHREADS Sample 32