{
  "captured_at": "2026-09-05T17:43:01Z",
  "host": {
    "uname": "Linux showcase.party 6.8.0-138-generic #138-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 31 22:41:49 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux",
    "platform": "linux",
    "arch": "x86_64",
    "hostname": "showcase.party"
  },
  "os": {
    "pretty_name": "Ubuntu 24.04.4 LTS",
    "name": "Ubuntu",
    "version_id": "24.04",
    "version": "24.04.4 LTS (Noble Numbat)",
    "version_codename": "noble",
    "id": "ubuntu",
    "id_like": "debian",
    "home_url": "https://www.ubuntu.com/",
    "support_url": "https://help.ubuntu.com/",
    "bug_report_url": "https://bugs.launchpad.net/ubuntu/",
    "privacy_policy_url": "https://www.ubuntu.com/legal/terms-and-policies/privacy-policy",
    "ubuntu_codename": "noble",
    "logo": "ubuntu-logo"
  },
  "cpu": {
    "lscpu": {
      "lscpu": [
        {
          "field": "Architecture:",
          "data": "x86_64"
        },
        {
          "field": "CPU op-mode(s):",
          "data": "32-bit, 64-bit"
        },
        {
          "field": "Address sizes:",
          "data": "43 bits physical, 48 bits virtual"
        },
        {
          "field": "Byte Order:",
          "data": "Little Endian"
        },
        {
          "field": "CPU(s):",
          "data": "12"
        },
        {
          "field": "On-line CPU(s) list:",
          "data": "0-11"
        },
        {
          "field": "Vendor ID:",
          "data": "AuthenticAMD"
        },
        {
          "field": "Model name:",
          "data": "AMD Ryzen 5 3600 6-Core Processor"
        },
        {
          "field": "CPU family:",
          "data": "23"
        },
        {
          "field": "Model:",
          "data": "113"
        },
        {
          "field": "Thread(s) per core:",
          "data": "2"
        },
        {
          "field": "Core(s) per socket:",
          "data": "6"
        },
        {
          "field": "Socket(s):",
          "data": "1"
        },
        {
          "field": "Stepping:",
          "data": "0"
        },
        {
          "field": "Frequency boost:",
          "data": "enabled"
        },
        {
          "field": "CPU(s) scaling MHz:",
          "data": "63%"
        },
        {
          "field": "CPU max MHz:",
          "data": "4208.2031"
        },
        {
          "field": "CPU min MHz:",
          "data": "2200.0000"
        },
        {
          "field": "BogoMIPS:",
          "data": "7200.36"
        },
        {
          "field": "Flags:",
          "data": "fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr rdpru wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif v_spec_ctrl umip rdpid overflow_recov succor smca sev sev_es ibpb_exit_to_user"
        },
        {
          "field": "Virtualization:",
          "data": "AMD-V"
        },
        {
          "field": "L1d cache:",
          "data": "192 KiB (6 instances)"
        },
        {
          "field": "L1i cache:",
          "data": "192 KiB (6 instances)"
        },
        {
          "field": "L2 cache:",
          "data": "3 MiB (6 instances)"
        },
        {
          "field": "L3 cache:",
          "data": "32 MiB (2 instances)"
        },
        {
          "field": "NUMA node(s):",
          "data": "1"
        },
        {
          "field": "NUMA node0 CPU(s):",
          "data": "0-11"
        },
        {
          "field": "Vulnerability Gather data sampling:",
          "data": "Not affected"
        },
        {
          "field": "Vulnerability Indirect target selection:",
          "data": "Not affected"
        },
        {
          "field": "Vulnerability Itlb multihit:",
          "data": "Not affected"
        },
        {
          "field": "Vulnerability L1tf:",
          "data": "Not affected"
        },
        {
          "field": "Vulnerability Mds:",
          "data": "Not affected"
        },
        {
          "field": "Vulnerability Meltdown:",
          "data": "Not affected"
        },
        {
          "field": "Vulnerability Mmio stale data:",
          "data": "Not affected"
        },
        {
          "field": "Vulnerability Reg file data sampling:",
          "data": "Not affected"
        },
        {
          "field": "Vulnerability Retbleed:",
          "data": "Mitigation; untrained return thunk; SMT enabled with STIBP protection"
        },
        {
          "field": "Vulnerability Spec rstack overflow:",
          "data": "Mitigation; Safe RET"
        },
        {
          "field": "Vulnerability Spec store bypass:",
          "data": "Mitigation; Speculative Store Bypass disabled via prctl"
        },
        {
          "field": "Vulnerability Spectre v1:",
          "data": "Mitigation; usercopy/swapgs barriers and __user pointer sanitization"
        },
        {
          "field": "Vulnerability Spectre v2:",
          "data": "Mitigation; Retpolines; IBPB conditional; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected"
        },
        {
          "field": "Vulnerability Srbds:",
          "data": "Not affected"
        },
        {
          "field": "Vulnerability Tsa:",
          "data": "Not affected"
        },
        {
          "field": "Vulnerability Tsx async abort:",
          "data": "Not affected"
        },
        {
          "field": "Vulnerability Vmscape:",
          "data": "Mitigation; IBPB before exit to userspace"
        }
      ]
    },
    "board_name": "B450 Pro4 R2.0",
    "board_vendor": "ASRock",
    "product_name": ""
  },
  "memory_mb": 64228,
  "clock": {
    "governor": "schedutil",
    "boost": "1",
    "cur_khz": 4195840,
    "min_khz": 2200000,
    "max_khz": 3600000
  },
  "toolchains": {
    "ruby": "ruby 4.0.5 (2026-05-20 revision 64336ffd0e) +PRISM [x86_64-linux]",
    "jruby": "jruby 10.1.0.0 (4.0.0) 2026-04-20 32f988b78c OpenJDK 64-Bit Server VM 25.0.3+9-LTS on 25.0.3+9-LTS +indy +jit [x86_64-linux]",
    "spinel": "spinel aff3815f8acf [cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0]",
    "rustc": "rustc 1.95.0 (59807616e 2026-04-14)",
    "cargo": "cargo 1.95.0 (f2d3ce0bd 2026-03-21)",
    "go": "go version go1.26.4 linux/amd64",
    "node": "v26.3.0",
    "crystal": "Crystal 1.20.2 [2482c62c1] (2026-05-15)",
    "shards": "Shards 0.20.0 [b2b98ca] (2025-12-19)",
    "python3": "Python 3.14.6",
    "uv": "uv 0.11.22 (x86_64-unknown-linux-musl)",
    "dotnet": "10.0.301",
    "wrk": "wrk debian/4.1.0-4build2 [epoll] Copyright (C) 2012 Will Glozer",
    "curl": "curl 8.5.0 (x86_64-pc-linux-gnu) libcurl/8.5.0 OpenSSL/3.0.13 zlib/1.3 brotli/1.1.0 zstd/1.5.5 libidn2/2.3.7 libpsl/0.21.2 (+libidn2/2.3.7) libssh/0.10.6/openssl/zlib nghttp2/1.59.0 librtmp/2.3 OpenLDAP/2.6.10",
    "mise": "2026.5.15 linux-x64 (2026-05-23)",
    "sqlite3": "3.45.1 2024-01-30 16:01:20 e876e51a0ed5c5b3126f52e532044363a014bc594cfefa87ffb5b82257ccalt1 (64-bit)",
    "redis-server": "Redis server v=7.0.15 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=e53ff17674aa6190"
  },
  "toolchain_paths": {
    "ruby": "/home/rubys/.local/share/mise/installs/ruby/4.0.5/bin/ruby",
    "jruby": "/home/rubys/.local/share/mise/installs/ruby/jruby-10.1.0.0/bin/jruby",
    "spinel": "/home/rubys/spinel/bin/spinel",
    "rustc": "/home/rubys/.cargo/bin/rustc",
    "cargo": "/home/rubys/.cargo/bin/cargo",
    "go": "/home/rubys/.local/share/mise/installs/go/1.26.4/bin/go",
    "node": "/home/rubys/.local/share/mise/installs/node/26.3.0/bin/node",
    "crystal": "/home/rubys/.local/share/mise/installs/crystal/1.20.2/bin/crystal",
    "shards": "/home/rubys/.local/share/mise/installs/crystal/1.20.2/bin/shards",
    "python3": "/home/rubys/.local/share/mise/installs/python/3.14/bin/python3",
    "uv": "/home/rubys/.local/share/mise/installs/uv/latest/uv-x86_64-unknown-linux-musl/uv",
    "dotnet": "/home/rubys/.local/share/mise/dotnet-root/dotnet",
    "wrk": "/usr/bin/wrk",
    "curl": "/usr/bin/curl",
    "mise": "/home/rubys/.local/bin/mise",
    "sqlite3": "/usr/bin/sqlite3",
    "redis-server": "/usr/bin/redis-server"
  },
  "mise_current": {
    "crystal": [
      {
        "version": "1.20.2",
        "requested_version": "1.20.2",
        "install_path": "/home/rubys/.local/share/mise/installs/crystal/1.20.2",
        "source": {
          "type": "mise.toml",
          "path": "/home/rubys/.config/mise/config.toml"
        },
        "installed": true,
        "active": true
      }
    ],
    "dotnet": [
      {
        "version": "10.0.301",
        "requested_version": "10",
        "install_path": "/home/rubys/.local/share/mise/installs/dotnet/10.0.301",
        "source": {
          "type": "mise.toml",
          "path": "/home/rubys/.config/mise/config.toml"
        },
        "symlinked_to": "/home/rubys/.local/share/mise/installs/dotnet/10.0.301",
        "installed": true,
        "active": true
      }
    ],
    "elixir": [
      {
        "version": "1.18.4-otp-28",
        "requested_version": "1.18.4-otp-28",
        "install_path": "/home/rubys/.local/share/mise/installs/elixir/1.18.4-otp-28",
        "source": {
          "type": "mise.toml",
          "path": "/home/rubys/.config/mise/config.toml"
        },
        "installed": true,
        "active": true
      }
    ],
    "erlang": [
      {
        "version": "28.5",
        "requested_version": "28",
        "install_path": "/home/rubys/.local/share/mise/installs/erlang/28.5",
        "source": {
          "type": "mise.toml",
          "path": "/home/rubys/.config/mise/config.toml"
        },
        "installed": true,
        "active": true
      }
    ],
    "go": [
      {
        "version": "1.26.4",
        "requested_version": "1.26.4",
        "install_path": "/home/rubys/.local/share/mise/installs/go/1.26.4",
        "source": {
          "type": "mise.toml",
          "path": "/home/rubys/.config/mise/config.toml"
        },
        "installed": true,
        "active": true
      }
    ],
    "gradle": [
      {
        "version": "9.5.1",
        "requested_version": "9.5.1",
        "install_path": "/home/rubys/.local/share/mise/installs/gradle/9.5.1",
        "source": {
          "type": "mise.toml",
          "path": "/home/rubys/.config/mise/config.toml"
        },
        "installed": true,
        "active": true
      }
    ],
    "java": [
      {
        "version": "temurin-25.0.3+9.0.LTS",
        "requested_version": "temurin-25",
        "install_path": "/home/rubys/.local/share/mise/installs/java/temurin-25.0.3+9.0.LTS",
        "source": {
          "type": "mise.toml",
          "path": "/home/rubys/.config/mise/config.toml"
        },
        "installed": true,
        "active": true
      }
    ],
    "node": [
      {
        "version": "26.3.0",
        "requested_version": "26.3.0",
        "install_path": "/home/rubys/.local/share/mise/installs/node/26.3.0",
        "source": {
          "type": "mise.toml",
          "path": "/home/rubys/.config/mise/config.toml"
        },
        "installed": true,
        "active": true
      }
    ],
    "python": [
      {
        "version": "3.14.6",
        "requested_version": "3.14",
        "install_path": "/home/rubys/.local/share/mise/installs/python/3.14.6",
        "source": {
          "type": "mise.toml",
          "path": "/home/rubys/.config/mise/config.toml"
        },
        "installed": true,
        "active": true
      }
    ],
    "ruby": [
      {
        "version": "jruby-10.1.0.0",
        "requested_version": "jruby-10.1.0.0",
        "install_path": "/home/rubys/.local/share/mise/installs/ruby/jruby-10.1.0.0",
        "source": {
          "type": "mise.toml",
          "path": "/home/rubys/.config/mise/config.toml"
        },
        "installed": true,
        "active": true
      },
      {
        "version": "4.0.5",
        "requested_version": "4.0.5",
        "install_path": "/home/rubys/.local/share/mise/installs/ruby/4.0.5",
        "source": {
          "type": "mise.toml",
          "path": "/home/rubys/.config/mise/config.toml"
        },
        "installed": true,
        "active": true
      }
    ],
    "rust": [
      {
        "version": "1.95.0",
        "requested_version": "1.95.0",
        "install_path": "/home/rubys/.local/share/mise/installs/rust/1.95.0",
        "source": {
          "type": "mise.toml",
          "path": "/home/rubys/.config/mise/config.toml"
        },
        "symlinked_to": "/home/rubys/.local/share/mise/installs/rust/1.95.0",
        "installed": true,
        "active": true
      }
    ],
    "swift": [
      {
        "version": "6.3.2",
        "requested_version": "6.3.2",
        "install_path": "/home/rubys/.local/share/mise/installs/swift/6.3.2",
        "source": {
          "type": "mise.toml",
          "path": "/home/rubys/.config/mise/config.toml"
        },
        "installed": true,
        "active": true
      }
    ],
    "uv": [
      {
        "version": "0.11.22",
        "requested_version": "latest",
        "install_path": "/home/rubys/.local/share/mise/installs/uv/0.11.22",
        "source": {
          "type": "mise.toml",
          "path": "/home/rubys/.config/mise/config.toml"
        },
        "installed": true,
        "active": true
      }
    ]
  },
  "git": {
    "sha": "fccbe6a128d0315caffd0fab893e8c78b7d1846e",
    "branch": "main",
    "subject": "Three more jobs build a spinel tree and needed the allocator too",
    "dirty": false
  },
  "conditions": {
    "loadavg_1_5_15": [
      0.59,
      0.96,
      1.73
    ],
    "uptime": "19:43:01 up 23:26,  4 users,  load average: 0.59, 0.96, 1.73",
    "date_utc": "2026-09-05T17:43:01Z"
  },
  "harness": {
    "workers": [
      1
    ],
    "concurrency": 16,
    "runs": 3,
    "duration_sec": 20,
    "warmup_sec": 20,
    "threads": 5,
    "wrk_threads": 2,
    "endpoints": [
      "/rooms/1",
      "/rooms/1/messages"
    ],
    "targets": [
      "rails",
      "rails-nocache",
      "ruby",
      "spinel",
      "rails-1p",
      "rails-nocache-1p",
      "ruby-1p",
      "spinel-1p"
    ],
    "command": "scripts/bench-campfire --app /home/rubys/once-campfire --port 19100 --out bench/results/campfire/20260905-185806 rails rails-nocache ruby spinel rails-1p rails-nocache-1p ruby-1p spinel-1p"
  },
  "benchmark": "campfire",
  "oracle": {
    "campfire_sha": "94a48aacb65af0fe25c7b850d4ced055e27077a7",
    "rails_revision": "1a02651ac37fb64b4de2a2b73461d86acf9c98fb",
    "rails_version": "8.2.0.alpha",
    "ruby_version": "4.0.5",
    "serve_env": "production",
    "fragment_cache_default": true,
    "seed": {
      "users": 50,
      "rooms": 5,
      "messages_per_room": 100
    }
  },
  "servers": {
    "rails lanes": "puma 7.2.1",
    "emit lanes": "puma 8.0.1"
  },
  "notes": [
    "<code>rails</code> serves campfire's message fragments from Redis (<code>cached: true</code>); <code>rails-nocache</code> renders them. The emitted tree has no fragment cache, so <code>rails-nocache</code> is the lane that compares renderers and <code>rails</code> is the lane that says what a deployment costs. Publish both or publish neither.",
    "The deployed lanes are what each project would run on this box. <code>rails</code> is once-campfire AS ITS OWN DOCKERFILE RUNS IT: Thruster in front of Puma, <code>(processor_count * 0.666).ceil</code> workers x 5 threads from its own <code>config/puma.rb</code>, jemalloc preloaded, resque-pool alongside. <code>ruby</code> is the CRuby emit in the same Puma shape with the same allocator; <code>spinel</code> is the binary with its workers autodetected.",
    "The <code>-1p</code> lanes are the diagnostic: one process each, no proxy and no job runner. They exist because a deployed number cannot say WHY it landed where it did — Puma's five threads share a GVL where the binary's workers do not, so these rows separate \"their runtime is slower\" from \"we gave them fewer cores\".",
    "Known omissions, stated rather than discovered: the WebSocket phase's rails lane runs Puma with campfire's worker count and its allocator but WITHOUT Thruster and resque-pool, and no lane terminates TLS."
  ],
  "lane_shapes": {
    "rails-1p": [
      "jemalloc=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2",
      "workers=1",
      "fragment-cache=1"
    ],
    "rails-nocache-1p": [
      "jemalloc=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2",
      "workers=1",
      "fragment-cache=0"
    ],
    "rails-nocache": [
      "jemalloc=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2",
      "resque-pool=pid 502343",
      "thruster=front on :19101 -> puma :20101",
      "workers=campfire's own formula (WEB_CONCURRENCY unset)"
    ],
    "rails": [
      "jemalloc=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2",
      "resque-pool=pid 490722",
      "thruster=front on :19100 -> puma :20100",
      "workers=campfire's own formula (WEB_CONCURRENCY unset)"
    ],
    "ruby-1p": [
      "jemalloc=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2",
      "workers=1"
    ],
    "ruby": [
      "jemalloc=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2",
      "workers=8"
    ],
    "spinel-1p": [
      "workers=1"
    ],
    "spinel": [
      "workers=autodetected"
    ]
  }
}
