From 1322ee4bb567ad8c4d65eae6fb9e3b68c90c25de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20V=C3=A1rady?= Date: Mon, 1 Jun 2026 19:21:36 +0200 Subject: [PATCH 1/7] feat(orchestrator): template subject configs with connection/CPU count MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject configs are bind-mounted as static files, so a subject cannot adapt to the run's scale. AxoSyslog in particular needs its tcp() source max-connections() to track the generator's NumCPU*3 fan-out instead of the stock default of 10. Render each subject config through text/template in writeCompose when it contains template actions ({{...}}), exposing a generic context of {Connections, CPUs}. Configs with no actions, directory-form configs, and missing paths pass through unchanged, so the 14 non-AxoSyslog subjects and the existing missing-path tolerance are unaffected. Co-Authored-By: Claude Opus 4.8 (1M context) Signed-off-by: László Várady --- internal/orchestrator/docker.go | 73 ++++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/internal/orchestrator/docker.go b/internal/orchestrator/docker.go index c421ec7..e5be767 100644 --- a/internal/orchestrator/docker.go +++ b/internal/orchestrator/docker.go @@ -36,6 +36,67 @@ func resolveGeneratorConnections(explicit int) int { return 3 } +// totalGeneratorConnections reports how many parallel connections the +// generator(s) will open to the subject this run, summing across all +// generators in multi-generator mode (they all fan in to the same subject). +func totalGeneratorConnections(tc *config.TestCase) int { + if tc.MultiGenerator() { + total := 0 + for _, g := range tc.Generators { + total += resolveGeneratorConnections(g.Connections) + } + return total + } + return resolveGeneratorConnections(tc.Generator.Connections) +} + +// configTemplateContext is the data exposed to a subject config rendered as a +// Go text/template. It carries only generic facts about the run — never a +// subject's tuning vocabulary — so a config adapts itself to the workload +// (e.g. AxoSyslog sizes max-connections() to the generator fan-out, or an +// OpenTelemetry source sets workers() to the CPU count). +type configTemplateContext struct { + // Connections is the total number of parallel connections the + // generator(s) will open to the subject this run. + Connections int + // CPUs is the host CPU count. + CPUs int +} + +// renderSubjectConfig renders the subject config at srcPath as a Go +// text/template when it contains template actions ("{{"), writing the result +// into tmpDir and returning the rendered file's path. Configs with no template +// actions, directory-form configs (e.g. cribl-stream), and missing paths are +// returned unchanged — so non-templated subjects, and the existing +// missing-path tolerance, are unaffected. +func renderSubjectConfig(srcPath, tmpDir string, ctx configTemplateContext) (string, error) { + info, err := os.Stat(srcPath) + if err != nil || info.IsDir() { + return srcPath, nil + } + raw, err := os.ReadFile(srcPath) + if err != nil { + return "", err + } + if !strings.Contains(string(raw), "{{") { + return srcPath, nil + } + tmpl, err := template.New(filepath.Base(srcPath)).Parse(string(raw)) + if err != nil { + return "", fmt.Errorf("parsing config template %s: %w", srcPath, err) + } + outPath := filepath.Join(tmpDir, filepath.Base(srcPath)) + f, err := os.Create(outPath) + if err != nil { + return "", err + } + defer f.Close() + if err := tmpl.Execute(f, ctx); err != nil { + return "", fmt.Errorf("rendering config template %s: %w", srcPath, err) + } + return outPath, nil +} + const composeTemplate = `# Auto-generated by harness — do not edit networks: bench: @@ -690,9 +751,19 @@ func writeCompose(path string, cfg RunConfig) error { tc := cfg.TestCase s := cfg.Subject + // Render the subject config as a template (opt-in via {{...}}) so it can + // adapt to the run's connection/CPU counts. + renderedConfigSrc, err := renderSubjectConfig(cfg.ConfigSrcPath, cfg.TmpDir, configTemplateContext{ + Connections: totalGeneratorConnections(tc), + CPUs: runtime.NumCPU(), + }) + if err != nil { + return err + } + // Docker Compose on Windows needs forward slashes in volume paths; // backslashes are interpreted as YAML escape sequences inside quoted strings. - configSrc := filepath.ToSlash(cfg.ConfigSrcPath) + configSrc := filepath.ToSlash(renderedConfigSrc) tmpDir := filepath.ToSlash(cfg.TmpDir) subjectContainer := "bench-subject-" + s.Name From 2bc8abbf8792fe6f2b67961271d319c2b9e09fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20V=C3=A1rady?= Date: Tue, 2 Jun 2026 17:07:13 +0200 Subject: [PATCH 2/7] fix(axosyslog): size tcp source max-connections to the connection count MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The stock max-connections(10) default is exceeded by the generator's NumCPU*3 fan-out above ~3 cores, so connections past the 10th are reset and cases break (loss / connection-reset errors) on any non-trivial machine. Template it to {{.Connections}} so the source accepts every generator connection. Co-Authored-By: Claude Opus 4.8 (1M context) Signed-off-by: László Várady --- cases/disk_buffer_crash_performance/configs/axosyslog.conf | 1 + cases/disk_buffer_performance/configs/axosyslog.conf | 1 + cases/disk_buffer_persistence_correctness/configs/axosyslog.conf | 1 + cases/real_world_1_performance/configs/axosyslog.conf | 1 + cases/regex_mask_performance/configs/axosyslog.conf | 1 + cases/set_field_performance/configs/axosyslog.conf | 1 + cases/sighup_correctness/configs/axosyslog.conf | 1 + cases/syslog_parsing_performance/configs/axosyslog.conf | 1 + cases/tcp_to_blackhole_performance/configs/axosyslog.conf | 1 + cases/tcp_to_http_5min_performance/configs/axosyslog.conf | 1 + cases/tcp_to_http_performance/configs/axosyslog.conf | 1 + cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf | 1 + cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf | 1 + cases/tcp_to_tcp_performance/configs/axosyslog.conf | 1 + cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf | 1 + .../configs/axosyslog.conf | 1 + cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf | 1 + .../configs/axosyslog.conf | 1 + cases/wrapped_json_correctness/configs/axosyslog.conf | 1 + 19 files changed, 19 insertions(+) diff --git a/cases/disk_buffer_crash_performance/configs/axosyslog.conf b/cases/disk_buffer_crash_performance/configs/axosyslog.conf index 341e925..bff035b 100644 --- a/cases/disk_buffer_crash_performance/configs/axosyslog.conf +++ b/cases/disk_buffer_crash_performance/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/disk_buffer_performance/configs/axosyslog.conf b/cases/disk_buffer_performance/configs/axosyslog.conf index 2301707..daa646e 100644 --- a/cases/disk_buffer_performance/configs/axosyslog.conf +++ b/cases/disk_buffer_performance/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf b/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf index e3e8f3f..2e21b46 100644 --- a/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf +++ b/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/real_world_1_performance/configs/axosyslog.conf b/cases/real_world_1_performance/configs/axosyslog.conf index 9a7ca6e..ea8150f 100644 --- a/cases/real_world_1_performance/configs/axosyslog.conf +++ b/cases/real_world_1_performance/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(syslog-protocol) ); }; diff --git a/cases/regex_mask_performance/configs/axosyslog.conf b/cases/regex_mask_performance/configs/axosyslog.conf index 3958cbd..ece3df9 100644 --- a/cases/regex_mask_performance/configs/axosyslog.conf +++ b/cases/regex_mask_performance/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/set_field_performance/configs/axosyslog.conf b/cases/set_field_performance/configs/axosyslog.conf index 068359a..b30d632 100644 --- a/cases/set_field_performance/configs/axosyslog.conf +++ b/cases/set_field_performance/configs/axosyslog.conf @@ -7,6 +7,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/sighup_correctness/configs/axosyslog.conf b/cases/sighup_correctness/configs/axosyslog.conf index b0bd6c7..67c9c18 100644 --- a/cases/sighup_correctness/configs/axosyslog.conf +++ b/cases/sighup_correctness/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/syslog_parsing_performance/configs/axosyslog.conf b/cases/syslog_parsing_performance/configs/axosyslog.conf index 05714e5..f0ffd64 100644 --- a/cases/syslog_parsing_performance/configs/axosyslog.conf +++ b/cases/syslog_parsing_performance/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(syslog-protocol) ); }; diff --git a/cases/tcp_to_blackhole_performance/configs/axosyslog.conf b/cases/tcp_to_blackhole_performance/configs/axosyslog.conf index 50b5cc3..58de178 100644 --- a/cases/tcp_to_blackhole_performance/configs/axosyslog.conf +++ b/cases/tcp_to_blackhole_performance/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/tcp_to_http_5min_performance/configs/axosyslog.conf b/cases/tcp_to_http_5min_performance/configs/axosyslog.conf index 3ec10c2..1f0c3dd 100644 --- a/cases/tcp_to_http_5min_performance/configs/axosyslog.conf +++ b/cases/tcp_to_http_5min_performance/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/tcp_to_http_performance/configs/axosyslog.conf b/cases/tcp_to_http_performance/configs/axosyslog.conf index 3ec10c2..1f0c3dd 100644 --- a/cases/tcp_to_http_performance/configs/axosyslog.conf +++ b/cases/tcp_to_http_performance/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf b/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf index 4e45500..667414f 100644 --- a/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf b/cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf index 5b0c799..e2bab76 100644 --- a/cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/tcp_to_tcp_performance/configs/axosyslog.conf b/cases/tcp_to_tcp_performance/configs/axosyslog.conf index 5b0c799..e2bab76 100644 --- a/cases/tcp_to_tcp_performance/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_performance/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf index e3e8f3f..2e21b46 100644 --- a/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf index abf9839..b9c215f 100644 --- a/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf index 2301707..daa646e 100644 --- a/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf index e3e8f3f..2e21b46 100644 --- a/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; diff --git a/cases/wrapped_json_correctness/configs/axosyslog.conf b/cases/wrapped_json_correctness/configs/axosyslog.conf index ba37136..5c712f9 100644 --- a/cases/wrapped_json_correctness/configs/axosyslog.conf +++ b/cases/wrapped_json_correctness/configs/axosyslog.conf @@ -4,6 +4,7 @@ source s_tcp { tcp( ip("0.0.0.0") port(9000) + max-connections({{.Connections}}) flags(no-parse) ); }; From 7e7cb900618234461f28d7c10da887b8fef8d9ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20V=C3=A1rady?= Date: Tue, 2 Jun 2026 17:13:51 +0200 Subject: [PATCH 3/7] cases(axosyslog): widen source flow-control window (log-iw-size, log-fetch-limit) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The default log-iw-size/log-fetch-limit give a per-connection window of only a few messages, throttling the source under load. Size log-iw-size to 1000 per connection ({{.Connections}}000) and raise log-fetch-limit to 1000 on the tcp and file sources. Co-Authored-By: Claude Opus 4.8 (1M context) Signed-off-by: László Várady --- cases/disk_buffer_crash_performance/configs/axosyslog.conf | 2 ++ cases/disk_buffer_performance/configs/axosyslog.conf | 2 ++ .../disk_buffer_persistence_correctness/configs/axosyslog.conf | 2 ++ cases/file_rotate_create_correctness/configs/axosyslog.conf | 2 ++ cases/file_rotate_restart_correctness/configs/axosyslog.conf | 2 ++ cases/file_rotate_truncate_correctness/configs/axosyslog.conf | 2 ++ cases/file_to_tcp_performance/configs/axosyslog.conf | 2 ++ cases/file_truncate_correctness/configs/axosyslog.conf | 2 ++ cases/real_world_1_performance/configs/axosyslog.conf | 2 ++ cases/regex_mask_performance/configs/axosyslog.conf | 2 ++ cases/set_field_performance/configs/axosyslog.conf | 2 ++ cases/sighup_correctness/configs/axosyslog.conf | 2 ++ cases/syslog_parsing_performance/configs/axosyslog.conf | 2 ++ cases/tcp_to_blackhole_performance/configs/axosyslog.conf | 2 ++ cases/tcp_to_http_5min_performance/configs/axosyslog.conf | 2 ++ cases/tcp_to_http_performance/configs/axosyslog.conf | 2 ++ cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf | 2 ++ cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf | 2 ++ cases/tcp_to_tcp_performance/configs/axosyslog.conf | 2 ++ cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf | 2 ++ .../configs/axosyslog.conf | 2 ++ cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf | 2 ++ .../configs/axosyslog.conf | 2 ++ cases/wrapped_json_correctness/configs/axosyslog.conf | 2 ++ 24 files changed, 48 insertions(+) diff --git a/cases/disk_buffer_crash_performance/configs/axosyslog.conf b/cases/disk_buffer_crash_performance/configs/axosyslog.conf index bff035b..a46e826 100644 --- a/cases/disk_buffer_crash_performance/configs/axosyslog.conf +++ b/cases/disk_buffer_crash_performance/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/disk_buffer_performance/configs/axosyslog.conf b/cases/disk_buffer_performance/configs/axosyslog.conf index daa646e..7f08316 100644 --- a/cases/disk_buffer_performance/configs/axosyslog.conf +++ b/cases/disk_buffer_performance/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf b/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf index 2e21b46..de23230 100644 --- a/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf +++ b/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/file_rotate_create_correctness/configs/axosyslog.conf b/cases/file_rotate_create_correctness/configs/axosyslog.conf index 6afebcf..c126358 100644 --- a/cases/file_rotate_create_correctness/configs/axosyslog.conf +++ b/cases/file_rotate_create_correctness/configs/axosyslog.conf @@ -6,6 +6,8 @@ source s_file { filename-pattern("*.log*") flags(no-parse) follow-freq(0.1) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) ); }; diff --git a/cases/file_rotate_restart_correctness/configs/axosyslog.conf b/cases/file_rotate_restart_correctness/configs/axosyslog.conf index a021293..7301d65 100644 --- a/cases/file_rotate_restart_correctness/configs/axosyslog.conf +++ b/cases/file_rotate_restart_correctness/configs/axosyslog.conf @@ -12,6 +12,8 @@ source s_file { filename-pattern("*.log*") flags(no-parse) follow-freq(0.1) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) recursive(no) ); }; diff --git a/cases/file_rotate_truncate_correctness/configs/axosyslog.conf b/cases/file_rotate_truncate_correctness/configs/axosyslog.conf index 6afebcf..c126358 100644 --- a/cases/file_rotate_truncate_correctness/configs/axosyslog.conf +++ b/cases/file_rotate_truncate_correctness/configs/axosyslog.conf @@ -6,6 +6,8 @@ source s_file { filename-pattern("*.log*") flags(no-parse) follow-freq(0.1) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) ); }; diff --git a/cases/file_to_tcp_performance/configs/axosyslog.conf b/cases/file_to_tcp_performance/configs/axosyslog.conf index 6afebcf..c126358 100644 --- a/cases/file_to_tcp_performance/configs/axosyslog.conf +++ b/cases/file_to_tcp_performance/configs/axosyslog.conf @@ -6,6 +6,8 @@ source s_file { filename-pattern("*.log*") flags(no-parse) follow-freq(0.1) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) ); }; diff --git a/cases/file_truncate_correctness/configs/axosyslog.conf b/cases/file_truncate_correctness/configs/axosyslog.conf index 6e2f8b3..c059c79 100644 --- a/cases/file_truncate_correctness/configs/axosyslog.conf +++ b/cases/file_truncate_correctness/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_file { "/data/input.log" flags(no-parse) follow-freq(0.1) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) ); }; diff --git a/cases/real_world_1_performance/configs/axosyslog.conf b/cases/real_world_1_performance/configs/axosyslog.conf index ea8150f..b1dbba6 100644 --- a/cases/real_world_1_performance/configs/axosyslog.conf +++ b/cases/real_world_1_performance/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(syslog-protocol) ); }; diff --git a/cases/regex_mask_performance/configs/axosyslog.conf b/cases/regex_mask_performance/configs/axosyslog.conf index ece3df9..11d807e 100644 --- a/cases/regex_mask_performance/configs/axosyslog.conf +++ b/cases/regex_mask_performance/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/set_field_performance/configs/axosyslog.conf b/cases/set_field_performance/configs/axosyslog.conf index b30d632..45d7c4d 100644 --- a/cases/set_field_performance/configs/axosyslog.conf +++ b/cases/set_field_performance/configs/axosyslog.conf @@ -8,6 +8,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/sighup_correctness/configs/axosyslog.conf b/cases/sighup_correctness/configs/axosyslog.conf index 67c9c18..6d0033e 100644 --- a/cases/sighup_correctness/configs/axosyslog.conf +++ b/cases/sighup_correctness/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/syslog_parsing_performance/configs/axosyslog.conf b/cases/syslog_parsing_performance/configs/axosyslog.conf index f0ffd64..160ac4d 100644 --- a/cases/syslog_parsing_performance/configs/axosyslog.conf +++ b/cases/syslog_parsing_performance/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(syslog-protocol) ); }; diff --git a/cases/tcp_to_blackhole_performance/configs/axosyslog.conf b/cases/tcp_to_blackhole_performance/configs/axosyslog.conf index 58de178..eb44318 100644 --- a/cases/tcp_to_blackhole_performance/configs/axosyslog.conf +++ b/cases/tcp_to_blackhole_performance/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/tcp_to_http_5min_performance/configs/axosyslog.conf b/cases/tcp_to_http_5min_performance/configs/axosyslog.conf index 1f0c3dd..ff2f9fe 100644 --- a/cases/tcp_to_http_5min_performance/configs/axosyslog.conf +++ b/cases/tcp_to_http_5min_performance/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/tcp_to_http_performance/configs/axosyslog.conf b/cases/tcp_to_http_performance/configs/axosyslog.conf index 1f0c3dd..ff2f9fe 100644 --- a/cases/tcp_to_http_performance/configs/axosyslog.conf +++ b/cases/tcp_to_http_performance/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf b/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf index 667414f..8bc79b9 100644 --- a/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf b/cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf index e2bab76..05691a0 100644 --- a/cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/tcp_to_tcp_performance/configs/axosyslog.conf b/cases/tcp_to_tcp_performance/configs/axosyslog.conf index e2bab76..05691a0 100644 --- a/cases/tcp_to_tcp_performance/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_performance/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf index 2e21b46..de23230 100644 --- a/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf index b9c215f..ff09cfe 100644 --- a/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf index daa646e..7f08316 100644 --- a/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf index 2e21b46..de23230 100644 --- a/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; diff --git a/cases/wrapped_json_correctness/configs/axosyslog.conf b/cases/wrapped_json_correctness/configs/axosyslog.conf index 5c712f9..9459c35 100644 --- a/cases/wrapped_json_correctness/configs/axosyslog.conf +++ b/cases/wrapped_json_correctness/configs/axosyslog.conf @@ -5,6 +5,8 @@ source s_tcp { ip("0.0.0.0") port(9000) max-connections({{.Connections}}) + log-iw-size({{.Connections}}000) + log-fetch-limit(1000) flags(no-parse) ); }; From 4a04fdb15580283fd58095402451c036aa786ab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20V=C3=A1rady?= Date: Tue, 2 Jun 2026 17:13:59 +0200 Subject: [PATCH 4/7] fix(axosyslog): enable flags(flow-control) to stop message loss MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Without flow-control on the log path the source fire-and-forgets into the log-fifo-size output buffer, which overflows and drops messages when the destination can't keep up — inflating loss in the perf cases. flags(flow-control) makes the source backpressure (and activates the log-iw-size window) instead of dropping. Co-Authored-By: Claude Opus 4.8 (1M context) Signed-off-by: László Várady --- cases/disk_buffer_crash_performance/configs/axosyslog.conf | 1 + cases/disk_buffer_performance/configs/axosyslog.conf | 1 + cases/disk_buffer_persistence_correctness/configs/axosyslog.conf | 1 + cases/file_rotate_create_correctness/configs/axosyslog.conf | 1 + cases/file_rotate_restart_correctness/configs/axosyslog.conf | 1 + cases/file_rotate_truncate_correctness/configs/axosyslog.conf | 1 + cases/file_to_tcp_performance/configs/axosyslog.conf | 1 + cases/file_truncate_correctness/configs/axosyslog.conf | 1 + cases/otlp_grpc_to_otlp_grpc_correctness/configs/axosyslog.conf | 1 + cases/otlp_grpc_to_otlp_grpc_performance/configs/axosyslog.conf | 1 + cases/real_world_1_performance/configs/axosyslog.conf | 1 + cases/regex_mask_performance/configs/axosyslog.conf | 1 + cases/set_field_performance/configs/axosyslog.conf | 1 + cases/sighup_correctness/configs/axosyslog.conf | 1 + cases/syslog_parsing_performance/configs/axosyslog.conf | 1 + cases/tcp_to_blackhole_performance/configs/axosyslog.conf | 1 + cases/tcp_to_http_5min_performance/configs/axosyslog.conf | 1 + cases/tcp_to_http_performance/configs/axosyslog.conf | 1 + cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf | 1 + cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf | 1 + cases/tcp_to_tcp_performance/configs/axosyslog.conf | 1 + cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf | 1 + .../configs/axosyslog.conf | 1 + cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf | 1 + .../configs/axosyslog.conf | 1 + cases/wrapped_json_correctness/configs/axosyslog.conf | 1 + 26 files changed, 26 insertions(+) diff --git a/cases/disk_buffer_crash_performance/configs/axosyslog.conf b/cases/disk_buffer_crash_performance/configs/axosyslog.conf index a46e826..67ea178 100644 --- a/cases/disk_buffer_crash_performance/configs/axosyslog.conf +++ b/cases/disk_buffer_crash_performance/configs/axosyslog.conf @@ -26,4 +26,5 @@ destination d_tcp { log { source(s_tcp); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/disk_buffer_performance/configs/axosyslog.conf b/cases/disk_buffer_performance/configs/axosyslog.conf index 7f08316..4e34884 100644 --- a/cases/disk_buffer_performance/configs/axosyslog.conf +++ b/cases/disk_buffer_performance/configs/axosyslog.conf @@ -26,4 +26,5 @@ destination d_tcp { log { source(s_tcp); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf b/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf index de23230..51fe1d6 100644 --- a/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf +++ b/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf @@ -27,4 +27,5 @@ destination d_tcp { log { source(s_tcp); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/file_rotate_create_correctness/configs/axosyslog.conf b/cases/file_rotate_create_correctness/configs/axosyslog.conf index c126358..38a806a 100644 --- a/cases/file_rotate_create_correctness/configs/axosyslog.conf +++ b/cases/file_rotate_create_correctness/configs/axosyslog.conf @@ -21,4 +21,5 @@ destination d_tcp { log { source(s_file); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/file_rotate_restart_correctness/configs/axosyslog.conf b/cases/file_rotate_restart_correctness/configs/axosyslog.conf index 7301d65..0ad29e0 100644 --- a/cases/file_rotate_restart_correctness/configs/axosyslog.conf +++ b/cases/file_rotate_restart_correctness/configs/axosyslog.conf @@ -29,4 +29,5 @@ destination d_tcp { log { source(s_file); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/file_rotate_truncate_correctness/configs/axosyslog.conf b/cases/file_rotate_truncate_correctness/configs/axosyslog.conf index c126358..38a806a 100644 --- a/cases/file_rotate_truncate_correctness/configs/axosyslog.conf +++ b/cases/file_rotate_truncate_correctness/configs/axosyslog.conf @@ -21,4 +21,5 @@ destination d_tcp { log { source(s_file); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/file_to_tcp_performance/configs/axosyslog.conf b/cases/file_to_tcp_performance/configs/axosyslog.conf index c126358..38a806a 100644 --- a/cases/file_to_tcp_performance/configs/axosyslog.conf +++ b/cases/file_to_tcp_performance/configs/axosyslog.conf @@ -21,4 +21,5 @@ destination d_tcp { log { source(s_file); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/file_truncate_correctness/configs/axosyslog.conf b/cases/file_truncate_correctness/configs/axosyslog.conf index c059c79..768b325 100644 --- a/cases/file_truncate_correctness/configs/axosyslog.conf +++ b/cases/file_truncate_correctness/configs/axosyslog.conf @@ -20,4 +20,5 @@ destination d_tcp { log { source(s_file); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/otlp_grpc_to_otlp_grpc_correctness/configs/axosyslog.conf b/cases/otlp_grpc_to_otlp_grpc_correctness/configs/axosyslog.conf index 26b2896..a8c1309 100644 --- a/cases/otlp_grpc_to_otlp_grpc_correctness/configs/axosyslog.conf +++ b/cases/otlp_grpc_to_otlp_grpc_correctness/configs/axosyslog.conf @@ -29,4 +29,5 @@ destination d_otlp { log { source(s_otlp); destination(d_otlp); + flags(flow-control); }; diff --git a/cases/otlp_grpc_to_otlp_grpc_performance/configs/axosyslog.conf b/cases/otlp_grpc_to_otlp_grpc_performance/configs/axosyslog.conf index 26b2896..a8c1309 100644 --- a/cases/otlp_grpc_to_otlp_grpc_performance/configs/axosyslog.conf +++ b/cases/otlp_grpc_to_otlp_grpc_performance/configs/axosyslog.conf @@ -29,4 +29,5 @@ destination d_otlp { log { source(s_otlp); destination(d_otlp); + flags(flow-control); }; diff --git a/cases/real_world_1_performance/configs/axosyslog.conf b/cases/real_world_1_performance/configs/axosyslog.conf index b1dbba6..b47697d 100644 --- a/cases/real_world_1_performance/configs/axosyslog.conf +++ b/cases/real_world_1_performance/configs/axosyslog.conf @@ -35,4 +35,5 @@ log { rewrite(r_mark_dropped); }; destination(d_tcp); + flags(flow-control); }; diff --git a/cases/regex_mask_performance/configs/axosyslog.conf b/cases/regex_mask_performance/configs/axosyslog.conf index 11d807e..0167638 100644 --- a/cases/regex_mask_performance/configs/axosyslog.conf +++ b/cases/regex_mask_performance/configs/axosyslog.conf @@ -26,4 +26,5 @@ log { source(s_tcp); rewrite(r_mask_conn); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/set_field_performance/configs/axosyslog.conf b/cases/set_field_performance/configs/axosyslog.conf index 45d7c4d..9873890 100644 --- a/cases/set_field_performance/configs/axosyslog.conf +++ b/cases/set_field_performance/configs/axosyslog.conf @@ -29,4 +29,5 @@ log { source(s_tcp); rewrite(r_set); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/sighup_correctness/configs/axosyslog.conf b/cases/sighup_correctness/configs/axosyslog.conf index 6d0033e..2023e08 100644 --- a/cases/sighup_correctness/configs/axosyslog.conf +++ b/cases/sighup_correctness/configs/axosyslog.conf @@ -22,4 +22,5 @@ destination d_tcp { log { source(s_tcp); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/syslog_parsing_performance/configs/axosyslog.conf b/cases/syslog_parsing_performance/configs/axosyslog.conf index 160ac4d..d166a08 100644 --- a/cases/syslog_parsing_performance/configs/axosyslog.conf +++ b/cases/syslog_parsing_performance/configs/axosyslog.conf @@ -21,4 +21,5 @@ destination d_tcp { log { source(s_tcp); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/tcp_to_blackhole_performance/configs/axosyslog.conf b/cases/tcp_to_blackhole_performance/configs/axosyslog.conf index eb44318..63cccb2 100644 --- a/cases/tcp_to_blackhole_performance/configs/axosyslog.conf +++ b/cases/tcp_to_blackhole_performance/configs/axosyslog.conf @@ -18,4 +18,5 @@ destination d_null { log { source(s_tcp); destination(d_null); + flags(flow-control); }; diff --git a/cases/tcp_to_http_5min_performance/configs/axosyslog.conf b/cases/tcp_to_http_5min_performance/configs/axosyslog.conf index ff2f9fe..6308574 100644 --- a/cases/tcp_to_http_5min_performance/configs/axosyslog.conf +++ b/cases/tcp_to_http_5min_performance/configs/axosyslog.conf @@ -25,4 +25,5 @@ destination d_http { log { source(s_tcp); destination(d_http); + flags(flow-control); }; diff --git a/cases/tcp_to_http_performance/configs/axosyslog.conf b/cases/tcp_to_http_performance/configs/axosyslog.conf index ff2f9fe..6308574 100644 --- a/cases/tcp_to_http_performance/configs/axosyslog.conf +++ b/cases/tcp_to_http_performance/configs/axosyslog.conf @@ -25,4 +25,5 @@ destination d_http { log { source(s_tcp); destination(d_http); + flags(flow-control); }; diff --git a/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf b/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf index 8bc79b9..b99c4b3 100644 --- a/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf @@ -30,4 +30,5 @@ destination d_http { log { source(s_tcp); destination(d_http); + flags(flow-control); }; diff --git a/cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf b/cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf index 05691a0..2f78a92 100644 --- a/cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_5min_performance/configs/axosyslog.conf @@ -21,4 +21,5 @@ destination d_tcp { log { source(s_tcp); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/tcp_to_tcp_performance/configs/axosyslog.conf b/cases/tcp_to_tcp_performance/configs/axosyslog.conf index 05691a0..2f78a92 100644 --- a/cases/tcp_to_tcp_performance/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_performance/configs/axosyslog.conf @@ -21,4 +21,5 @@ destination d_tcp { log { source(s_tcp); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf index de23230..51fe1d6 100644 --- a/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf @@ -27,4 +27,5 @@ destination d_tcp { log { source(s_tcp); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf index ff09cfe..fe71b3c 100644 --- a/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf @@ -27,4 +27,5 @@ destination d_tcp { log { source(s_tcp); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf index 7f08316..4e34884 100644 --- a/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf @@ -26,4 +26,5 @@ destination d_tcp { log { source(s_tcp); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf index de23230..51fe1d6 100644 --- a/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf @@ -27,4 +27,5 @@ destination d_tcp { log { source(s_tcp); destination(d_tcp); + flags(flow-control); }; diff --git a/cases/wrapped_json_correctness/configs/axosyslog.conf b/cases/wrapped_json_correctness/configs/axosyslog.conf index 9459c35..19c8109 100644 --- a/cases/wrapped_json_correctness/configs/axosyslog.conf +++ b/cases/wrapped_json_correctness/configs/axosyslog.conf @@ -27,4 +27,5 @@ log { source(s_tcp); parser(p_json); destination(d_tcp); + flags(flow-control); }; From 991fa7a0ed96468c836fbbc89a34acec632743db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20V=C3=A1rady?= Date: Tue, 2 Jun 2026 17:14:06 +0200 Subject: [PATCH 5/7] cases(axosyslog): set OTLP source workers and concurrent-requests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Size the opentelemetry() gRPC source to the host: workers({{.CPUs}}) and concurrent-requests(4) so it isn't single-threaded under the bench load. Co-Authored-By: Claude Opus 4.8 (1M context) Signed-off-by: László Várady --- cases/otlp_grpc_to_otlp_grpc_correctness/configs/axosyslog.conf | 2 ++ cases/otlp_grpc_to_otlp_grpc_performance/configs/axosyslog.conf | 2 ++ 2 files changed, 4 insertions(+) diff --git a/cases/otlp_grpc_to_otlp_grpc_correctness/configs/axosyslog.conf b/cases/otlp_grpc_to_otlp_grpc_correctness/configs/axosyslog.conf index a8c1309..0283d01 100644 --- a/cases/otlp_grpc_to_otlp_grpc_correctness/configs/axosyslog.conf +++ b/cases/otlp_grpc_to_otlp_grpc_correctness/configs/axosyslog.conf @@ -17,6 +17,8 @@ source s_otlp { opentelemetry( port(4317) + workers({{.CPUs}}) + concurrent-requests(4) ); }; diff --git a/cases/otlp_grpc_to_otlp_grpc_performance/configs/axosyslog.conf b/cases/otlp_grpc_to_otlp_grpc_performance/configs/axosyslog.conf index a8c1309..0283d01 100644 --- a/cases/otlp_grpc_to_otlp_grpc_performance/configs/axosyslog.conf +++ b/cases/otlp_grpc_to_otlp_grpc_performance/configs/axosyslog.conf @@ -17,6 +17,8 @@ source s_otlp { opentelemetry( port(4317) + workers({{.CPUs}}) + concurrent-requests(4) ); }; From 45cf93f3760963f4fe920d32929894887f81f93d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20V=C3=A1rady?= Date: Tue, 2 Jun 2026 17:07:13 +0200 Subject: [PATCH 6/7] cases(axosyslog): tune disk-buffer (prealloc, front-cache-size) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit prealloc(yes) preallocates the disk-buffer file on both reliable and non-reliable buffers, avoiding mid-run growth stalls. For the non-reliable buffers, front-cache-size(10000) widens the in-memory cache in front of the disk queue so steady-state traffic doesn't hit the disk on every message. Co-Authored-By: Claude Opus 4.8 (1M context) Signed-off-by: László Várady --- cases/disk_buffer_crash_performance/configs/axosyslog.conf | 1 + cases/disk_buffer_performance/configs/axosyslog.conf | 2 ++ .../disk_buffer_persistence_correctness/configs/axosyslog.conf | 2 ++ cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf | 2 ++ cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf | 2 ++ .../configs/axosyslog.conf | 1 + cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf | 2 ++ .../configs/axosyslog.conf | 2 ++ 8 files changed, 14 insertions(+) diff --git a/cases/disk_buffer_crash_performance/configs/axosyslog.conf b/cases/disk_buffer_crash_performance/configs/axosyslog.conf index 67ea178..292b4c1 100644 --- a/cases/disk_buffer_crash_performance/configs/axosyslog.conf +++ b/cases/disk_buffer_crash_performance/configs/axosyslog.conf @@ -17,6 +17,7 @@ destination d_tcp { port(9001) disk-buffer( reliable(yes) + prealloc(yes) capacity-bytes(4294967296) dir("/var/lib/syslog-ng/disk-buffer/") ) diff --git a/cases/disk_buffer_performance/configs/axosyslog.conf b/cases/disk_buffer_performance/configs/axosyslog.conf index 4e34884..24d3cf1 100644 --- a/cases/disk_buffer_performance/configs/axosyslog.conf +++ b/cases/disk_buffer_performance/configs/axosyslog.conf @@ -17,6 +17,8 @@ destination d_tcp { port(9001) disk-buffer( reliable(no) + prealloc(yes) + front-cache-size(10000) capacity-bytes(4294967296) dir("/var/lib/syslog-ng/disk-buffer/") ) diff --git a/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf b/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf index 51fe1d6..e459a83 100644 --- a/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf +++ b/cases/disk_buffer_persistence_correctness/configs/axosyslog.conf @@ -18,6 +18,8 @@ destination d_tcp { template("${MESSAGE}\n") disk-buffer( reliable(no) + prealloc(yes) + front-cache-size(10000) capacity-bytes(4294967296) dir("/var/lib/syslog-ng/disk-buffer/") ) diff --git a/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf b/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf index b99c4b3..5794879 100644 --- a/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf @@ -21,6 +21,8 @@ destination d_http { batch-timeout(100) disk-buffer( reliable(no) + prealloc(yes) + front-cache-size(10000) capacity-bytes(4294967296) dir("/var/lib/syslog-ng/disk-buffer/") ) diff --git a/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf index 51fe1d6..e459a83 100644 --- a/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_correctness/configs/axosyslog.conf @@ -18,6 +18,8 @@ destination d_tcp { template("${MESSAGE}\n") disk-buffer( reliable(no) + prealloc(yes) + front-cache-size(10000) capacity-bytes(4294967296) dir("/var/lib/syslog-ng/disk-buffer/") ) diff --git a/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf index fe71b3c..c06f060 100644 --- a/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_crash_correctness/configs/axosyslog.conf @@ -18,6 +18,7 @@ destination d_tcp { template("${MESSAGE}\n") disk-buffer( reliable(yes) + prealloc(yes) capacity-bytes(4294967296) dir("/var/lib/syslog-ng/disk-buffer/") ) diff --git a/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf index 4e34884..24d3cf1 100644 --- a/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_performance/configs/axosyslog.conf @@ -17,6 +17,8 @@ destination d_tcp { port(9001) disk-buffer( reliable(no) + prealloc(yes) + front-cache-size(10000) capacity-bytes(4294967296) dir("/var/lib/syslog-ng/disk-buffer/") ) diff --git a/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf b/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf index 51fe1d6..e459a83 100644 --- a/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_tcp_persistent_restart_correctness/configs/axosyslog.conf @@ -18,6 +18,8 @@ destination d_tcp { template("${MESSAGE}\n") disk-buffer( reliable(no) + prealloc(yes) + front-cache-size(10000) capacity-bytes(4294967296) dir("/var/lib/syslog-ng/disk-buffer/") ) From 8ba694b95d59b2fa9aa76735cd07626ff7f0abf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20V=C3=A1rady?= Date: Tue, 2 Jun 2026 17:07:13 +0200 Subject: [PATCH 7/7] cases(axosyslog): use all CPU cores when sending to a HTTP receiver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: László Várady --- cases/tcp_to_http_5min_performance/configs/axosyslog.conf | 2 +- cases/tcp_to_http_performance/configs/axosyslog.conf | 2 +- cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cases/tcp_to_http_5min_performance/configs/axosyslog.conf b/cases/tcp_to_http_5min_performance/configs/axosyslog.conf index 6308574..d3e18ab 100644 --- a/cases/tcp_to_http_5min_performance/configs/axosyslog.conf +++ b/cases/tcp_to_http_5min_performance/configs/axosyslog.conf @@ -16,7 +16,7 @@ destination d_http { url("http://receiver:9001/") method("POST") body("${MESSAGE}") - workers(4) + workers({{.CPUs}}) batch-lines(1000) batch-timeout(100) ); diff --git a/cases/tcp_to_http_performance/configs/axosyslog.conf b/cases/tcp_to_http_performance/configs/axosyslog.conf index 6308574..d3e18ab 100644 --- a/cases/tcp_to_http_performance/configs/axosyslog.conf +++ b/cases/tcp_to_http_performance/configs/axosyslog.conf @@ -16,7 +16,7 @@ destination d_http { url("http://receiver:9001/") method("POST") body("${MESSAGE}") - workers(4) + workers({{.CPUs}}) batch-lines(1000) batch-timeout(100) ); diff --git a/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf b/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf index 5794879..c7e6398 100644 --- a/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf +++ b/cases/tcp_to_http_persistent_correctness/configs/axosyslog.conf @@ -16,7 +16,7 @@ destination d_http { url("http://receiver:9001/") method("POST") body("${MESSAGE}") - workers(4) + workers({{.CPUs}}) batch-lines(1000) batch-timeout(100) disk-buffer(