Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Benchmark Guide

The benchmark directory contains performance test cases based on benchmark/benchmark_common.sh. Test cases are organized by data source type, with each case containing different processing scenarios. This document explains the overall structure, common parameters, and the purpose of each test scenario.

Prerequisites

  1. All scripts run in release profile by default and depend on wparse/wpgen/wproj being in PATH.
  2. Run scripts from the benchmark directory or specific test directory.

Directory Structure

benchmark/
├── benchmark_common.sh      # Common function library (parameter parsing, environment initialization)
├── check_run.sh            # Batch test script (runs all tests with -m parameter)
├── models/                 # Shared model files
│   ├── wpl/               # WPL rule sets (nginx, sysmon, apt, aws, etc.)
│   └── oml/               # OML transformation models
├── sinks/                 # Shared sink configurations
│   ├── parse_to_blackhole/
│   ├── parse_to_file/
│   ├── trans_to_blackhole/
│   └── trans_to_file/
├── case_tcp/              # TCP data source test scenarios
├── case_file/             # File data source test scenarios
├── case_syslog_tcp/       # Syslog TCP test scenarios
├── case_syslog_udp/       # Syslog UDP test scenarios
└── wpgen_test/            # wpgen performance test

Test Scenarios

Processing Modes:

  • parse: Parse mode - pure WPL parsing only
  • trans: Transform mode - WPL parsing + OML transformation

Output Targets:

  • blackhole: Discards data, tests pure parsing/forwarding performance
  • file: Outputs to files, tests complete processing pipeline

Test Case Matrix

CaseModeInputOutputPurpose
case_tcp/parse_to_blackholeParseTCP (daemon)BlackholeTCP reception + pure parsing performance
case_tcp/parse_to_fileParseTCP (daemon)FileFull TCP-to-file parsing pipeline
case_tcp/trans_to_blackholeTransTCP (daemon)BlackholeParsing + OML transformation performance
case_tcp/trans_to_fileTransTCP (daemon)FileFull transformation pipeline
case_file/parse_to_blackholeParseFile (batch)BlackholePure parsing throughput
case_file/parse_to_fileParseFile (batch)FileFile-to-file parsing
case_file/trans_to_blackholeTransFile (batch)BlackholeParsing + OML transformation throughput
case_file/trans_to_fileTransFile (batch)FileFull transformation pipeline
case_syslog_tcp/parse_to_blackholeParseSyslog TCPBlackholeSyslog TCP pure parsing
case_syslog_tcp/trans_to_blackholeTransSyslog TCPBlackholeSyslog TCP parsing + transformation
case_syslog_udp/parse_to_blackholeParseSyslog UDPBlackholeSyslog UDP pure parsing
case_syslog_udp/trans_to_blackholeTransSyslog UDPBlackholeSyslog UDP parsing + transformation

Common Options

All test scripts share the following parameters (parsed by benchmark_parse_args in benchmark_common.sh):

ParameterDescriptionDefault
-mUse medium dataset (200K lines)20M lines
-fForce regenerate input dataSmart detection
-c <cnt>Specify line count (overrides -m)-
-w <cnt>Specify wparse worker count6 (daemon) / 10 (batch)
wpl_dirWPL rule set directory (positional)nginx
speedGeneration rate limit (lines/sec, 0=unlimited)0

Run ./run.sh -h to see supported options for a specific test script.

Quick Start

Run Single Test

cd benchmark

# Default config (nginx rules, large dataset)
./case_tcp/parse_to_blackhole/run.sh

# Medium dataset
./case_tcp/parse_to_blackhole/run.sh -m

# Use sysmon rules, 12 workers, 1M lines/sec rate limit
./case_tcp/parse_to_blackhole/run.sh -w 12 sysmon 1000000

Run All Tests

cd benchmark
./check_run.sh

FAQ

  • WPL model load failure: Check wpl path in wparse.toml is correct relative to test directory
  • Data generation failure: Check disk space and wpgen.toml configuration
  • Slow test execution: Use -m parameter to reduce data size, adjust -w for worker count

Benchmark 用例指南 (中文)

benchmark 目录收录了基于 benchmark/benchmark_common.sh 的性能测试用例。测试用例按数据源类型组织为多个 case 目录,每个 case 下包含不同的处理场景。本文档说明整体结构、通用参数与各测试场景的用途。

前置准备

  1. 所有脚本默认在 release profile 下运行,并依赖 wparse/wpgen/wproj,确保它们位于 PATH 中。
  2. 从 benchmark 目录或具体测试目录运行脚本。

目录结构

benchmark/
├── benchmark_common.sh      # 公共函数库(参数解析、环境初始化等)
├── check_run.sh            # 批量测试脚本(使用 -m 参数运行所有测试)
├── models/                 # 共享的模型文件
│   ├── wpl/               # WPL 规则集(nginx、sysmon、apt、aws 等)
│   └── oml/               # OML 转换模型
├── sinks/                 # 共享的 sink 配置
│   ├── parse_to_blackhole/
│   ├── parse_to_file/
│   ├── trans_to_blackhole/
│   └── trans_to_file/
├── case_tcp/              # TCP 数据源测试场景
├── case_file/             # File 数据源测试场景
├── case_syslog_tcp/       # Syslog TCP 测试场景
├── case_syslog_udp/       # Syslog UDP 测试场景
└── wpgen_test/            # wpgen 性能测试

测试场景说明

处理模式:

  • parse: 解析模式 - 纯 WPL 解析
  • trans: 转换模式 - WPL 解析 + OML 转换

输出目标:

  • blackhole: 黑洞输出 - 丢弃数据,用于测试纯解析/转发性能
  • file: 文件输出 - 输出到文件,测试完整的处理链路

测试用例矩阵

用例模式输入输出用途
case_tcp/parse_to_blackhole解析TCP (daemon)黑洞TCP 接收 + 纯解析性能
case_tcp/parse_to_file解析TCP (daemon)文件完整 TCP 到文件解析管道
case_tcp/trans_to_blackhole转换TCP (daemon)黑洞解析 + OML 转换性能
case_tcp/trans_to_file转换TCP (daemon)文件完整转换管道
case_file/parse_to_blackhole解析文件 (batch)黑洞纯解析吞吐量
case_file/parse_to_file解析文件 (batch)文件文件到文件解析
case_file/trans_to_blackhole转换文件 (batch)黑洞解析 + OML 转换吞吐量
case_file/trans_to_file转换文件 (batch)文件完整转换管道
case_syslog_tcp/parse_to_blackhole解析Syslog TCP黑洞Syslog TCP 纯解析
case_syslog_tcp/trans_to_blackhole转换Syslog TCP黑洞Syslog TCP 解析 + 转换
case_syslog_udp/parse_to_blackhole解析Syslog UDP黑洞Syslog UDP 纯解析
case_syslog_udp/trans_to_blackhole转换Syslog UDP黑洞Syslog UDP 解析 + 转换

通用选项

所有测试脚本共享以下参数(由 benchmark_common.sh 中的 benchmark_parse_args 解析):

参数说明默认值
-m使用中等规模数据集(20 万行)2000 万行
-f强制重新生成输入数据智能检测
-c <cnt>指定数据条数(与 -m 互斥,优先级更高)-
-w <cnt>指定 wparse worker 数量6 (daemon) / 10 (batch)
wpl_dirWPL 规则集目录(位置参数)nginx
speed样本生成限速(行/秒,0 表示不限速)0

执行 ./run.sh -h 可查看某个测试脚本支持的选项组合。

快速开始

运行单个测试

cd benchmark

# 使用默认配置(nginx 规则,大规模数据集)
./case_tcp/parse_to_blackhole/run.sh

# 使用中等规模数据集
./case_tcp/parse_to_blackhole/run.sh -m

# 使用 sysmon 规则,12 个 worker,限速 1M 行/秒
./case_tcp/parse_to_blackhole/run.sh -w 12 sysmon 1000000

批量测试所有场景

cd benchmark
./check_run.sh

常见问题

  • WPL 模型加载失败:检查 wparse.toml 中的 wpl 路径是否相对于测试目录正确
  • 数据生成失败:检查磁盘空间是否充足,确认 wpgen.toml 配置正确
  • 测试运行缓慢:使用 -m 参数减小数据规模,调整 -w 参数优化 worker 数