Skip to content

Commit 1110446

Browse files
committed
test: run ruleset perf with default JIT
1 parent 2a1fc15 commit 1110446

2 files changed

Lines changed: 13 additions & 12 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ Allowed traffic is forwarded and carries `x-waf-blocked: 0` plus its current sco
8585

8686
## Performance test
8787

88-
The pd-vm performance test compiles the standalone default ruleset once, outside the timed region, then evaluates a fixed benign request context repeatedly in interpreter mode. It runs warmup traffic first and reports the average across multiple measured batches:
88+
The pd-vm performance test compiles the standalone default ruleset once, outside the timed region, then evaluates a fixed benign request context repeatedly using pd-vm's default execution configuration (trace JIT on supported native targets, interpreter elsewhere). It runs warmup traffic first, reports the selected mode, and calculates the average across multiple measured batches:
8989

9090
```bash
9191
cargo test --release --test perf -- --ignored --nocapture

tests/perf.rs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::{
33
time::{Duration, Instant},
44
};
55

6-
use vm::{JitConfig, Value, Vm, VmStatus};
6+
use vm::{Value, Vm, VmStatus};
77

88
const DEFAULT_WARMUP_BATCHES: usize = 1;
99
const DEFAULT_MEASURED_BATCHES: usize = 5;
@@ -74,8 +74,9 @@ fn run_and_verify(vm: &mut Vm, expected: &Value) {
7474
.debug_info()
7575
.and_then(|info| info.line_for_offset(vm.ip()));
7676
panic!(
77-
"default ruleset perf request failed at ip {}, line {line:?}: {error:?}",
78-
vm.ip()
77+
"default ruleset perf request failed at ip {}, line {line:?}, stack_depth={}: {error:?}",
78+
vm.ip(),
79+
vm.stack().len(),
7980
);
8081
});
8182
assert_eq!(status, VmStatus::Halted);
@@ -104,13 +105,12 @@ fn run_default_ruleset_perf() {
104105
let config = PerfConfig::from_env();
105106
let program = default_request_program();
106107
let expected = Value::string("allow");
107-
let mut vm = Vm::new_with_jit_config(
108-
program,
109-
JitConfig {
110-
enabled: false,
111-
..JitConfig::default()
112-
},
113-
);
108+
let mut vm = Vm::new(program);
109+
let execution_mode = if vm.jit_config().enabled {
110+
"trace_jit"
111+
} else {
112+
"interpreter"
113+
};
114114

115115
for _ in 0..config.warmup_batches {
116116
for _ in 0..config.batch_size {
@@ -141,7 +141,8 @@ fn run_default_ruleset_perf() {
141141
.div_f64(config.batch_size as f64);
142142

143143
println!(
144-
"default_ruleset_perf mode=interpreter batches={} batch_size={} requests={} average_us={:.3} min_batch_average_us={:.3} max_batch_average_us={:.3}",
144+
"default_ruleset_perf mode={} batches={} batch_size={} requests={} average_us={:.3} min_batch_average_us={:.3} max_batch_average_us={:.3}",
145+
execution_mode,
145146
config.measured_batches,
146147
config.batch_size,
147148
total_requests,

0 commit comments

Comments
 (0)