Add an NS1-host NATS study: run, charts, methodology, and tuning notes.
Some checks are pending
offline / test (push) Waiting to run

Second ladder executed entirely on NS1.GEORGELAMBERT.ORG (70.88.205.138)
against LXC 511–513; HTML and PDF built on that host.
This commit is contained in:
George Lambert 2026-09-12 01:16:17 -04:00
parent de20a42109
commit c5d286dc6b
54 changed files with 4665 additions and 13 deletions

View file

@ -16,18 +16,34 @@ def fmt_int(s: str | None) -> str:
def parse_bench(text: str) -> dict[str, str]:
out: dict[str, str] = {"kind": "throughput"}
m = re.search(r"(?m)^\s*Pub stats:\s*([0-9,]+)\s*msgs/sec\s*~\s*([0-9.]+)\s*MB/sec", text)
if m:
out["pub_msgs"] = m.group(1).replace(",", "")
out["pub_mb"] = m.group(2)
m = re.search(r"(?m)^\s*Sub stats:\s*([0-9,]+)\s*msgs/sec\s*~\s*([0-9.]+)\s*MB/sec", text)
if m:
out["sub_msgs"] = m.group(1).replace(",", "")
out["sub_mb"] = m.group(2)
m = re.search(r"NATS Pub/Sub stats:\s*([0-9,]+)\s*msgs/sec\s*~\s*([0-9.]+)\s*MB/sec", text)
if m:
out["agg_msgs"] = m.group(1).replace(",", "")
out["agg_mb"] = m.group(2)
def _rate(pattern: str, msgs_key: str, mb_key: str) -> None:
m = re.search(pattern, text)
if not m:
return
out[msgs_key] = m.group(1).replace(",", "")
n = float(m.group(2))
unit = m.group(3).upper()
if unit == "KB":
n = n / 1024.0
elif unit == "GB":
n = n * 1024.0
out[mb_key] = f"{n:.2f}"
_rate(
r"(?m)^\s*Pub stats:\s*([0-9,]+)\s*msgs/sec\s*~\s*([0-9.]+)\s*(KB|MB|GB)/sec",
"pub_msgs",
"pub_mb",
)
_rate(
r"(?m)^\s*Sub stats:\s*([0-9,]+)\s*msgs/sec\s*~\s*([0-9.]+)\s*(KB|MB|GB)/sec",
"sub_msgs",
"sub_mb",
)
_rate(
r"NATS Pub/Sub stats:\s*([0-9,]+)\s*msgs/sec\s*~\s*([0-9.]+)\s*(KB|MB|GB)/sec",
"agg_msgs",
"agg_mb",
)
if "JetStream" in text or "--js" in text or "js-" in text:
out["mode"] = "jetstream r=3 file"
else: