From ae2afa88c5f1c46f516a9a4c5fe89b5084bba335 Mon Sep 17 00:00:00 2001 From: Nils Goroll Date: Mon, 17 Aug 2026 12:34:13 +0200 Subject: [PATCH 1/6] Avoid buildkit requirement --- frameworks/vinyl-cache/Dockerfile | 2 +- frameworks/vinyl-cache/entrypoint.sh | 0 2 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 frameworks/vinyl-cache/entrypoint.sh diff --git a/frameworks/vinyl-cache/Dockerfile b/frameworks/vinyl-cache/Dockerfile index d1cd83077..689b304a7 100644 --- a/frameworks/vinyl-cache/Dockerfile +++ b/frameworks/vinyl-cache/Dockerfile @@ -44,7 +44,7 @@ RUN set -ex; \ COPY --from=build /out/ / COPY default.vcl /etc/vinyl/default.vcl -COPY --chmod=0755 entrypoint.sh /entrypoint.sh +COPY entrypoint.sh /entrypoint.sh EXPOSE 8080 diff --git a/frameworks/vinyl-cache/entrypoint.sh b/frameworks/vinyl-cache/entrypoint.sh old mode 100644 new mode 100755 From 46daae20c7519748fa9bbc47d4e38528799e8281 Mon Sep 17 00:00:00 2001 From: Nils Goroll Date: Mon, 17 Aug 2026 12:26:04 +0200 Subject: [PATCH 2/6] Update to vinyl cache main Vinyl Cache has known limits for the kind of synthetic benchmark used here. Switch to the main branch, where we addressed these in part. See https://code.vinyl-cache.org/vinyl-cache/vinyl-cache/pulls/4365 for details. Also add myself as a maintainer (I am one for Vinyl Cache, see https://vinyl-cache.org/organization/index.html) --- frameworks/vinyl-cache/Dockerfile | 2 +- frameworks/vinyl-cache/README.md | 2 +- frameworks/vinyl-cache/default.vcl | 4 ++-- frameworks/vinyl-cache/meta.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frameworks/vinyl-cache/Dockerfile b/frameworks/vinyl-cache/Dockerfile index 689b304a7..bb6e8d782 100644 --- a/frameworks/vinyl-cache/Dockerfile +++ b/frameworks/vinyl-cache/Dockerfile @@ -18,7 +18,7 @@ RUN set -ex; \ ncurses-devel \ libedit-devel; \ cd /tmp; \ - git clone --recurse-submodules --branch vinyl-cache-9.0.1 \ + git clone --recurse-submodules --branch main \ https://code.vinyl-cache.org/vinyl-cache/vinyl-cache.git vinyl-cache COPY vmod/ /tmp/vinyl-cache/vmod/ diff --git a/frameworks/vinyl-cache/README.md b/frameworks/vinyl-cache/README.md index d1bd5af53..3835633fd 100644 --- a/frameworks/vinyl-cache/README.md +++ b/frameworks/vinyl-cache/README.md @@ -5,7 +5,7 @@ Vinyl Cache is the current name of what used to be called Varnish — same proje ## Stack - **Language:** C -- **Engine:** vinyld 9.0.1 (vinyl-cache) +- **Engine:** vinyld main branch (vinyl-cache) - **Build:** Multi-stage, built from source (autotools) on `fedora:43` - **Dynamic logic:** `vmod_httparena`, a small C vmod to handle the `/baseline11` sum diff --git a/frameworks/vinyl-cache/default.vcl b/frameworks/vinyl-cache/default.vcl index 8c62e8c6b..fab321d81 100644 --- a/frameworks/vinyl-cache/default.vcl +++ b/frameworks/vinyl-cache/default.vcl @@ -12,9 +12,9 @@ sub vcl_synth { set resp.http.Content-Type = "text/plain"; if (req.url == "/pipeline") { - synthetic("ok"); + set resp.body = "ok"; } else if (req.url ~ "^/baseline11(\?|$)") { - synthetic(httparena.baseline_sum(req.url)); + set resp.body = httparena.baseline_sum(req.url); } else { set resp.status = 404; } diff --git a/frameworks/vinyl-cache/meta.json b/frameworks/vinyl-cache/meta.json index 7f75b1bfb..81ddea4ca 100644 --- a/frameworks/vinyl-cache/meta.json +++ b/frameworks/vinyl-cache/meta.json @@ -11,5 +11,5 @@ "pipelined", "limited-conn" ], - "maintainers": ["gquintard"] + "maintainers": ["gquintard", "nigoroll"] } From 53c761dd2ec2f7689e384321de51e727a95742c7 Mon Sep 17 00:00:00 2001 From: Nils Goroll Date: Mon, 17 Aug 2026 13:20:19 +0200 Subject: [PATCH 3/6] Vinyl Cache: Simplify vmod/Makefile.am maintenance The previous approach was just copying over a file, which could (and did) lead to it being out of sync for updates. Use a patch, which hopefully has a longer lifetime. --- frameworks/vinyl-cache/Dockerfile | 2 + frameworks/vinyl-cache/README.md | 5 ++ ...d-httparena-vmod-to-vmod-Makefile.am.patch | 24 ++++++ frameworks/vinyl-cache/vmod/Makefile.am | 74 ------------------- 4 files changed, 31 insertions(+), 74 deletions(-) create mode 100644 frameworks/vinyl-cache/vmod/0001-Add-httparena-vmod-to-vmod-Makefile.am.patch delete mode 100644 frameworks/vinyl-cache/vmod/Makefile.am diff --git a/frameworks/vinyl-cache/Dockerfile b/frameworks/vinyl-cache/Dockerfile index bb6e8d782..15ecf7150 100644 --- a/frameworks/vinyl-cache/Dockerfile +++ b/frameworks/vinyl-cache/Dockerfile @@ -10,6 +10,7 @@ RUN set -ex; \ gcc \ make \ git \ + patch \ python3 \ python3-docutils \ python3-sphinx \ @@ -25,6 +26,7 @@ COPY vmod/ /tmp/vinyl-cache/vmod/ RUN set -ex; \ cd /tmp/vinyl-cache; \ + patch -p1 +Date: Mon, 17 Aug 2026 13:12:58 +0200 +Subject: [PATCH] Add httparena vmod to vmod/Makefile.am + +--- + vmod/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/vmod/Makefile.am b/vmod/Makefile.am +index 0c2e8628c..538539e05 100644 +--- a/vmod/Makefile.am ++++ b/vmod/Makefile.am +@@ -36,6 +36,7 @@ include $(srcdir)/automake_boilerplate_directors.am + include $(srcdir)/automake_boilerplate_math.am + include $(srcdir)/automake_boilerplate_proxy.am + include $(srcdir)/automake_boilerplate_purge.am ++include $(srcdir)/automake_boilerplate_httparena.am + include $(srcdir)/automake_boilerplate_std.am + include $(srcdir)/automake_boilerplate_unix.am + include $(srcdir)/automake_boilerplate_vtc.am +-- +2.39.5 + diff --git a/frameworks/vinyl-cache/vmod/Makefile.am b/frameworks/vinyl-cache/vmod/Makefile.am deleted file mode 100644 index 9a7e534ce..000000000 --- a/frameworks/vinyl-cache/vmod/Makefile.am +++ /dev/null @@ -1,74 +0,0 @@ -# - -TESTS = @VMOD_TESTS@ - -include $(top_srcdir)/vsc.am -include $(top_srcdir)/vtc.am - -EXTRA_DIST = $(TESTS) vmod_vcs_version.txt - -DISTCLEANFILES = vmod_vcs_version.txt - -AM_LDFLAGS = $(AM_LT_LDFLAGS) - -AM_CPPFLAGS = \ - -I$(top_srcdir)/include \ - -I$(top_srcdir)/bin/vinyld \ - -I$(top_builddir)/include - -# -# Use vmodtool.py generated automake boilerplate -# - -vccdir=$(datarootdir)/$(PACKAGE)/vcc - -# Prepare variables populated by includes -vmod_LTLIBRARIES = -noinst_LTLIBRARIES = -dist_vcc_DATA = -dist_noinst_DATA = - -include $(srcdir)/automake_boilerplate_blob.am -include $(srcdir)/automake_boilerplate_h2.am -include $(srcdir)/automake_boilerplate_cookie.am -include $(srcdir)/automake_boilerplate_debug.am -include $(srcdir)/automake_boilerplate_directors.am -include $(srcdir)/automake_boilerplate_math.am -include $(srcdir)/automake_boilerplate_proxy.am -include $(srcdir)/automake_boilerplate_purge.am -include $(srcdir)/automake_boilerplate_httparena.am -include $(srcdir)/automake_boilerplate_std.am -include $(srcdir)/automake_boilerplate_unix.am -include $(srcdir)/automake_boilerplate_vtc.am - -# -# Post-boilerplate tweaks -# - -VSC_SRC = VSC_debug.vsc - -libvmod_debug_la_SOURCES += $(VSC_SRC) -libvmod_debug_la_CFLAGS += -I$(top_srcdir)/lib/libvgz - -BUILT_SOURCES = $(VSC_GEN) - -# Allow Vmod_wrong*_Data to be exported -vmod_debug_symbols_regex = 'Vmod_.*_Data' - -# not --strict, not installed -vmodtoolargs_debug = --boilerplate --noinst -o vcc_debug_if - -### vmod_math specific -# the specs are deliberately checked in to not make the build -# dependend on external connectivity -vmod_math_spec.html: - curl -o $@ https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/math.h.html - -vmod_math.c: vmod_math.vcc - -vmod_math.vcc: vmod_math_spec.html vmod_math_gen.py - @PYTHON@ $(srcdir)/vmod_math_gen.py \ - vmod_math_spec.html vmod_math.vcc vmod_math.c - -# avoid running curl when building from a dist -dist_noinst_SCRIPTS = vmod_math_gen.py vmod_math_spec.html From 4800e48dd433c4f710cd581c115726bec602ca59 Mon Sep 17 00:00:00 2001 From: Nils Goroll Date: Mon, 17 Aug 2026 13:23:52 +0200 Subject: [PATCH 4/6] Remove logging To achieve comparable results, avoid any logging related contention This matches, for example, the nginx config, which has "access_log off;" As an alternative, the project could decide to also include some logging requirements. --- frameworks/vinyl-cache/entrypoint.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frameworks/vinyl-cache/entrypoint.sh b/frameworks/vinyl-cache/entrypoint.sh index af9afbee0..acafa462a 100755 --- a/frameworks/vinyl-cache/entrypoint.sh +++ b/frameworks/vinyl-cache/entrypoint.sh @@ -4,4 +4,5 @@ set -e exec vinyld -F \ -a :8080 \ -f /etc/vinyl/default.vcl \ - -s malloc,256m + -s malloc,256m \ + -p vsl_mask=none From ce8432e01ce1a6da5e634f04f5f96aba0050e711 Mon Sep 17 00:00:00 2001 From: Nils Goroll Date: Mon, 17 Aug 2026 14:35:46 +0200 Subject: [PATCH 5/6] Fix type: engine->infrastructure --- frameworks/vinyl-cache/meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/vinyl-cache/meta.json b/frameworks/vinyl-cache/meta.json index 81ddea4ca..56fdef3e0 100644 --- a/frameworks/vinyl-cache/meta.json +++ b/frameworks/vinyl-cache/meta.json @@ -2,7 +2,7 @@ "display_name": "Vinyl Cache", "language": "C", "engine": "vinyld", - "type": "engine", + "type": "infrastructure", "description": "Vinyl Cache HTTP accelerator.", "repo": "https://code.vinyl-cache.org/vinyl-cache/vinyl-cache", "enabled": true, From 4e0c6a1e5f32edd28f9747ed7afd13ce46c491fc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 17 Aug 2026 12:50:34 +0000 Subject: [PATCH 6/6] Benchmark results: vinyl-cache [skip ci] --- site/data/frameworks.json | 2 +- site/data/results/vinyl-cache.json | 102 +++++++++--------- .../static/logs/baseline/4096/vinyl-cache.log | 4 +- site/static/logs/baseline/512/vinyl-cache.log | 4 +- .../logs/limited-conn/4096/vinyl-cache.log | 4 +- .../logs/limited-conn/512/vinyl-cache.log | 4 +- .../logs/pipelined/4096/vinyl-cache.log | 4 +- .../static/logs/pipelined/512/vinyl-cache.log | 4 +- 8 files changed, 64 insertions(+), 64 deletions(-) diff --git a/site/data/frameworks.json b/site/data/frameworks.json index fb724d961..07c3938d9 100644 --- a/site/data/frameworks.json +++ b/site/data/frameworks.json @@ -1338,7 +1338,7 @@ "dir": "vinyl-cache", "description": "Vinyl Cache HTTP accelerator.", "repo": "https://code.vinyl-cache.org/vinyl-cache/vinyl-cache", - "type": "engine", + "type": "infrastructure", "engine": "vinyld" }, "warp": { diff --git a/site/data/results/vinyl-cache.json b/site/data/results/vinyl-cache.json index 0932f4536..2546ad00d 100644 --- a/site/data/results/vinyl-cache.json +++ b/site/data/results/vinyl-cache.json @@ -4,19 +4,19 @@ "baseline-4096": { "framework": "Vinyl Cache", "language": "C", - "rps": 190846, - "avg_latency": "5.23ms", - "p99_latency": "13.70ms", - "cpu": "6400.1%", - "memory": "190MiB", + "rps": 797101, + "avg_latency": "2.41ms", + "p99_latency": "8.08ms", + "cpu": "6471.8%", + "memory": "309MiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "30.29MB/s", - "input_bw": "14.74MB/s", - "reconnects": 0, - "status_2xx": 954231, + "bandwidth": "126.69MB/s", + "input_bw": "61.57MB/s", + "reconnects": 2, + "status_2xx": 3985507, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -24,19 +24,19 @@ "baseline-512": { "framework": "Vinyl Cache", "language": "C", - "rps": 190079, - "avg_latency": "2.69ms", - "p99_latency": "8.14ms", - "cpu": "6464.3%", - "memory": "197MiB", + "rps": 788894, + "avg_latency": "642us", + "p99_latency": "2.80ms", + "cpu": "6675.2%", + "memory": "186MiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "30.13MB/s", - "input_bw": "14.68MB/s", + "bandwidth": "125.14MB/s", + "input_bw": "60.94MB/s", "reconnects": 0, - "status_2xx": 950398, + "status_2xx": 3944474, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -44,19 +44,19 @@ "limited-conn-4096": { "framework": "Vinyl Cache", "language": "C", - "rps": 170931, - "avg_latency": "12.75ms", - "p99_latency": "68.10ms", - "cpu": "6509.1%", - "memory": "359MiB", + "rps": 411566, + "avg_latency": "4.74ms", + "p99_latency": "25.40ms", + "cpu": "6390.9%", + "memory": "231MiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "27.16MB/s", - "input_bw": "13.20MB/s", - "reconnects": 85193, - "status_2xx": 854656, + "bandwidth": "65.32MB/s", + "input_bw": "31.79MB/s", + "reconnects": 205636, + "status_2xx": 2057832, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -64,19 +64,19 @@ "limited-conn-512": { "framework": "Vinyl Cache", "language": "C", - "rps": 182363, - "avg_latency": "2.80ms", - "p99_latency": "8.48ms", - "cpu": "6396.8%", - "memory": "191MiB", + "rps": 418468, + "avg_latency": "1.22ms", + "p99_latency": "5.68ms", + "cpu": "6440.7%", + "memory": "202MiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 1, - "bandwidth": "28.93MB/s", - "input_bw": "14.09MB/s", - "reconnects": 91086, - "status_2xx": 911818, + "bandwidth": "66.41MB/s", + "input_bw": "32.33MB/s", + "reconnects": 209159, + "status_2xx": 2092343, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -84,18 +84,18 @@ "pipelined-4096": { "framework": "Vinyl Cache", "language": "C", - "rps": 308722, - "avg_latency": "77.81ms", - "p99_latency": "120.90ms", - "cpu": "6338.0%", - "memory": "238MiB", + "rps": 2402549, + "avg_latency": "8.39ms", + "p99_latency": "58.10ms", + "cpu": "6482.9%", + "memory": "179MiB", "connections": 4096, "threads": 64, "duration": "5s", "pipeline": 16, - "bandwidth": "49.07MB/s", - "reconnects": 3, - "status_2xx": 1543614, + "bandwidth": "381.45MB/s", + "reconnects": 0, + "status_2xx": 12012745, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 @@ -103,18 +103,18 @@ "pipelined-512": { "framework": "Vinyl Cache", "language": "C", - "rps": 289681, - "avg_latency": "28.23ms", - "p99_latency": "37.50ms", - "cpu": "6525.0%", - "memory": "138MiB", + "rps": 2325451, + "avg_latency": "3.04ms", + "p99_latency": "26.70ms", + "cpu": "6640.7%", + "memory": "109MiB", "connections": 512, "threads": 64, "duration": "5s", "pipeline": 16, - "bandwidth": "45.93MB/s", - "reconnects": 0, - "status_2xx": 1448407, + "bandwidth": "368.68MB/s", + "reconnects": 2, + "status_2xx": 11627256, "status_3xx": 0, "status_4xx": 0, "status_5xx": 0 diff --git a/site/static/logs/baseline/4096/vinyl-cache.log b/site/static/logs/baseline/4096/vinyl-cache.log index 5c1193424..6f33b28bb 100644 --- a/site/static/logs/baseline/4096/vinyl-cache.log +++ b/site/static/logs/baseline/4096/vinyl-cache.log @@ -1,5 +1,5 @@ -Debug: Version: vinyl-cache-9.0.1 revision 423648c4cb6b225b3268ffc337354ea938f5efee -Debug: Platform: Linux,6.17.0-22-generic,x86_64,-jnone,-smalloc,-sdefault,-hcritbit +Debug: Version: vinyl-cache-trunk revision 4c225ee6943cfd132b43b3f54e1e755bd88e4290 +Debug: Platform: Linux,6.17.0-22-generic,x86_64,-jnone,-smalloc,-sdefault,-ssynth,-hcritbit Debug: Child (17) Started Child launched OK Info: Child (17) said Child starts diff --git a/site/static/logs/baseline/512/vinyl-cache.log b/site/static/logs/baseline/512/vinyl-cache.log index 5c1193424..6f33b28bb 100644 --- a/site/static/logs/baseline/512/vinyl-cache.log +++ b/site/static/logs/baseline/512/vinyl-cache.log @@ -1,5 +1,5 @@ -Debug: Version: vinyl-cache-9.0.1 revision 423648c4cb6b225b3268ffc337354ea938f5efee -Debug: Platform: Linux,6.17.0-22-generic,x86_64,-jnone,-smalloc,-sdefault,-hcritbit +Debug: Version: vinyl-cache-trunk revision 4c225ee6943cfd132b43b3f54e1e755bd88e4290 +Debug: Platform: Linux,6.17.0-22-generic,x86_64,-jnone,-smalloc,-sdefault,-ssynth,-hcritbit Debug: Child (17) Started Child launched OK Info: Child (17) said Child starts diff --git a/site/static/logs/limited-conn/4096/vinyl-cache.log b/site/static/logs/limited-conn/4096/vinyl-cache.log index 5c1193424..6f33b28bb 100644 --- a/site/static/logs/limited-conn/4096/vinyl-cache.log +++ b/site/static/logs/limited-conn/4096/vinyl-cache.log @@ -1,5 +1,5 @@ -Debug: Version: vinyl-cache-9.0.1 revision 423648c4cb6b225b3268ffc337354ea938f5efee -Debug: Platform: Linux,6.17.0-22-generic,x86_64,-jnone,-smalloc,-sdefault,-hcritbit +Debug: Version: vinyl-cache-trunk revision 4c225ee6943cfd132b43b3f54e1e755bd88e4290 +Debug: Platform: Linux,6.17.0-22-generic,x86_64,-jnone,-smalloc,-sdefault,-ssynth,-hcritbit Debug: Child (17) Started Child launched OK Info: Child (17) said Child starts diff --git a/site/static/logs/limited-conn/512/vinyl-cache.log b/site/static/logs/limited-conn/512/vinyl-cache.log index 5c1193424..6f33b28bb 100644 --- a/site/static/logs/limited-conn/512/vinyl-cache.log +++ b/site/static/logs/limited-conn/512/vinyl-cache.log @@ -1,5 +1,5 @@ -Debug: Version: vinyl-cache-9.0.1 revision 423648c4cb6b225b3268ffc337354ea938f5efee -Debug: Platform: Linux,6.17.0-22-generic,x86_64,-jnone,-smalloc,-sdefault,-hcritbit +Debug: Version: vinyl-cache-trunk revision 4c225ee6943cfd132b43b3f54e1e755bd88e4290 +Debug: Platform: Linux,6.17.0-22-generic,x86_64,-jnone,-smalloc,-sdefault,-ssynth,-hcritbit Debug: Child (17) Started Child launched OK Info: Child (17) said Child starts diff --git a/site/static/logs/pipelined/4096/vinyl-cache.log b/site/static/logs/pipelined/4096/vinyl-cache.log index 5c1193424..6f33b28bb 100644 --- a/site/static/logs/pipelined/4096/vinyl-cache.log +++ b/site/static/logs/pipelined/4096/vinyl-cache.log @@ -1,5 +1,5 @@ -Debug: Version: vinyl-cache-9.0.1 revision 423648c4cb6b225b3268ffc337354ea938f5efee -Debug: Platform: Linux,6.17.0-22-generic,x86_64,-jnone,-smalloc,-sdefault,-hcritbit +Debug: Version: vinyl-cache-trunk revision 4c225ee6943cfd132b43b3f54e1e755bd88e4290 +Debug: Platform: Linux,6.17.0-22-generic,x86_64,-jnone,-smalloc,-sdefault,-ssynth,-hcritbit Debug: Child (17) Started Child launched OK Info: Child (17) said Child starts diff --git a/site/static/logs/pipelined/512/vinyl-cache.log b/site/static/logs/pipelined/512/vinyl-cache.log index 5c1193424..6f33b28bb 100644 --- a/site/static/logs/pipelined/512/vinyl-cache.log +++ b/site/static/logs/pipelined/512/vinyl-cache.log @@ -1,5 +1,5 @@ -Debug: Version: vinyl-cache-9.0.1 revision 423648c4cb6b225b3268ffc337354ea938f5efee -Debug: Platform: Linux,6.17.0-22-generic,x86_64,-jnone,-smalloc,-sdefault,-hcritbit +Debug: Version: vinyl-cache-trunk revision 4c225ee6943cfd132b43b3f54e1e755bd88e4290 +Debug: Platform: Linux,6.17.0-22-generic,x86_64,-jnone,-smalloc,-sdefault,-ssynth,-hcritbit Debug: Child (17) Started Child launched OK Info: Child (17) said Child starts