File Trans to File
Benchmark for “File Source → File Sink” transformation scenario: uses wpgen to generate test data files, wparse reads in batch mode with WPL parsing and OML transformation, outputs to files to test complete transformation pipeline performance.
Purpose
Validate the ability to:
- Read data from files in batch mode
- Apply WPL parsing rules
- Apply OML transformation models
- Write transformed output to files
- Measure complete transformation pipeline throughput
Features Validated
| Feature | Description |
|---|---|
| File Source | Reading from pre-generated data files |
| WPL Parsing | Applying parsing rules |
| OML Transformation | Applying transformation models |
| File Sink | Writing transformed output to files |
| Complete Pipeline | Full file-to-file transformation |
Quick Start
cd benchmark/case_file/trans_to_file
# Default test (20M lines, 2 workers)
./run.sh
# Medium dataset (200K lines)
./run.sh -m
Data Flow
wpgen → gen.dat → wparse batch (parse + OML) → all.dat (output file)
file_trans_file 说明 (中文)
本用例演示“文件源 → 文件汇“的转换性能基准测试场景:使用 wpgen 生成测试数据文件,wparse 通过批处理模式读取并进行 WPL 解析和 OML 转换,输出到文件以测试完整转换管道性能。
目录结构
benchmark/file_file/
├── README.md # 本说明文档
├── run.sh # 性能测试运行脚本
├── record.md # 运行记录文档
├── conf/ # 配置文件目录
│ ├── wparse.toml # WarpParse 主配置
│ └── wpgen.toml # 文件生成器配置
├── data/ # 运行数据目录
│ ├── in_dat/ # 输入数据目录
│ │ └── gen.dat # 生成数据文件
│ ├── out_dat/ # 输出数据目录
│ │ ├── all.dat # 主输出文件
│ │ ├── error.dat # 错误数据输出
│ │ ├── miss.dat # 缺失数据输出
│ │ ├── monitor.dat # 监控数据输出
│ │ └── residue.dat # 残留数据输出
│ ├── logs/ # 日志文件目录
│ └── rescue/ # 救援数据目录
└── .run/ # 运行时数据目录
└── rule_mapping.dat # 规则映射数据
快速开始
运行环境要求
- WarpParse 引擎(需在系统 PATH 中)
- Bash shell 环境
- 推荐系统:
- Linux:最佳性能,支持所有优化功能
- macOS:良好性能,部分优化功能受限
运行命令
# 进入 benchmark 目录
cd benchmark/file_file
# 默认大规模性能测试(2000 万行数据)
./run.sh
# 中等规模测试(20 万行数据)
./run.sh -m
# 强制重新生成数据(即使已存在)
./run.sh -f
# 指定 worker 数量
./run.sh -w 8
# 使用特定 WPL 规则
./run.sh nginx
# 组合使用
./run.sh -m -w 8 -f nginx
运行参数
| 参数 | 说明 | 默认值 |
|---|---|---|
-m | 使用中等规模数据集 | 2000万 → 20万行 |
-f | 强制重新生成数据 | 智能检测 |
-w <cnt> | 指定 worker 数量 | 2 |
wpl_dir | WPL 规则目录名 | nginx |
speed | 生成器限速(行/秒) | 0(不限速) |
性能测试选项
- 默认测试:2000 万行数据,单路文件源,2 个 worker
- 中等测试:20 万行数据,适合快速验证
- 强制生成:
-f参数强制重新生成测试数据 - 自定义 WPL:支持 nginx、apache、sysmon 等规则
执行逻辑
流程概览
run.sh 脚本执行以下主要步骤:
-
环境准备
- 加载 benchmark 公共函数库
- 解析命令行参数
- 设置默认值(大规模:2000万行,中等:20万行)
-
初始化环境
- 初始化 release 模式环境
- 验证指定的 WPL 规则路径
- 清理历史数据和日志
-
数据生成检查
- 检查
data/in_dat/gen.dat是否存在 - 如果不存在或使用
-f参数,则生成新数据
- 检查
-
数据生成(如需要)
- 启动
wpgen生成数据到gen.dat - 支持并发和批量生成
- 启动
-
批处理执行
- 使用
wparse batch读取文件数据 - 应用 WPL 规则进行解析
- 数据输出到文件(all.dat)
- 使用
-
性能统计
- 实时显示处理进度
- 记录吞吐量、处理时间等指标
- 输出最终性能报告
数据流向
wpgen 生成器
↓
gen.dat (输入文件)
↓
┌────────────────────────────────┐
│ wparse batch │
│ - 读取文件数据 │
│ - 应用 WPL 规则解析 │
│ - 分发到 sinks │
└────────────────────────────────┘
↓
┌─────────────┬─────────────┐
│ all.dat │ monitor │
│ (主输出) │ sink │
│ │ (收集统计) │
└─────────────┴─────────────┘
使用建议
-
选择 file_file:
- 需要测试完整的数据处理管道
- 验证输出格式和内容
- 文件到文件转换场景
-
选择 file_blackhole:
- 只关心解析性能
- 批量数据处理
- 追求最高吞吐量
-
选择 tcp_blackhole:
- 网络数据源
- 实时处理需求
- 可靠传输要求
-
选择 syslog_blackhole:
- 日志集成
- 高频数据接收
- 传统 syslog 场景
贡献与反馈
如发现问题或有性能优化建议,请:
- 提交详细的测试环境信息(CPU、内存、存储配置)
- 包含完整的性能报告和 I/O 统计
- 分享存储优化经验和最佳实践
- 提供不同文件格式下的性能对比
本文档最后更新时间:2025-12-16