Link Search Menu Expand Document Documentation Menu

测试过程

如果您的工作负载只定义了一个基准测试场景,请在顶层指定调度。使用 test-procedures 元素指定其他属性,例如名称或描述。测试程序类似于基准测试场景。如果您有多个测试程序,可以定义各种挑战。

下表列出了此数据集中基准测试场景的测试程序。测试程序可以引用操作部分中定义的所有操作。

参数 必需 类型 描述
名称 字符串 测试程序的名称。命名测试程序时,请勿使用空格;这可确保名称在命令行中易于输入。
描述 字符串 以人类可读的格式描述测试程序。
用户信息 字符串 在测试开始时输出消息,以通知您重要的测试相关信息,例如弃用项。
默认 布尔型 设置为 true 时,如果您未在命令行中指定测试程序,则选择默认测试程序。如果工作负载只定义了一个测试程序,则将其隐式选为默认程序。否则,您必须在恰好一个挑战中定义 "default": true
调度 数组 定义工作负载任务的运行顺序。

调度

schedule 元素包含任务列表,这些任务是 OpenSearch Benchmark 支持的操作,在基准测试期间由工作负载运行。

用法

schedule 元素使用本节中描述的方法定义任务。

使用操作元素

以下示例使用 operations 元素定义了一个 force-mergematch-all 查询任务。force-merge 操作不使用任何参数,因此只需要 nameoperation-typematch-all-query 参数需要查询 bodyoperation-type

operations 元素中定义的操作可以在调度中多次重用。

{
  "operations": [
    {
      "name": "force-merge",
      "operation-type": "force-merge"
    },
    {
      "name": "match-all-query",
      "operation-type": "search",
      "body": {
        "query": {
          "match_all": {}
        }
      }
    }
  ],
  "schedule": [
    {
      "operation": "force-merge",
      "clients": 1
    },
    {
      "operation": "match-all-query",
      "clients": 4,
      "warmup-iterations": 1000,
      "iterations": 1000,
      "target-throughput": 100
    }
  ]
}

内联定义操作

如果您不想在调度中重用某个操作,可以在 schedule 元素内部定义操作,如以下示例所示

{
  "schedule": [
    {
      "operation": {
        "name": "force-merge",
        "operation-type": "force-merge"
      },
      "clients": 1
    },
    {
      "operation": {
        "name": "match-all-query",
        "operation-type": "search",
        "body": {
          "query": {
            "match_all": {}
          }
        }
      },
      "clients": 4,
      "warmup-iterations": 1000,
      "iterations": 1000,
      "target-throughput": 100
    }
  ]
}

任务选项

每个任务包含以下选项。

参数 必需 类型 描述
操作 列表 引用在 operations 元素中定义的操作名称,或内联包含整个操作。
名称 字符串 当多个任务使用相同的操作时,为任务指定唯一的名称。
标签 字符串 可用于在 tasks.clients 之间或同时执行任务的客户端数量之间进行筛选的唯一标识符。默认值为 1。
客户端 整数 指定将同时运行任务的客户端数量。默认值为 1

目标选项

OpenSearch Benchmark 在运行任务时需要以下选项之一

目标吞吐量 整数 定义基准测试模式。如果未定义,OpenSearch Benchmark 假定它是一个吞吐量基准测试,并尽可能快地运行任务。这对于批处理操作很有用,因为批处理操作更倾向于实现更高的吞吐量而不是更低的延迟。如果已定义,则目标指定所有客户端每秒的请求数。例如,如果您指定 target-throughput: 1000 并使用 8 个客户端,则每个客户端每秒发出 125 (= 1000 / 8) 个请求。
目标间隔 间隔 target-throughput 小于每秒 1 次操作时,定义一个由 target-throughput 除以 1(以秒为单位)的间隔。定义 target-throughputtarget-interval,但不能同时定义两者,否则 OpenSearch Benchmark 将引发错误。
忽略响应错误级别 布尔型 控制当使用 on-error=abort 命令标志运行基准测试时,是否忽略任务期间遇到的错误。

基于迭代的选项

基于迭代的选项确定操作应运行的次数。它还可以定义任务在并行运行时迭代运行的次数。要配置基于迭代的调度,请使用以下选项。

参数 必需 类型 描述
迭代次数 整数 指定客户端应执行操作的次数。所有迭代都包含在测量结果中。默认值为 1
预热迭代次数 整数 指定客户端应执行操作以预热基准测试候选的次数。warmup-iterations 不会出现在测量结果中。默认值为 0

并行任务

parallel 元素同时运行包装在该元素内的任务。

并行运行任务时,每个任务都需要 client 选项,以确保基准测试中的客户端保留给该任务。否则,如果在 parallel 元素内指定了 client 选项而未连接到任务,则基准测试将对所有任务使用该数量的客户端。

用法

在以下示例中,parallel-task-1parallel-task-2 并行执行 bulk 操作

{
  "name": "parallel-any",
  "description": "Workload completed-by property",
  "schedule": [
    {
      "parallel": {
        "tasks": [
          {
            "name": "parellel-task-1",
            "operation": {
              "operation-type": "bulk",
              "bulk-size": 1000
            },
            "clients": 8
          },
          {
            "name": "parellel-task-2",
            "operation": {
              "operation-type": "bulk",
              "bulk-size": 500
            },
            "clients": 8
          }
        ]
      }
    }
  ]
}

选项

parallel 元素支持所有 schedule 参数,以及以下选项。

任务 数组 定义应同时执行的任务列表。
完成者 字符串 允许您定义任务列表中一个任务的名称或值 any。如果 completed-by 设置为列表中一个任务的名称,则一旦该特定任务完成,parallel-task 结构就被视为已完成。如果 completed-by 设置为 any,则当列表中任何一个任务完成时,parallel-task 结构就被视为已完成。如果未显式定义 completed-by,则一旦列表中所有任务完成,parallel-task 结构就被视为已完成。

基于时间的选项

基于时间的选项确定操作应运行的时间持续时间(以秒为单位)。这对于批处理样式操作非常理想,因为它们可能需要额外的预热期。

要配置基于时间的调度,请使用以下选项。

参数 必需 类型 描述
时间段 整数 指定 OpenSearch Benchmark 用于测量的时间段(以秒为单位)。批量索引不需要此项,因为 OpenSearch Benchmark 会批量索引所有文档,并在指定的 warmup-time-period 之后自然测量所有样本。
预热时间段 整数 指定 OpenSearch Benchmark 逐渐添加客户端并达到为操作指定的客户端总数的时间段(以秒为单位)。
预热时间段 整数 指定预热基准测试候选的时间量(以秒为单位)。在预热期间捕获的任何响应数据都不会出现在测量结果中。
剩余 350 字符

有问题?

想贡献?