diff --git a/examples/extensions/benchmarks/sem_benchmark/.gitignore b/examples/extensions/benchmarks/sem_benchmark/.gitignore new file mode 100644 index 00000000..36575bc5 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/.gitignore @@ -0,0 +1,3 @@ +data/ +work/ +target/ diff --git a/examples/extensions/benchmarks/sem_benchmark/Makefile b/examples/extensions/benchmarks/sem_benchmark/Makefile new file mode 100644 index 00000000..e52dcda1 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/Makefile @@ -0,0 +1,84 @@ +# Build the Sail + Nutmeg stack for sem_benchmark on a fresh VPS and run it. +# +# Prerequisites (Ubuntu/Debian, see README.md for details): +# curl, git, protobuf-compiler, libprotobuf-dev, clang, libclang-dev, pkg-config +# rustup (1.97.1+), uv, python3.12 (a uv-managed interpreter is fine) +# +# make venv # .venv with pyspark[connect] + maturin + gfrs-poc +# make build # nutmeg wheel + sail host, both with RUSTFLAGS=-C target-cpu=native +# make smoke # tiny example-directed graph, both engines, 1 run +# make bench DS=cit-Patents ENGINE=both # hash joins (sail default) +# make bench-smj DS=cit-Patents ENGINE=both # sort-merge joins (--use-smj) +# make clean + +REPO_ROOT := $(shell git rev-parse --show-toplevel) +HERE := $(REPO_ROOT)/examples/extensions/benchmarks/sem_benchmark + +VENV ?= $(REPO_ROOT)/.venv +PYTHON ?= $(VENV)/bin/python +# Respect CARGO_TARGET_DIR when the environment sets it, like cargo does. +HOST_TARGET_DIR ?= $(or $(CARGO_TARGET_DIR),$(REPO_ROOT)/target) +SAIL_BIN ?= $(HOST_TARGET_DIR)/release/sail +RUSTFLAGS ?= -C target-cpu=native +CARGO_BUILD_JOBS ?= 4 + +WORK_DIR ?= $(HERE)/work +RESULTS_DIR ?= $(HERE)/results +DATA_DIR ?= $(HERE)/data +MAX_MEMORY ?= 24G +PARTITIONS ?= 8 +THREADS ?= 8 +DS ?= example-directed +ENGINE ?= both +RUNS ?= 3 +TOL ?= 1e-5 + +RUN_ARGS = \ + --work-dir $(WORK_DIR) \ + --max-memory $(MAX_MEMORY) \ + --partitions $(PARTITIONS) \ + --threads $(THREADS) \ + --sail-binary $(SAIL_BIN) \ + --results-dir $(RESULTS_DIR) \ + --data-dir $(DATA_DIR) \ + --tol $(TOL) + +.PHONY: venv build nutmeg-wheel sail-host smoke bench bench-smj clean + +venv: + uv venv --python 3.12 $(VENV) + uv pip install --python $(PYTHON) "pyspark[connect]==4.0.1" maturin==1.9.6 + uv pip install --python $(PYTHON) --no-deps $(REPO_ROOT)/examples/extensions/graph-algorithms/gfrs-poc + +nutmeg-wheel: venv + mkdir -p $(HERE)/target/wheels + cd $(REPO_ROOT) && \ + RUSTFLAGS="$(RUSTFLAGS)" CARGO_BUILD_JOBS=$(CARGO_BUILD_JOBS) \ + CARGO_TARGET_DIR=$(HERE)/target/nutmeg \ + $(PYTHON) -m maturin build --release --locked \ + --manifest-path $(REPO_ROOT)/examples/extensions/nutmeg/Cargo.toml \ + --interpreter $(PYTHON) --out $(HERE)/target/wheels + uv pip install --python $(PYTHON) --reinstall $(HERE)/target/wheels/sail_nutmeg-*.whl + +sail-host: + cd $(REPO_ROOT) && \ + PYO3_PYTHON=$(PYTHON) \ + RUSTFLAGS="$(RUSTFLAGS)" CARGO_BUILD_JOBS=$(CARGO_BUILD_JOBS) \ + cargo build --release --locked -p sail-cli + +build: nutmeg-wheel sail-host + +smoke: build + $(PYTHON) $(HERE)/main.py \ + --engine both --dataset example-directed --runs 1 --warmup 0 $(RUN_ARGS) + +bench: build + $(PYTHON) $(HERE)/main.py \ + --engine $(ENGINE) --dataset $(DS) --runs $(RUNS) $(RUN_ARGS) + +bench-smj: build + $(PYTHON) $(HERE)/main.py \ + --engine $(ENGINE) --dataset $(DS) --runs $(RUNS) --use-smj $(RUN_ARGS) + +clean: + rm -rf $(WORK_DIR) $(RESULTS_DIR) diff --git a/examples/extensions/benchmarks/sem_benchmark/README.md b/examples/extensions/benchmarks/sem_benchmark/README.md new file mode 100644 index 00000000..52b3ae37 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/README.md @@ -0,0 +1,105 @@ +# sem_benchmark: Nutmeg pagerank vs PySpark Pregel pagerank (gfrs-poc) on Sail + +A POC harness that compares two PageRank implementations against the same Sail +server, the same two parquet input files per dataset and the same resource +envelope, and reports in the graphframes-rs benchmark style. + +| `--engine` | Implementation | Notes | +| --- | --- | --- | +| `pregel` | [`gfrs_poc.pagerank`](../../../graph-algorithms/gfrs-poc) — pure PySpark port of the graphframes-rs Pregel engine | GraphX-style deltas, decreasing active frontier, parquet checkpoints (no purge) | +| `nutmeg` | `sail_nutmeg` native kernel `pagerankDelta` (Banda) | driver-resident CSR, tolerance-scaled residual pushes | + +Both run until convergence with `tol=1e-5` (damping 0.85) and write exactly one +parquet result file (`id`, `pagerank`) under `--work-dir`. + +## Harness shape + +- **Inputs**: two parquet files per dataset on local disk + (`//-{v,e}.parquet`, downloaded from + `datasets.ldbcouncil.org` on first use). +- **Cold runs**: every run (warmup included) starts a **fresh Sail server + process** and stops it afterwards; every measured run is a "first run". +- **Server settings per run** (from `main.py` flags): + - `SAIL_MODE=local` + - `SAIL_RUNTIME__MEMORY_POOL__TYPE=fair`, + `SAIL_RUNTIME__MEMORY_POOL__FAIR__MAX_SIZE=<--max-memory>` + - `SAIL_RUNTIME__TEMPORARY_FILES__PATHS=["<--work-dir>/spill"]` (point this at + fast local NVM) + - `--use-smj` -> `SAIL_OPTIMIZER__PREFER_HASH_JOIN=false` (this is also the + graphframes-rs default) +- **pregel checkpoints** land under `<--work-dir>/_/run_/gfrs//` + (a fresh uuid per run, like graphframes-rs). **Nothing is purged**, so disk + usage grows with the iteration count — keep `--work-dir` on a large volume. +- **Output**: `results////max_mem___parts_/` + with `benchmark.json` (params, per-run wall time / peak RSS / peak disk / + iterations / residual, stats, DTW-aligned series) plus `wall_time`, `rss` and + `disk` gnuplot scripts and PNGs when gnuplot is installed. + +The `datasets.py`, `monitor.py`, `stats.py` and `plotting.py` files are copied +as-is from `graphframes-rs/benches/python/`. + +## What to do on a VPS + +Prerequisites (Ubuntu/Debian; the same inventory as +`examples/extensions/scripts/Dockerfile.linux` minus GEOS — Sedona is not needed): + +```bash +sudo apt-get update && sudo apt-get install -y \ + curl git build-essential clang libclang-dev libssl-dev pkg-config \ + libprotobuf-dev protobuf-compiler +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.97.1 +source "$HOME/.cargo/env" +curl -LsSf https://astral.sh/uv/install.sh | sh +``` + +Then, from the branch checkout (put the repo and the build targets on a fast +disk; the Rust builds need tens of GiB): + +```bash +cd sail +make -C examples/extensions/benchmarks/sem_benchmark venv # .venv: pyspark[connect], maturin, gfrs-poc +make -C examples/extensions/benchmarks/sem_benchmark build # nutmeg wheel + sail host (release, target-cpu=native) +``` + +Smoke test (tiny 10-vertex graph, both engines, one run, no warmup): + +```bash +make -C examples/extensions/benchmarks/sem_benchmark smoke +``` + +Measured runs (adjust `WORK_DIR` to your NVM mount; sizes from the LDBC catalog: +cit-Patents ~16M edges, graph500-24 ~260M edges, twitter_mpi ~1.4B edges): + +```bash +S=examples/extensions/benchmarks/sem_benchmark +make -C $S bench DS=cit-Patents ENGINE=both WORK_DIR=/mnt/nvm/sem RUNS=3 MAX_MEMORY=24G +make -C $S bench-smj DS=cit-Patents ENGINE=both WORK_DIR=/mnt/nvm/sem RUNS=3 MAX_MEMORY=24G +make -C $S bench DS=graph500-24 ENGINE=both WORK_DIR=/mnt/nvm/sem RUNS=3 MAX_MEMORY=24G +make -C $S bench DS=twitter_mpi ENGINE=both WORK_DIR=/mnt/nvm/sem RUNS=3 MAX_MEMORY=24G +``` + +Every Makefile variable (`WORK_DIR`, `RESULTS_DIR`, `DATA_DIR`, `MAX_MEMORY`, +`PARTITIONS`, `THREADS`, `DS`, `ENGINE`, `RUNS`, `TOL`) can be overridden on the +command line. `make -C $S clean` removes the workdir and results. + +## Reading the numbers + +- `wall_time_s` covers **input DataFrame handles -> completed result parquet + write** (server startup, verification and cleanup are excluded), matching the + boundary of the existing extension benchmarks. +- `peak_rss_kb` samples the **Sail server process** (`/proc//status VmRSS`); + `peak_disk_bytes` is the exact `du`-style size of the run's workdir tree. +- For `nutmeg`, per-run `details.native` carries the kernel-reported + `iterations`, `converged` and `residual`; for `pregel`, `details.iterations` + and `details.active_counts` come from the engine itself. + +## Notes / POC limitations + +- No checkpoint purge: the PySpark Connect API has no FS list/delete, so + `gfrs-poc` keeps every `state-` / `aggregated-messages-` directory. + Expect roughly `2 * iterations * (state size)` on disk per measured run. +- `--nutmeg-kernel pagerank` switches the nutmeg side to the Grust reference + kernel (successive-iterate stopping); the default `pagerankDelta` is the + apples-to-apples delta variant. +- `--nutmeg-memory` is prepaid from the same fair pool as `--max-memory`, so it + must stay smaller (the harness rejects invalid pairs up front). diff --git a/examples/extensions/benchmarks/sem_benchmark/datasets.py b/examples/extensions/benchmarks/sem_benchmark/datasets.py new file mode 100644 index 00000000..3f3df096 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/datasets.py @@ -0,0 +1,152 @@ +#!/usr/bin/env python3 +"""LDBC Graphalytics dataset catalog + parquet download (pure stdlib). + +The catalog mirrors the official dataset table +(https://ldbcouncil.org/benchmarks/graphalytics/datasets/): name, scale +class, node/edge counts and package size. Counts are stored both as the +human-readable strings from the page ("3M") and as parsed integers used for +e.g. the SSSP landmark (25th percentile vertex id) and throughput numbers. +""" + +from __future__ import annotations + +import sys +import time +import urllib.error +import urllib.request +from pathlib import Path + +BASE_URL = "https://datasets.ldbcouncil.org/graphalytics-parquet" + +# name -> (scale, nodes_str, edges_str, size_str) +_CATALOG = [ + ("cit-Patents", "XS", "3M", "16M", "119.1 MB"), + ("com-friendster", "XL", "65M", "1B", "6.7 GB"), + ("datagen-7_5-fb", "S", "633k", "34M", "162.3 MB"), + ("datagen-7_6-fb", "S", "754k", "42M", "200.0 MB"), + ("datagen-7_7-zf", "S", "13M", "32M", "434.5 MB"), + ("datagen-7_8-zf", "S", "16M", "41M", "544.3 MB"), + ("datagen-7_9-fb", "S", "1M", "85M", "401.2 MB"), + ("datagen-8_0-fb", "M", "1M", "107M", "502.5 MB"), + ("datagen-8_1-fb", "M", "2M", "134M", "625.4 MB"), + ("datagen-8_2-zf", "M", "43M", "106M", "1.4 GB"), + ("datagen-8_3-zf", "M", "53M", "130M", "1.7 GB"), + ("datagen-8_4-fb", "M", "3M", "269M", "1.2 GB"), + ("datagen-8_5-fb", "L", "4M", "332M", "1.5 GB"), + ("datagen-8_6-fb", "L", "5M", "421M", "1.9 GB"), + ("datagen-8_7-zf", "L", "145M", "340M", "4.6 GB"), + ("datagen-8_8-zf", "L", "168M", "413M", "5.3 GB"), + ("datagen-8_9-fb", "L", "10M", "848M", "3.7 GB"), + ("datagen-9_0-fb", "XL", "12M", "1B", "4.6 GB"), + ("datagen-9_1-fb", "XL", "16M", "1B", "5.8 GB"), + ("datagen-9_2-zf", "XL", "434M", "1B", "13.7 GB"), + ("datagen-9_3-zf", "XL", "555M", "1B", "17.4 GB"), + ("datagen-9_4-fb", "XL", "29M", "2B", "14.0 GB"), + ("datagen-sf3k-fb", "XL", "33M", "2B", "12.7 GB"), + ("datagen-sf10k-fb", "2XL", "100M", "9B", "40.5 GB"), + ("dota-league", "S", "61k", "50M", "114.3 MB"), + ("graph500-22", "S", "2M", "64M", "202.4 MB"), + ("graph500-23", "M", "4M", "129M", "410.6 MB"), + ("graph500-24", "M", "8M", "260M", "847.7 MB"), + ("graph500-25", "L", "17M", "523M", "1.7 GB"), + ("graph500-26", "XL", "32M", "1B", "3.4 GB"), + ("graph500-27", "XL", "63M", "2B", "7.1 GB"), + ("graph500-28", "2XL", "121M", "4B", "14.4 GB"), + ("graph500-29", "2XL", "232M", "8B", "29.6 GB"), + ("graph500-30", "3XL", "447M", "17B", "60.8 GB"), + ("kgs", "XS", "832k", "17M", "65.7 MB"), + ("twitter_mpi", "XL", "52M", "1B", "5.7 GB"), + ("wiki-Talk", "2XS", "2M", "5M", "34.9 MB"), + ("example-directed", "-", "10", "17", "1.0 KB"), + ("example-undirected", "-", "9", "12", "1.0 KB"), + ("test-bfs-directed", "-", "<100", "<100", "<2.0 KB"), + ("test-bfs-undirected", "-", "<100", "<100", "<2.0 KB"), + ("test-cdlp-directed", "-", "<100", "<100", "<2.0 KB"), + ("test-cdlp-undirected", "-", "<100", "<100", "<2.0 KB"), + ("test-pr-directed", "-", "<100", "<100", "<2.0 KB"), + ("test-pr-undirected", "-", "<100", "<100", "<2.0 KB"), + ("test-lcc-directed", "-", "<100", "<100", "<2.0 KB"), + ("test-lcc-undirected", "-", "<100", "<100", "<2.0 KB"), + ("test-wcc-directed", "-", "<100", "<100", "<2.0 KB"), + ("test-wcc-undirected", "-", "<100", "<100", "<2.0 KB"), + ("test-sssp-directed", "-", "<100", "<100", "<2.0 KB"), + ("test-sssp-undirected", "-", "<100", "<100", "<2.0 KB"), +] + +CATALOG = {name: (scale, nodes_s, edges_s, size_s) for name, scale, nodes_s, edges_s, size_s in _CATALOG} + + +def parse_count(s: str) -> int | None: + """Parse '3M' -> 3_000_000, '633k' -> 633_000, '1B' -> 1_000_000_000, '10' -> 10.""" + s = s.strip() + if not s or s.startswith("<"): + return None + mult = 1 + if s[-1] in "kK": + mult = 1_000 + s = s[:-1] + elif s[-1] in "mM": + mult = 1_000_000 + s = s[:-1] + elif s[-1] in "bB": + mult = 1_000_000_000 + s = s[:-1] + try: + return int(float(s) * mult) + except ValueError: + return None + + +def info(name: str) -> dict: + scale, nodes_s, edges_s, size_s = CATALOG[name] + return { + "name": name, + "scale": scale, + "nodes_str": nodes_s, + "edges_str": edges_s, + "size": size_s, + "vertices": parse_count(nodes_s), + "edges": parse_count(edges_s), + } + + +def list_datasets() -> str: + rows = [["name", "scale", "nodes", "edges", "size"]] + for name, scale, nodes_s, edges_s, size_s in _CATALOG: + rows.append([name, scale, nodes_s, edges_s, size_s]) + widths = [max(len(r[i]) for r in rows) for i in range(5)] + lines = [] + for r in rows: + lines.append(" ".join(cell.ljust(w) for cell, w in zip(r, widths))) + return "\n".join(lines) + + +def ensure_dataset(name: str, data_dir: Path, retries: int = 3) -> None: + """Download -v.parquet / -e.parquet into data_dir// if missing.""" + ds_dir = data_dir / name + ds_dir.mkdir(parents=True, exist_ok=True) + for suffix in ("v", "e"): + target = ds_dir / f"{name}-{suffix}.parquet" + if target.exists() and target.stat().st_size > 0: + continue + url = f"{BASE_URL}/{name}-{suffix}.parquet" + print(f"Downloading {url}") + tmp = target.with_suffix(".parquet.part") + for attempt in range(1, retries + 1): + try: + req = urllib.request.Request(url, headers={"User-Agent": "graphframes-rs-bench"}) + with urllib.request.urlopen(req, timeout=120) as resp, open(tmp, "wb") as f: + while True: + chunk = resp.read(1 << 16) + if not chunk: + break + f.write(chunk) + tmp.rename(target) + print(f" -> {target} ({target.stat().st_size / 1e6:.1f} MB)") + break + except (urllib.error.URLError, TimeoutError, OSError) as e: + print(f" attempt {attempt}/{retries} failed: {e}", file=sys.stderr) + if attempt < retries: + time.sleep(5) + else: + raise SystemExit(f"failed to download {url}") diff --git a/examples/extensions/benchmarks/sem_benchmark/main.py b/examples/extensions/benchmarks/sem_benchmark/main.py new file mode 100755 index 00000000..7a8eb24a --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/main.py @@ -0,0 +1,530 @@ +#!/usr/bin/env python3 +"""sem_benchmark: Nutmeg pagerank vs the gfrs-poc (PySpark Pregel) pagerank. + +Both engines run against the same Sail server build (see ./Makefile), the same +two LDBC Graphalytics parquet files per dataset and the same resource envelope: + + * fresh Sail server per run (a "cold" Sail state; the OS page cache stays warm), + * fair memory pool bounded by --max-memory, spill files under --work-dir, + * optional SMJ join preference (--use-smj -> optimizer.prefer_hash_join=false), + * pagerank until convergence with tol=1e-5 (override with --tol/--max-iter), + * exactly one parquet result file per run under --work-dir. + +Results are written in the graphframes-rs benchmark style: + + results////max_mem___parts_/ + benchmark.json + wall_time/rss/disk .dat/.gnuplot(+.png when gnuplot exists) + +Usage (from the built venv, see ./Makefile and ./README.md): + + python3 main.py --engine both --dataset cit-Patents --work-dir /mnt/nvm/sem \ + --max-memory 24G --use-smj +""" + +from __future__ import annotations + +import argparse +import json +import logging +import os +import shutil +import subprocess +import sys +import threading +import time +from datetime import datetime, timezone +from pathlib import Path + +os.environ.setdefault("SPARK_CONNECT_MODE_ENABLED", "1") + +HERE = Path(__file__).resolve().parent +REPO_ROOT = HERE.parents[3] +sys.path.insert(0, str(HERE)) +# POC shortcut: import gfrs_poc straight from its sources (no install step needed). +sys.path.insert(0, str(REPO_ROOT / "examples" / "extensions" / "graph-algorithms" / "gfrs-poc" / "src")) + +import datasets +import monitor +import plotting +import stats +from runtime import SailServer + +DEFAULT_SAIL_BINARY = REPO_ROOT / "target" / "release" / "sail" +logger = logging.getLogger("sem_benchmark") + +ENGINES = ("pregel", "nutmeg") + + +def dataset_info(name: str) -> dict: + """Catalog metadata for `name`, or a permissive stub for uncataloged graphs. + + LDBC Graphalytics parquet links are uniform + (`/-{v,e}.parquet`), so any dataset published there can be + benchmarked; only the size class / counters then stay unknown. + """ + if name in datasets.CATALOG: + return datasets.info(name) + logger.warning( + "%s is not in the local catalog; assuming %s/%s-{v,e}.parquet " + "(size class and vertex/edge counts unknown)", + name, datasets.BASE_URL, name, + ) + return {"name": name, "scale": "-", "nodes_str": "?", "edges_str": "?", + "size": "?", "vertices": None, "edges": None} + + +def parse_args() -> argparse.Namespace: + p = argparse.ArgumentParser( + description="Benchmark nutmeg pagerank vs gfrs-poc pregel pagerank on Sail.", + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + ) + p.add_argument("--engine", default="both", + help="comma-separated subset of: {}".format(", ".join(ENGINES + ("both",)))) + p.add_argument("--dataset", default="cit-Patents", + help="LDBC dataset name (see graphframes-rs benches datasets catalog)") + p.add_argument("--work-dir", required=True, + help="fast local (NVM) dir for spills, pregel checkpoints and results") + p.add_argument("--max-memory", default="24G", + help="Sail fair memory pool size (runtime.memory_pool.fair.max_size)") + p.add_argument("--use-smj", action="store_true", + help="prefer sort-merge join (optimizer.prefer_hash_join=false)") + p.add_argument("--sail-binary", default=str(DEFAULT_SAIL_BINARY), + help="path to the sail server binary") + p.add_argument("--tol", type=float, default=1e-5, help="pagerank convergence tolerance") + p.add_argument("--damping", type=float, default=0.85, help="pagerank damping factor") + p.add_argument("--max-iter", type=int, default=0, + help="iteration cap; 0 = run until convergence (pregel voting)") + p.add_argument("--nutmeg-kernel", default="pagerankDelta", + choices=["pagerankDelta", "pagerank"], + help="nutmeg kernel: pagerankDelta is the delta/active-frontier variant") + p.add_argument("--nutmeg-memory", default="8G", + help="SAIL_NUTMEG_MEMORY_BYTES (native per-session quota; must be " + "smaller than --max-memory, it is prepaid from the same pool)") + p.add_argument("--partitions", type=int, default=8, + help="checkpoint repartitioning / default parallelism") + p.add_argument("--threads", type=int, default=8, help="tokio/rayon threads, nutmeg concurrency") + p.add_argument("--runs", type=int, default=3, help="number of measured runs per engine") + p.add_argument("--warmup", type=int, default=1, help="number of discarded warmup runs") + p.add_argument("--results-dir", default=str(HERE / "results"), help="root of the results tree") + p.add_argument("--data-dir", default=str(HERE / "data"), help="dataset download location") + p.add_argument("--port", type=int, default=0, help="fixed server port (0 = pick a free one)") + p.add_argument("--target-samples", type=int, default=300, + help="target number of monitor samples per measured run") + p.add_argument("--align", choices=["dtw", "duration"], default="dtw", + help="series alignment for the rss/disk bands") + return p.parse_args() + + +# -------------------------------------------------------------------------- +# sampling: the engine is the Sail server process, so we watch its RSS and the +# workdir disk consumption from a background thread (du-style, like monitor.py). +# -------------------------------------------------------------------------- + +class ServerSampler: + """Samples (t, server RSS kb, workdir disk bytes) every `interval` seconds. + + Reuses the du-style tree walk and the /proc RSS readers from the copied + ``monitor.py``; the watched process is the Sail server, since that is where + both engines execute. + """ + + def __init__(self, pid: int, workdir: Path, interval: float): + self.pid = pid + self.workdir = str(workdir) + self.interval = interval + self.samples: list[tuple[float, float, float]] = [] + self._baseline = monitor._tree_size_kb(self.workdir) * 1024.0 + self._start = time.perf_counter() + self._stop = threading.Event() + self._thread = threading.Thread(target=self._loop, daemon=True) + + def _loop(self) -> None: + while not self._stop.is_set(): + t = time.perf_counter() - self._start + rss = monitor._vm_kb(monitor._read_proc_status(self.pid), "VmRSS") + disk = max(0.0, monitor._tree_size_kb(self.workdir) * 1024.0 - self._baseline) + self.samples.append((t, float(rss) if rss is not None else 0.0, disk)) + self._stop.wait(self.interval) + + def start(self) -> None: + self._thread.start() + + def stop(self) -> list[tuple[float, float, float]]: + self._stop.set() + self._thread.join(timeout=self.interval * 2 + 1) + return self.samples + + @property + def peak_rss_kb(self) -> float | None: + values = [rss for _t, rss, _d in self.samples if rss > 0] + return max(values) if values else None + + @property + def peak_disk_bytes(self) -> float: + return max((disk for _t, _rss, disk in self.samples), default=0.0) + + +# -------------------------------------------------------------------------- +# trial execution +# -------------------------------------------------------------------------- + +def create_session(endpoint: str): + from pyspark.sql.connect.session import SparkSession + + spark = SparkSession.builder.remote(endpoint).create() + try: + from pyspark.sql.connect.client.retries import DefaultPolicy + + # Fail fast instead of retrying a dead server for minutes. + spark.client.set_retry_policies( + [DefaultPolicy(max_retries=1, initial_backoff=100, max_backoff=100, jitter=0)] + ) + except Exception as exc: # noqa: BLE001 - retry policy plumbing is best-effort + logger.debug("could not set retry policies: %s", exc) + return spark + + +def run_engine(spark, engine: str, args: argparse.Namespace, run_workdir: Path) -> dict: + """Read the two parquet files, run pagerank, write one result parquet file. + + The timer starts at the input DataFrame handles and ends after the result + write returns (same boundary as the existing extension benchmarks). + """ + from pyspark.sql import functions as F + + dataset_dir = Path(args.data_dir) / args.dataset + started = time.perf_counter() + vertices = spark.read.parquet((dataset_dir / f"{args.dataset}-v.parquet").as_uri()) + edges = spark.read.parquet((dataset_dir / f"{args.dataset}-e.parquet").as_uri()) + + details: dict = {} + if engine == "pregel": + # gfrs_poc follows the graphframes-rs naming: id / src / dst. + edges = edges.select(F.col("source").alias("src"), F.col("target").alias("dst")) + from gfrs_poc import pagerank + + pregel_info: dict = {} + result = pagerank( + edges, + vertices, + tol=args.tol, + max_iter=args.max_iter, + reset_prob=1.0 - args.damping, + checkpoint_dir=str((run_workdir / "gfrs").resolve()), + num_partitions=args.partitions, + info=pregel_info, + ) + details["iterations"] = pregel_info.get("iterations") + details["active_counts"] = pregel_info.get("active_counts") + out = result.select(F.col("id"), F.col("pagerank").alias("score")) + else: + from sail_nutmeg import Nutmeg + + nm = Nutmeg(spark) + nodes = vertices.select(F.col("id").cast("string").alias("node_id")) + links = edges.select(F.col("source"), F.col("target")) + stage_started = time.perf_counter() + staged = nm.stage("benchmark", nodes, links) + details["stage_seconds"] = time.perf_counter() - stage_started + details["stage_receipt"] = staged.asDict() + cap = args.max_iter if args.max_iter > 0 else 1000 + options: dict = {"maxIterations": cap, "concurrency": args.threads} + if args.nutmeg_kernel == "pagerankDelta": + options.update( + damping=args.damping, + tolerance=args.tol, + precision="f64", + orientation="outgoing", + ) + frame = nm.run("benchmark", args.nutmeg_kernel, **options) + out = frame.select(F.col("nodeId").cast("long").alias("id"), F.col("score").alias("pagerank")) + + output_dir = run_workdir / "result" + out.coalesce(1).write.mode("error").parquet(output_dir.as_uri()) + details["wall_time_s"] = time.perf_counter() - started + details["result"] = str(output_dir) + + if engine == "nutmeg": + # Diagnostics only; this never re-executes the kernel. + try: + status = nm.status() + reads = [r for r in status.get("reads", []) if r.get("algorithm") == args.nutmeg_kernel] + if reads: + diag = reads[-1].get("diagnostics") or {} + details["native"] = { + key: diag[key] + for key in ("iterations", "converged", "residual", "frontier_edges", + "certificate_passes") + if key in diag + } + except Exception as exc: # noqa: BLE001 - diagnostics are best-effort + details["native_status_error"] = repr(exc) + try: + nm.drop("benchmark") + except Exception as exc: # noqa: BLE001 + details["drop_error"] = repr(exc) + return details + + +def run_trial(engine: str, args: argparse.Namespace, run_workdir: Path, interval: float) -> dict: + """One fresh Sail server, one monitored pagerank run.""" + run_workdir.mkdir(parents=True, exist_ok=True) + log_path = run_workdir / "client.log" + handler = logging.FileHandler(log_path) + handler.setFormatter(logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s")) + logging.getLogger().addHandler(handler) + server = sampler = spark = None + try: + server = SailServer( + Path(args.sail_binary), + run_workdir, + max_memory=args.max_memory, + use_smj=args.use_smj, + partitions=args.partitions, + threads=args.threads, + log_path=run_workdir / "server.log", + load_extensions=(engine == "nutmeg"), + nutmeg_memory=args.nutmeg_memory, + port=args.port, + ) + endpoint = server.start() + sampler = ServerSampler(server.process.pid, run_workdir, interval) + sampler.start() + spark = create_session(endpoint) + row = spark.sql("SELECT 1 AS ready").first() + if not row or row[0] != 1: + raise RuntimeError("server readiness query failed") + details = run_engine(spark, engine, args, run_workdir) + samples = sampler.stop() + return { + "wall_time_s": details["wall_time_s"], + "peak_rss_kb": sampler.peak_rss_kb, + "peak_disk_bytes": sampler.peak_disk_bytes, + "samples": samples, + "details": details, + } + finally: + if spark is not None: + try: + spark.stop() + except Exception as exc: # noqa: BLE001 + logger.debug("spark.stop failed: %s", exc) + if sampler is not None: + sampler.stop() + if server is not None: + server.stop() + logging.getLogger().removeHandler(handler) + handler.close() + + +# -------------------------------------------------------------------------- +# reporting (graphframes-rs style) +# -------------------------------------------------------------------------- + +def environment_info() -> dict: + import platform + from importlib.metadata import version + + env = { + "timestamp": datetime.now(timezone.utc).isoformat(), + "platform": platform.platform(), + "python": platform.python_version(), + "cpu_count": os.cpu_count(), + "gnuplot": shutil.which("gnuplot") is not None, + } + for package in ("pyspark", "sail-nutmeg", "gfrs-poc"): + try: + env[f"package:{package}"] = version(package) + except Exception: # noqa: BLE001 + env[f"package:{package}"] = "not installed (source import)" + try: + r = subprocess.run( + ["git", "rev-parse", "HEAD"], capture_output=True, text=True, cwd=REPO_ROOT, check=False + ) + if r.returncode == 0: + env["git_commit"] = r.stdout.strip() + except OSError: + pass + return env + + +def benchmark_engine(engine: str, args: argparse.Namespace) -> None: + ds_info = dataset_info(args.dataset) + join = "smj" if args.use_smj else "hash" + run_dir = ( + Path(args.results_dir) / engine / ds_info["scale"] / args.dataset + / f"max_mem_{args.max_memory}_{join}_parts_{args.partitions}" + ) + run_dir.mkdir(parents=True, exist_ok=True) + workroot = Path(args.work_dir) / f"{engine}_{args.dataset}" + workroot.mkdir(parents=True, exist_ok=True) + + def execute(run_i: str, interval: float) -> dict: + return run_trial(engine, args, workroot / f"run_{run_i}", interval) + + logger.info("== %s / %s ==", engine, args.dataset) + + # --- warmup: discarded; warms the page cache and calibrates the interval --- + if args.warmup > 0: + warm = execute("warmup", 0.5) + interval = max(0.02, min(1.0, warm["wall_time_s"] / args.target_samples)) + logger.info("warmup: %.2fs -> sampling interval %.3fs", warm["wall_time_s"], interval) + else: + warm = {"wall_time_s": None, "sampling_interval_s": None} + interval = 0.5 + + # --- measured runs --- + results = [] + for i in range(args.runs): + res = execute(i, interval) + results.append(res) + details = res["details"] + logger.info( + "run %d: %.3fs peak_rss=%s kB peak_disk=%.1f MB iterations=%s samples=%d", + i, res["wall_time_s"], res["peak_rss_kb"], res["peak_disk_bytes"] / 1e6, + details.get("iterations", details.get("native", {}).get("iterations")), + len(res["samples"]), + ) + + # --- statistics --- + times = [r["wall_time_s"] for r in results] + time_stats = stats.describe(times) + rss_peaks = [r["peak_rss_kb"] for r in results if r["peak_rss_kb"]] + rss_stats = stats.describe(rss_peaks) if rss_peaks else None + disk_peaks = [r["peak_disk_bytes"] for r in results] + disk_stats = stats.describe(disk_peaks) + medges = (ds_info["edges"] / time_stats["median"] / 1e6) if ds_info["edges"] else None + + # --- series alignment --- + series = None + samples_list = [r["samples"] for r in results] + if all(len(s) >= 2 for s in samples_list): + align = stats.align_series(samples_list, method=args.align) + series = { + "alignment": align["method"], + "ref_run": align["ref_run"], + "band_frac": align["band_frac"], + "grid_size": len(align["grid"]), + "rss_bands_gib": [[m / 1048576, lo / 1048576, hi / 1048576] for m, lo, hi in align["rss_bands"]], + "disk_bands_gib": [[m / 1073741824, lo / 1073741824, hi / 1073741824] for m, lo, hi in align["disk_bands"]], + } + + payload = { + "algorithm": "pagerank", + "engine": engine, + "dataset": args.dataset, + "size_class": ds_info["scale"], + "params": { + "max_memory": args.max_memory, + "use_smj": args.use_smj, + "join": join, + "partitions": args.partitions, + "threads": args.threads, + "tol": args.tol, + "damping": args.damping, + "max_iter": args.max_iter, + "nutmeg_kernel": args.nutmeg_kernel if engine == "nutmeg" else None, + "nutmeg_memory": args.nutmeg_memory if engine == "nutmeg" else None, + "sail_binary": str(Path(args.sail_binary).resolve()), + "work_dir": str(workroot), + "runs": args.runs, + "warmup": args.warmup, + "target_samples": args.target_samples, + "align": args.align, + "disk_mode": "du", + }, + "graph": { + "vertices": ds_info["vertices"], + "edges": ds_info["edges"], + "nodes_str": ds_info["nodes_str"], + "edges_str": ds_info["edges_str"], + }, + "warmup": {"wall_time_s": warm.get("wall_time_s"), "sampling_interval_s": warm.get("sampling_interval_s")}, + "runs": [ + { + "index": i, + "wall_time_s": r["wall_time_s"], + "peak_rss_kb": r["peak_rss_kb"], + "peak_disk_bytes": r["peak_disk_bytes"], + "n_samples": len(r["samples"]), + "details": r["details"], + } + for i, r in enumerate(results) + ], + "stats": { + "wall_time_s": time_stats, + "peak_rss_kb": rss_stats, + "peak_disk_bytes": disk_stats, + "medges_per_sec": medges, + }, + "series": series, + "raw_series": [ + { + "t": [s[0] for s in r["samples"]], + "rss_kb": [s[1] for s in r["samples"]], + "disk_bytes": [s[2] for s in r["samples"]], + } + for r in results + ], + "environment": environment_info(), + } + with open(run_dir / "benchmark.json", "w") as f: + json.dump(payload, f, indent=2) + + # --- plots --- + title = ( + f"{engine} pagerank / {args.dataset} ({ds_info['scale']}) — " + f"max_mem_{args.max_memory}_{join}_parts_{args.partitions}" + ) + plotting.write_wall_time(run_dir, title, times, time_stats) + if series is not None: + grid = [i / (series["grid_size"] - 1) for i in range(series["grid_size"])] + plotting.write_series(run_dir, "rss", title + " — RSS", "RSS (GiB)", + grid, [tuple(b) for b in series["rss_bands_gib"]]) + plotting.write_series(run_dir, "disk", title + " — disk usage", "disk consumed (GiB)", + grid, [tuple(b) for b in series["disk_bands_gib"]]) + rendered = sum(plotting.render(s) for s in run_dir.glob("*.gnuplot")) + logger.info("-> %s (gnuplot: %s)", run_dir, "rendered" if rendered else "not available") + + +def main() -> None: + logging.basicConfig(level=logging.INFO, format="%(asctime)s %(name)s %(levelname)s %(message)s") + args = parse_args() + engines: list[str] = [] + for part in args.engine.split(","): + part = part.strip() + if part == "both": + engines.extend(ENGINES) + elif part in ENGINES: + engines.append(part) + else: + raise SystemExit(f"unknown engine {part!r}; available: {', '.join(ENGINES + ('both',))}") + if args.runs < 1: + raise SystemExit("--runs must be >= 1") + if not Path(args.sail_binary).exists(): + raise SystemExit(f"sail binary not found: {args.sail_binary} (run `make build` first)") + if "nutmeg" in engines: + # The native quota is prepaid from the fair pool; it must leave room for + # the participating DataFusion operators (same rule as the extension + # benchmarks' validate_admission_settings). + from runtime import parse_memory + + if parse_memory(args.nutmeg_memory) >= parse_memory(args.max_memory): + raise SystemExit( + f"--nutmeg-memory ({args.nutmeg_memory}) must be smaller than " + f"--max-memory ({args.max_memory})" + ) + + info = dataset_info(args.dataset) + logger.info("dataset: %s (%s, %s nodes, %s edges, %s)", args.dataset, info["scale"], + info["nodes_str"], info["edges_str"], info["size"]) + datasets.ensure_dataset(args.dataset, Path(args.data_dir)) + + for engine in engines: + benchmark_engine(engine, args) + + print(f"\nDone. Results under {args.results_dir}") + + +if __name__ == "__main__": + main() diff --git a/examples/extensions/benchmarks/sem_benchmark/monitor.py b/examples/extensions/benchmarks/sem_benchmark/monitor.py new file mode 100644 index 00000000..062318f8 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/monitor.py @@ -0,0 +1,186 @@ +#!/usr/bin/env python3 +"""Subprocess monitoring for benchmark runs (pure stdlib). + +Launches the `graphframes` CLI as a child process and samples, from a +background thread: + + * wall time -- time.perf_counter() + * RSS (current + peak) -- /proc//status VmRSS / VmHWM (Linux only; + gracefully degrades to None elsewhere) + * disk consumption -- os.statvfs delta on the workdir filesystem + ("statvfs" mode, O(1) per poll) or `du -sk` + of the workdir ("du" mode, exact but slower) + +Sampling does not disturb the child: stdout/stderr are redirected to files +(never pipes, so a full pipe buffer cannot deadlock a chatty child). +""" + +from __future__ import annotations + +import os +import subprocess +import threading +import time +from dataclasses import dataclass, field + + +@dataclass +class RunResult: + wall_time_s: float + returncode: int + samples: list = field(default_factory=list) # (t, rss_kb, disk_bytes) + peak_rss_kb: float | None = None + peak_disk_bytes: float | None = None + stderr_tail: str = "" + + +def _read_proc_status(pid: int) -> str | None: + try: + with open(f"/proc/{pid}/status") as f: + return f.read() + except OSError: + return None + + +def _vm_kb(status: str | None, key: str) -> int | None: + if status is None: + return None + for line in status.splitlines(): + if line.startswith(key + ":"): + parts = line.split() + if len(parts) >= 2: + try: + return int(parts[1]) + except ValueError: + return None + return None + + +def _statvfs_used(path: str) -> int: + st = os.statvfs(path) + total = st.f_blocks * st.f_frsize + avail = st.f_bavail * st.f_frsize + return total - avail + + +def _tree_size_kb(path: str) -> int: + """Total size in KiB of every regular file under `path` (pure python). + + The workdir only ever holds a handful of checkpoint/output parquet files, + so walking it per poll is cheap (µs-ms) and gives an *exact* per-run disk + footprint. This replaces the shell `du` subprocess (slow, 0.5s poll floor) + and the filesystem-wide `statvfs` delta, which cannot see the workdir's own + writes on filesystems with lazy free-space accounting. + """ + total = 0 + try: + for root, _dirs, files in os.walk(path): + for name in files: + try: + total += os.lstat(os.path.join(root, name)).st_size + except OSError: + pass + except OSError: + return 0 + return total // 1024 + + +def _sample(pid: int, workdir: str, disk_mode: str, baseline_disk: float) -> tuple | None: + """Sample (rss_kb, disk_bytes). Disk is floored at 0 (never negative).""" + status = _read_proc_status(pid) + rss = _vm_kb(status, "VmRSS") + if disk_mode == "statvfs": + # Filesystem-wide used-space delta: other activity on the same + # filesystem (or lazy free-space accounting) can push it below the + # baseline -> floor at 0, disk consumption is never negative. + disk = max(0.0, _statvfs_used(workdir) - baseline_disk) + else: + # Exact: size of the workdir tree itself (checkpoints, spills, output). + disk = max(0.0, _tree_size_kb(workdir) * 1024.0 - baseline_disk) + if rss is None and disk is None: + return None + return (rss, disk) + + +def run_with_monitor( + cmd: list[str], + workdir: str, + interval: float, + disk_mode: str = "statvfs", + stdout_log: str | None = None, + stderr_log: str | None = None, +) -> RunResult: + """Run `cmd`, sampling RSS/disk every `interval` seconds. + + `workdir` must exist and is the root whose filesystem (or tree, in + "du" mode) is watched for disk consumption. + """ + out_f = open(stdout_log, "w") if stdout_log else subprocess.DEVNULL + err_f = open(stderr_log, "w") if stderr_log else subprocess.DEVNULL + start = time.perf_counter() + proc = subprocess.Popen(cmd, stdout=out_f, stderr=err_f) + + baseline_disk = ( + _statvfs_used(workdir) + if disk_mode == "statvfs" + else _tree_size_kb(workdir) * 1024.0 + ) + + samples: list[tuple[float, float, float]] = [] + stop = threading.Event() + lock = threading.Lock() + + def loop(): + while not stop.is_set(): + t = time.perf_counter() - start + s = _sample(proc.pid, workdir, disk_mode, baseline_disk) + if s is not None: + rss, disk = s + with lock: + samples.append((t, rss if rss is not None else 0.0, + disk if disk is not None else 0.0)) + stop.wait(interval) + + th = threading.Thread(target=loop, daemon=True) + th.start() + returncode = proc.wait() + t_end = time.perf_counter() - start + + # one final sample attempt (the process is gone, so this only captures disk) + s = _sample(proc.pid, workdir, disk_mode, baseline_disk) + if s is not None: + rss, disk = s + with lock: + samples.append((t_end, rss if rss is not None else 0.0, + disk if disk is not None else 0.0)) + stop.set() + th.join(timeout=interval * 2 + 1) + + # peak RSS: VmHWM is a high-water mark, so the max seen while alive is the peak + peak_rss = None + for t, rss, _ in samples: + if rss > 0 and (peak_rss is None or rss > peak_rss): + peak_rss = rss + peak_disk = max((d for _, _, d in samples), default=0.0) + + tail = "" + if stderr_log and os.path.exists(stderr_log): + with open(stderr_log, "rb") as f: + f.seek(0, os.SEEK_END) + size = f.tell() + f.seek(max(0, size - 4096)) + tail = f.read().decode("utf-8", errors="replace") + + if out_f is not subprocess.DEVNULL: + out_f.close() + if err_f is not subprocess.DEVNULL: + err_f.close() + + return RunResult( + wall_time_s=t_end, + returncode=returncode, + samples=samples, + peak_rss_kb=peak_rss, + peak_disk_bytes=peak_disk, + stderr_tail=tail, + ) diff --git a/examples/extensions/benchmarks/sem_benchmark/plotting.py b/examples/extensions/benchmarks/sem_benchmark/plotting.py new file mode 100644 index 00000000..47d0f173 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/plotting.py @@ -0,0 +1,170 @@ +#!/usr/bin/env python3 +"""gnuplot script generation and rendering (pure stdlib). + +Every benchmark run produces three .dat + .gnuplot pairs (and, when gnuplot +is on PATH, the corresponding .png): + + wall_time -- kernel density estimate (PDF) of the measured run times: + probability density on Y vs wall time on X, vertical + median/p90/p95 lines, individual runs as a baseline rug + rss -- mean RSS across runs vs fraction-of-run with 95% CI band + disk -- mean disk consumption across runs vs fraction-of-run with CI + +The scripts are plain text templates with numbers injected as constants, so +they are fully reproducible without re-running anything. +""" + +from __future__ import annotations + +import shutil +import subprocess +from pathlib import Path + + +def _write_dat(path: Path, header: str, rows: list[list], fmt: str) -> None: + with open(path, "w") as f: + f.write("# " + header + "\n") + for row in rows: + f.write(" ".join(fmt % v for v in row) + "\n") + + +def _quote(s: str) -> str: + return s.replace("\\", "\\\\").replace('"', '\\"') + + +def _escape_gnuplot_string(s: str) -> str: + """Escape a string for embedding in a double-quoted gnuplot string. + + Real newlines become the two-character escape `\n` (gnuplot renders it as + a line break inside strings); quotes and backslashes are escaped. + """ + return s.replace("\\", "\\\\").replace('"', '\\"').replace("\n", "\\n") + + +def wall_time_script( + png_path: Path, dat_path: Path, title: str, st: dict, n_runs: int, + ymax: float, xlo: float, xhi: float, rug_times: list[float], +) -> str: + """KDE (PDF) plot of the run times. + + X = wall time, Y = probability density of the Gaussian-kernel estimate + (computed in pure python, `stats.kde`); the median / p90 / p95 are vertical + lines and the individual runs appear as a rug along the baseline so small-n + samples stay visible instead of being hidden inside the smooth curve. + + The x range is the full KDE grid extent (data + 4*bandwidth on each side): + clipping to a tight data range would cut through the curve where an outlier + run still carries non-negligible density. + """ + med, mean = st["median"], st["mean"] + std, mn, mx = st["std"], st["min"], st["max"] + p90, p95 = st["p90"], st["p95"] + ytop = ymax * 1.3 + rug_h = ymax * 0.04 + title_text = ( + f"{title}\n" + f"median={med:.3f}s mean={mean:.3f}s std={std:.3f}s min={mn:.3f}s " + f"max={mx:.3f}s p90={p90:.3f}s p95={p95:.3f}s runs={n_runs}" + ) + lines = [ + "set terminal pngcairo size 1400,700 enhanced font 'Sans,11'", + f"set output '{_quote(str(png_path))}'", + f"set title \"{_escape_gnuplot_string(title_text)}\"", + "set xlabel 'wall time (s)'", + "set ylabel 'probability density (1/s)'", + # room at the top for the 2-line title + the percentile labels + "set tmargin 5", + f"set yrange [0:{ytop:.6g}]", + f"set xrange [{xlo:.6f}:{xhi:.6f}]", + "set grid y", + "set key top right", + # vertical percentile lines; labels sit in the top margin (below the title) + f"set arrow from {med:.6f},0 to {med:.6f},{ytop:.6g} nohead lc rgb 'red' lw 2", + f"set label 'median {med:.3f}s' at {med:.6f},{ytop:.6g} offset char 0,1 tc rgb 'red'", + f"set arrow from {p90:.6f},0 to {p90:.6f},{ytop:.6g} nohead lc rgb 'orange' lw 1 dt 2", + f"set label 'p90 {p90:.3f}s' at {p90:.6f},{ytop:.6g} offset char 0,1 tc rgb 'orange'", + f"set arrow from {p95:.6f},0 to {p95:.6f},{ytop:.6g} nohead lc rgb 'orange' lw 1 dt 3", + f"set label 'p95 {p95:.3f}s' at {p95:.6f},{ytop:.6g} offset char 0,1 tc rgb 'orange'", + ] + # rug marks: one tick per measured run along the baseline + for t in rug_times: + lines.append( + f"set arrow from {t:.6f},0 to {t:.6f},{rug_h:.6g} nohead lc rgb '#666666' lw 1" + ) + lines += [ + # KDE curve: filled area + line + f"plot '{_quote(str(dat_path))}' using 1:2 with filledcurves y=0 " + "lc rgb '#4682b4' fs transparent solid 0.25 title 'kernel density', \\", + f" '{_quote(str(dat_path))}' using 1:2 with lines lw 2 " + "lc rgb '#4682b4' title 'KDE (runs)'", + ] + return "\n".join(lines) + "\n" + + +def write_wall_time( + results_dir: Path, title: str, times: list[float], st: dict +) -> None: + """Gaussian-kernel density estimate of the run times + percentile lines. + + .dat layout: `time_s density` (grid of ~256 points; the density integrates + to 1 over the grid). The median/p90/p95 are drawn as vertical lines and the + individual runs as a rug along the baseline. + """ + import stats + + xs, dens = stats.kde(times) + rows = [[x, d] for x, d in zip(xs, dens)] + dat = results_dir / "wall_time.dat" + gpl = results_dir / "wall_time.gnuplot" + png = results_dir / "wall_time.png" + _write_dat(dat, "time_s density", rows, "%.9g") + gpl.write_text(wall_time_script( + png, dat, title, st, len(times), max(dens), xs[0], xs[-1], times, + )) + + +def series_script( + png_path: Path, dat_path: Path, title: str, ylabel: str +) -> str: + return ( + "set terminal pngcairo size 1400,700 enhanced font 'Sans,11'\n" + f"set output '{_quote(str(png_path))}'\n" + f"set title \"{_quote(title)}\"\n" + "set xlabel 'fraction of run (%)'\n" + f"set ylabel '{ylabel}'\n" + "set grid\n" + "set key top left\n" + # RSS/disk are non-negative: never let the axis go below 0, + # even if a CI band was floored at 0 in the .dat. + "set yrange [0:*]\n" + f"plot '{_quote(str(dat_path))}' using 1:3:4 with filledcurves " + "lc rgb '#cccccc' title '95% CI', \\\n" + f" '' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'mean'\n" + ) + + +def write_series( + results_dir: Path, name: str, title: str, ylabel: str, + grid: list[float], bands: list[tuple[float, float, float]], +) -> None: + """Mean + CI band vs fraction-of-run (%); used for RSS and disk. + + RSS/disk are non-negative: the mean and the CI band are floored at 0 so a + small-mean + wide-CI grid point (e.g. the ramp start with few runs) never + renders below zero. + """ + rows = [[f * 100.0, max(0.0, m), max(0.0, lo), max(0.0, hi)] + for f, (m, lo, hi) in zip(grid, bands)] + dat = results_dir / f"{name}.dat" + gpl = results_dir / f"{name}.gnuplot" + png = results_dir / f"{name}.png" + _write_dat(dat, "fraction_pct mean ci_low ci_high", rows, "%.6f") + gpl.write_text(series_script(png, dat, title, ylabel)) + + +def render(script_path: Path) -> bool: + """Run gnuplot on the script; returns False when gnuplot is unavailable.""" + if shutil.which("gnuplot") is None: + return False + r = subprocess.run(["gnuplot", str(script_path)], capture_output=True, text=True) + return r.returncode == 0 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/benchmark.json b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/benchmark.json new file mode 100644 index 00000000..8ca16991 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/benchmark.json @@ -0,0 +1,120 @@ +{ + "algorithm": "pagerank", + "engine": "nutmeg", + "dataset": "example-directed", + "size_class": "-", + "params": { + "max_memory": "24G", + "use_smj": false, + "join": "hash", + "partitions": 8, + "threads": 8, + "tol": 1e-05, + "damping": 0.85, + "max_iter": 0, + "nutmeg_kernel": "pagerankDelta", + "nutmeg_memory": "8G", + "sail_binary": "/home/ubuntu/sail/target/release/sail", + "work_dir": "/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/work/nutmeg_example-directed", + "runs": 1, + "warmup": 0, + "target_samples": 300, + "align": "dtw", + "disk_mode": "du" + }, + "graph": { + "vertices": 10, + "edges": 17, + "nodes_str": "10", + "edges_str": "17" + }, + "warmup": { + "wall_time_s": null, + "sampling_interval_s": null + }, + "runs": [ + { + "index": 0, + "wall_time_s": 0.017144581000138714, + "peak_rss_kb": 59572.0, + "peak_disk_bytes": 0.0, + "n_samples": 1, + "details": { + "stage_seconds": 0.008541557000171451, + "stage_receipt": { + "graph": "benchmark", + "nodeCount": 10, + "edgeCount": 17, + "revision": 1 + }, + "wall_time_s": 0.017144581000138714, + "result": "/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/work/nutmeg_example-directed/run_0/result", + "native": { + "iterations": 15, + "converged": true, + "residual": 3.6059769127350094e-06, + "frontier_edges": 247, + "certificate_passes": 2 + } + } + } + ], + "stats": { + "wall_time_s": { + "n": 1, + "median": 0.017144581000138714, + "mean": 0.017144581000138714, + "std": 0.0, + "min": 0.017144581000138714, + "max": 0.017144581000138714, + "p90": 0.017144581000138714, + "p95": 0.017144581000138714 + }, + "peak_rss_kb": { + "n": 1, + "median": 59572.0, + "mean": 59572.0, + "std": 0.0, + "min": 59572.0, + "max": 59572.0, + "p90": 59572.0, + "p95": 59572.0 + }, + "peak_disk_bytes": { + "n": 1, + "median": 0.0, + "mean": 0.0, + "std": 0.0, + "min": 0.0, + "max": 0.0, + "p90": 0.0, + "p95": 0.0 + }, + "medges_per_sec": 0.0009915669563381254 + }, + "series": null, + "raw_series": [ + { + "t": [ + 0.0001332320007350063 + ], + "rss_kb": [ + 59572.0 + ], + "disk_bytes": [ + 0.0 + ] + } + ], + "environment": { + "timestamp": "2026-09-28T13:43:35.100687+00:00", + "platform": "Linux-7.0.0-1006-aws-x86_64-with-glibc2.43", + "python": "3.12.14", + "cpu_count": 16, + "gnuplot": false, + "package:pyspark": "4.0.1", + "package:sail-nutmeg": "0.1.0", + "package:gfrs-poc": "0.1.0", + "git_commit": "2fbc6c50ac1815371e4813e3f49e687b7639ae94" + } +} \ No newline at end of file diff --git a/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/wall_time.dat b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/wall_time.dat new file mode 100644 index 00000000..79881ce6 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/wall_time.dat @@ -0,0 +1,257 @@ +# time_s density +-3.98285542 0.000133838715 +-3.95148287 0.000151658842 +-3.92011032 0.000171682592 +-3.88873777 0.000194158916 +-3.85736522 0.000219361784 +-3.82599267 0.000247592309 +-3.79462012 0.000279181015 +-3.76324758 0.000314490235 +-3.73187503 0.000353916655 +-3.70050248 0.000397893997 +-3.66912993 0.000446895853 +-3.63775738 0.000501438659 +-3.60638483 0.000562084817 +-3.57501228 0.000629445954 +-3.54363973 0.000704186329 +-3.51226718 0.00078702637 +-3.48089463 0.000878746341 +-3.44952209 0.000980190135 +-3.41814954 0.00109226917 +-3.38677699 0.0012159664 +-3.35540444 0.00135234042 +-3.32403189 0.00150252958 +-3.29265934 0.00166775628 +-3.26128679 0.00184933117 +-3.22991424 0.00204865745 +-3.19854169 0.0022672351 +-3.16716914 0.00250666511 +-3.1357966 0.00276865363 +-3.10442405 0.003055016 +-3.0730515 0.00336768066 +-3.04167895 0.00370869286 +-3.0103064 0.00408021816 +-2.97893385 0.00448454569 +-2.9475613 0.00492409102 +-2.91618875 0.00540139879 +-2.8848162 0.00591914481 +-2.85344365 0.00648013776 +-2.82207111 0.00708732035 +-2.79069856 0.0077437699 +-2.75932601 0.00845269829 +-2.72795346 0.00921745119 +-2.69658091 0.0100415066 +-2.66520836 0.0109284724 +-2.63383581 0.0118820833 +-2.60246326 0.0129061966 +-2.57109071 0.0140047871 +-2.53971816 0.015181941 +-2.50834562 0.0164418483 +-2.47697307 0.0177887949 +-2.44560052 0.0192271524 +-2.41422797 0.0207613678 +-2.38285542 0.0223959509 +-2.35148287 0.0241354612 +-2.32011032 0.0259844931 +-2.28873777 0.0279476597 +-2.25736522 0.0300295757 +-2.22599267 0.0322348384 +-2.19462012 0.0345680077 +-2.16324758 0.0370335848 +-2.13187503 0.0396359899 +-2.10050248 0.0423795377 +-2.06912993 0.0452684134 +-2.03775738 0.0483066457 +-2.00638483 0.0514980806 +-1.97501228 0.0548463531 +-1.94363973 0.0583548582 +-1.91226718 0.0620267224 +-1.88089463 0.065864773 +-1.84952209 0.069871508 +-1.81814954 0.0740490661 +-1.78677699 0.0783991955 +-1.75540444 0.0829232237 +-1.72403189 0.087622028 +-1.69265934 0.0924960049 +-1.66128679 0.0975450421 +-1.62991424 0.102768491 +-1.59854169 0.108165137 +-1.56716914 0.113733181 +-1.5357966 0.119470207 +-1.50442405 0.125373168 +-1.4730515 0.131438361 +-1.44167895 0.137661412 +-1.4103064 0.144037262 +-1.37893385 0.150560152 +-1.3475613 0.157223617 +-1.31618875 0.164020479 +-1.2848162 0.170942841 +-1.25344365 0.177982093 +-1.22207111 0.185128915 +-1.19069856 0.192373281 +-1.15932601 0.199704476 +-1.12795346 0.207111111 +-1.09658091 0.214581141 +-1.06520836 0.222101888 +-1.03383581 0.229660076 +-1.00246326 0.237241854 +-0.971090713 0.244832837 +-0.939718164 0.252418146 +-0.908345615 0.259982449 +-0.876973066 0.267510012 +-0.845600517 0.274984746 +-0.814227968 0.282390262 +-0.782855419 0.289709929 +-0.75148287 0.296926935 +-0.720110321 0.304024346 +-0.688737772 0.310985171 +-0.657365223 0.317792432 +-0.625992674 0.324429227 +-0.594620125 0.330878802 +-0.563247576 0.337124619 +-0.531875027 0.343150427 +-0.500502478 0.348940332 +-0.469129929 0.354478866 +-0.43775738 0.359751056 +-0.406384831 0.36474249 +-0.375012282 0.369439383 +-0.343639733 0.373828643 +-0.312267184 0.377897926 +-0.280894635 0.381635701 +-0.249522086 0.385031297 +-0.218149537 0.38807496 +-0.186776988 0.390757895 +-0.155404439 0.393072312 +-0.12403189 0.395011461 +-0.0926593406 0.396569666 +-0.0612867915 0.397742352 +-0.0299142425 0.398526068 +0.00145830649 0.398918505 +0.0328308555 0.398918505 +0.0642034045 0.398526068 +0.0955759535 0.397742352 +0.126948503 0.396569666 +0.158321052 0.395011461 +0.189693601 0.393072312 +0.22106615 0.390757895 +0.252438699 0.38807496 +0.283811248 0.385031297 +0.315183797 0.381635701 +0.346556346 0.377897926 +0.377928895 0.373828643 +0.409301444 0.369439383 +0.440673993 0.36474249 +0.472046542 0.359751056 +0.503419091 0.354478866 +0.53479164 0.348940332 +0.566164189 0.343150427 +0.597536738 0.337124619 +0.628909287 0.330878802 +0.660281836 0.324429227 +0.691654385 0.317792432 +0.723026934 0.310985171 +0.754399483 0.304024346 +0.785772032 0.296926935 +0.817144581 0.289709929 +0.84851713 0.282390262 +0.879889679 0.274984746 +0.911262228 0.267510012 +0.942634777 0.259982449 +0.974007326 0.252418146 +1.00537988 0.244832837 +1.03675242 0.237241854 +1.06812497 0.229660076 +1.09949752 0.222101888 +1.13087007 0.214581141 +1.16224262 0.207111111 +1.19361517 0.199704476 +1.22498772 0.192373281 +1.25636027 0.185128915 +1.28773282 0.177982093 +1.31910537 0.170942841 +1.35047791 0.164020479 +1.38185046 0.157223617 +1.41322301 0.150560152 +1.44459556 0.144037262 +1.47596811 0.137661412 +1.50734066 0.131438361 +1.53871321 0.125373168 +1.57008576 0.119470207 +1.60145831 0.113733181 +1.63283086 0.108165137 +1.6642034 0.102768491 +1.69557595 0.0975450421 +1.7269485 0.0924960049 +1.75832105 0.087622028 +1.7896936 0.0829232237 +1.82106615 0.0783991955 +1.8524387 0.0740490661 +1.88381125 0.069871508 +1.9151838 0.065864773 +1.94655635 0.0620267224 +1.97792889 0.0583548582 +2.00930144 0.0548463531 +2.04067399 0.0514980806 +2.07204654 0.0483066457 +2.10341909 0.0452684134 +2.13479164 0.0423795377 +2.16616419 0.0396359899 +2.19753674 0.0370335848 +2.22890929 0.0345680077 +2.26028184 0.0322348384 +2.29165438 0.0300295757 +2.32302693 0.0279476597 +2.35439948 0.0259844931 +2.38577203 0.0241354612 +2.41714458 0.0223959509 +2.44851713 0.0207613678 +2.47988968 0.0192271524 +2.51126223 0.0177887949 +2.54263478 0.0164418483 +2.57400733 0.015181941 +2.60537988 0.0140047871 +2.63675242 0.0129061966 +2.66812497 0.0118820833 +2.69949752 0.0109284724 +2.73087007 0.0100415066 +2.76224262 0.00921745119 +2.79361517 0.00845269829 +2.82498772 0.0077437699 +2.85636027 0.00708732035 +2.88773282 0.00648013776 +2.91910537 0.00591914481 +2.95047791 0.00540139879 +2.98185046 0.00492409102 +3.01322301 0.00448454569 +3.04459556 0.00408021816 +3.07596811 0.00370869286 +3.10734066 0.00336768066 +3.13871321 0.003055016 +3.17008576 0.00276865363 +3.20145831 0.00250666511 +3.23283086 0.0022672351 +3.2642034 0.00204865745 +3.29557595 0.00184933117 +3.3269485 0.00166775628 +3.35832105 0.00150252958 +3.3896936 0.00135234042 +3.42106615 0.0012159664 +3.4524387 0.00109226917 +3.48381125 0.000980190135 +3.5151838 0.000878746341 +3.54655635 0.00078702637 +3.57792889 0.000704186329 +3.60930144 0.000629445954 +3.64067399 0.000562084817 +3.67204654 0.000501438659 +3.70341909 0.000446895853 +3.73479164 0.000397893997 +3.76616419 0.000353916655 +3.79753674 0.000314490235 +3.82890929 0.000279181015 +3.86028184 0.000247592309 +3.89165438 0.000219361784 +3.92302693 0.000194158916 +3.95439948 0.000171682592 +3.98577203 0.000151658842 +4.01714458 0.000133838715 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/wall_time.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/wall_time.gnuplot new file mode 100644 index 00000000..6b914c92 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/wall_time.gnuplot @@ -0,0 +1,19 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/wall_time.png' +set title "nutmeg pagerank / example-directed (-) — max_mem_24G_hash_parts_8\nmedian=0.017s mean=0.017s std=0.000s min=0.017s max=0.017s p90=0.017s p95=0.017s runs=1" +set xlabel 'wall time (s)' +set ylabel 'probability density (1/s)' +set tmargin 5 +set yrange [0:0.518594] +set xrange [-3.982855:4.017145] +set grid y +set key top right +set arrow from 0.017145,0 to 0.017145,0.518594 nohead lc rgb 'red' lw 2 +set label 'median 0.017s' at 0.017145,0.518594 offset char 0,1 tc rgb 'red' +set arrow from 0.017145,0 to 0.017145,0.518594 nohead lc rgb 'orange' lw 1 dt 2 +set label 'p90 0.017s' at 0.017145,0.518594 offset char 0,1 tc rgb 'orange' +set arrow from 0.017145,0 to 0.017145,0.518594 nohead lc rgb 'orange' lw 1 dt 3 +set label 'p95 0.017s' at 0.017145,0.518594 offset char 0,1 tc rgb 'orange' +set arrow from 0.017145,0 to 0.017145,0.0159567 nohead lc rgb '#666666' lw 1 +plot '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/wall_time.dat' using 1:2 with filledcurves y=0 lc rgb '#4682b4' fs transparent solid 0.25 title 'kernel density', \ + '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/wall_time.dat' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'KDE (runs)' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/benchmark.json b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/benchmark.json new file mode 100644 index 00000000..a2b023cd --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/benchmark.json @@ -0,0 +1,1201 @@ +{ + "algorithm": "pagerank", + "engine": "nutmeg", + "dataset": "example-directed", + "size_class": "-", + "params": { + "max_memory": "4G", + "use_smj": false, + "join": "hash", + "partitions": 4, + "threads": 4, + "tol": 1e-05, + "damping": 0.85, + "max_iter": 0, + "nutmeg_kernel": "pagerankDelta", + "nutmeg_memory": "2G", + "sail_binary": "/target/release/sail", + "work_dir": "/tmp/sem_harness_work/nutmeg_example-directed", + "runs": 1, + "warmup": 1, + "target_samples": 300, + "align": "dtw", + "disk_mode": "du" + }, + "graph": { + "vertices": 10, + "edges": 17, + "nodes_str": "10", + "edges_str": "17" + }, + "warmup": { + "wall_time_s": 0.040518749970942736, + "sampling_interval_s": null + }, + "runs": [ + { + "index": 0, + "wall_time_s": 0.027108148904517293, + "peak_rss_kb": 174520.0, + "peak_disk_bytes": 1024.0, + "n_samples": 25, + "details": { + "stage_seconds": 0.015562942018732429, + "stage_receipt": { + "graph": "benchmark", + "nodeCount": 10, + "edgeCount": 17, + "revision": 1 + }, + "wall_time_s": 0.027108148904517293, + "result": "/tmp/sem_harness_work/nutmeg_example-directed/run_0/result", + "native": { + "iterations": 15, + "converged": true, + "residual": 3.6059769127350094e-06, + "frontier_edges": 247, + "certificate_passes": 2 + } + } + } + ], + "stats": { + "wall_time_s": { + "n": 1, + "median": 0.027108148904517293, + "mean": 0.027108148904517293, + "std": 0.0, + "min": 0.027108148904517293, + "max": 0.027108148904517293, + "p90": 0.027108148904517293, + "p95": 0.027108148904517293 + }, + "peak_rss_kb": { + "n": 1, + "median": 174520.0, + "mean": 174520.0, + "std": 0.0, + "min": 174520.0, + "max": 174520.0, + "p90": 174520.0, + "p95": 174520.0 + }, + "peak_disk_bytes": { + "n": 1, + "median": 1024.0, + "mean": 1024.0, + "std": 0.0, + "min": 1024.0, + "max": 1024.0, + "p90": 1024.0, + "p95": 1024.0 + }, + "medges_per_sec": 0.0006271177002855818 + }, + "series": { + "alignment": "dtw", + "ref_run": 0, + "band_frac": 0.25, + "grid_size": 100, + "rss_bands_gib": [ + [ + 0.051227569580078125, + 0.051227569580078125, + 0.051227569580078125 + ], + [ + 0.053176705857699846, + 0.053176705857699846, + 0.053176705857699846 + ], + [ + 0.05524366288139221, + 0.05524366288139221, + 0.05524366288139221 + ], + [ + 0.05731061990508458, + 0.05731061990508458, + 0.05731061990508458 + ], + [ + 0.05937757692877694, + 0.05937757692877694, + 0.05937757692877694 + ], + [ + 0.06091350940201629, + 0.06091350940201629, + 0.06091350940201629 + ], + [ + 0.061427817504701304, + 0.061427817504701304, + 0.061427817504701304 + ], + [ + 0.06194212560738632, + 0.06194212560738632, + 0.06194212560738632 + ], + [ + 0.062456433710071334, + 0.062456433710071334, + 0.062456433710071334 + ], + [ + 0.06295497219658944, + 0.06295497219658944, + 0.06295497219658944 + ], + [ + 0.06341087429787601, + 0.06341087429787601, + 0.06341087429787601 + ], + [ + 0.06386677639916258, + 0.06386677639916258, + 0.06386677639916258 + ], + [ + 0.06432267850044915, + 0.06432267850044915, + 0.06432267850044915 + ], + [ + 0.06474505421784345, + 0.06474505421784345, + 0.06474505421784345 + ], + [ + 0.06501298665500893, + 0.06501298665500893, + 0.06501298665500893 + ], + [ + 0.06528091909217441, + 0.06528091909217441, + 0.06528091909217441 + ], + [ + 0.06554885152933991, + 0.06554885152933991, + 0.06554885152933991 + ], + [ + 0.06588795456739599, + 0.06588795456739599, + 0.06588795456739599 + ], + [ + 0.06692790068338055, + 0.06692790068338055, + 0.06692790068338055 + ], + [ + 0.0679678467993651, + 0.0679678467993651, + 0.0679678467993651 + ], + [ + 0.06900779291534966, + 0.06900779291534966, + 0.06900779291534966 + ], + [ + 0.07004773903133421, + 0.07004773903133421, + 0.07004773903133421 + ], + [ + 0.07135345692844461, + 0.07135345692844461, + 0.07135345692844461 + ], + [ + 0.07266055214160022, + 0.07266055214160022, + 0.07266055214160022 + ], + [ + 0.07396764735475583, + 0.07396764735475583, + 0.07396764735475583 + ], + [ + 0.07527474256791143, + 0.07527474256791143, + 0.07527474256791143 + ], + [ + 0.07607169262821625, + 0.07607169262821625, + 0.07607169262821625 + ], + [ + 0.07676214328064601, + 0.07676214328064601, + 0.07676214328064601 + ], + [ + 0.07745259393307577, + 0.07745259393307577, + 0.07745259393307577 + ], + [ + 0.07814304458550551, + 0.07814304458550551, + 0.07814304458550551 + ], + [ + 0.07839740074228294, + 0.07839740074228294, + 0.07839740074228294 + ], + [ + 0.07846988078295783, + 0.07846988078295783, + 0.07846988078295783 + ], + [ + 0.07854236082363274, + 0.07854236082363274, + 0.07854236082363274 + ], + [ + 0.07861484086430763, + 0.07861484086430763, + 0.07861484086430763 + ], + [ + 0.07872488500596395, + 0.07872488500596395, + 0.07872488500596395 + ], + [ + 0.07888224093774923, + 0.07888224093774923, + 0.07888224093774923 + ], + [ + 0.0790395968695345, + 0.0790395968695345, + 0.0790395968695345 + ], + [ + 0.07919695280131978, + 0.07919695280131978, + 0.07919695280131978 + ], + [ + 0.07934631290422134, + 0.07934631290422134, + 0.07934631290422134 + ], + [ + 0.07948204919610136, + 0.07948204919610136, + 0.07948204919610136 + ], + [ + 0.07961778548798137, + 0.07961778548798137, + 0.07961778548798137 + ], + [ + 0.07975352177986139, + 0.07975352177986139, + 0.07975352177986139 + ], + [ + 0.07988477128836657, + 0.07988477128836657, + 0.07988477128836657 + ], + [ + 0.08000528776910384, + 0.08000528776910384, + 0.08000528776910384 + ], + [ + 0.08012580424984111, + 0.08012580424984111, + 0.08012580424984111 + ], + [ + 0.08024632073057839, + 0.08024632073057839, + 0.08024632073057839 + ], + [ + 0.08046204889305562, + 0.08046204889305562, + 0.08046204889305562 + ], + [ + 0.0810325823089367, + 0.0810325823089367, + 0.0810325823089367 + ], + [ + 0.08160311572481778, + 0.08160311572481778, + 0.08160311572481778 + ], + [ + 0.08217364914069886, + 0.08217364914069886, + 0.08217364914069886 + ], + [ + 0.082743396118513, + 0.082743396118513, + 0.082743396118513 + ], + [ + 0.08330829930007348, + 0.08330829930007348, + 0.08330829930007348 + ], + [ + 0.08387320248163396, + 0.08387320248163396, + 0.08387320248163396 + ], + [ + 0.08443810566319444, + 0.08443810566319444, + 0.08443810566319444 + ], + [ + 0.08500554600306531, + 0.08500554600306531, + 0.08500554600306531 + ], + [ + 0.0856079132306341, + 0.0856079132306341, + 0.0856079132306341 + ], + [ + 0.08621028045820289, + 0.08621028045820289, + 0.08621028045820289 + ], + [ + 0.08681264768577168, + 0.08681264768577168, + 0.08681264768577168 + ], + [ + 0.08741501491334047, + 0.08741501491334047, + 0.08741501491334047 + ], + [ + 0.08791911510714981, + 0.08791911510714981, + 0.08791911510714981 + ], + [ + 0.08842279134805478, + 0.08842279134805478, + 0.08842279134805478 + ], + [ + 0.08892646758895974, + 0.08892646758895974, + 0.08892646758895974 + ], + [ + 0.08943014382986471, + 0.08943014382986471, + 0.08943014382986471 + ], + [ + 0.09019080861184715, + 0.09019080861184715, + 0.09019080861184715 + ], + [ + 0.09098546569883816, + 0.09098546569883816, + 0.09098546569883816 + ], + [ + 0.09178012278582917, + 0.09178012278582917, + 0.09178012278582917 + ], + [ + 0.09257477987282016, + 0.09257477987282016, + 0.09257477987282016 + ], + [ + 0.09273147583007812, + 0.09273147583007812, + 0.09273147583007812 + ], + [ + 0.09273147583007812, + 0.09273147583007812, + 0.09273147583007812 + ], + [ + 0.09273147583007812, + 0.09273147583007812, + 0.09273147583007812 + ], + [ + 0.09273147583007812, + 0.09273147583007812, + 0.09273147583007812 + ], + [ + 0.09273147583007812, + 0.09273147583007812, + 0.09273147583007812 + ], + [ + 0.09273147583007812, + 0.09273147583007812, + 0.09273147583007812 + ], + [ + 0.09273147583007812, + 0.09273147583007812, + 0.09273147583007812 + ], + [ + 0.09273147583007812, + 0.09273147583007812, + 0.09273147583007812 + ], + [ + 0.09273147583007812, + 0.09273147583007812, + 0.09273147583007812 + ], + [ + 0.09273147583007812, + 0.09273147583007812, + 0.09273147583007812 + ], + [ + 0.09273147583007812, + 0.09273147583007812, + 0.09273147583007812 + ], + [ + 0.09273147583007812, + 0.09273147583007812, + 0.09273147583007812 + ], + [ + 0.09383546117482576, + 0.09383546117482576, + 0.09383546117482576 + ], + [ + 0.09613421623046002, + 0.09613421623046002, + 0.09613421623046002 + ], + [ + 0.09843297128609432, + 0.09843297128609432, + 0.09843297128609432 + ], + [ + 0.10073172634172858, + 0.10073172634172858, + 0.10073172634172858 + ], + [ + 0.10233237015360144, + 0.10233237015360144, + 0.10233237015360144 + ], + [ + 0.10288425690956571, + 0.10288425690956571, + 0.10288425690956571 + ], + [ + 0.10343614366552997, + 0.10343614366552997, + 0.10343614366552997 + ], + [ + 0.10398803042149424, + 0.10398803042149424, + 0.10398803042149424 + ], + [ + 0.10522377343017167, + 0.10522377343017167, + 0.10522377343017167 + ], + [ + 0.1080494231366528, + 0.1080494231366528, + 0.1080494231366528 + ], + [ + 0.11087507284313397, + 0.11087507284313397, + 0.11087507284313397 + ], + [ + 0.11370072254961514, + 0.11370072254961514, + 0.11370072254961514 + ], + [ + 0.11796935791537351, + 0.11796935791537351, + 0.11796935791537351 + ], + [ + 0.1275305494223907, + 0.1275305494223907, + 0.1275305494223907 + ], + [ + 0.137091740929408, + 0.137091740929408, + 0.137091740929408 + ], + [ + 0.1466529324364252, + 0.1466529324364252, + 0.1466529324364252 + ], + [ + 0.15553074162455485, + 0.15553074162455485, + 0.15553074162455485 + ], + [ + 0.15825686664322086, + 0.15825686664322086, + 0.15825686664322086 + ], + [ + 0.16098299166188682, + 0.16098299166188682, + 0.16098299166188682 + ], + [ + 0.1637091166805528, + 0.1637091166805528, + 0.1637091166805528 + ], + [ + 0.16643524169921875, + 0.16643524169921875, + 0.16643524169921875 + ] + ], + "disk_bands_gib": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 2.3256221298408196e-08, + 2.3256221298408196e-08, + 2.3256221298408196e-08 + ], + [ + 2.5586074507537187e-07, + 2.5586074507537187e-07, + 2.5586074507537187e-07 + ], + [ + 4.884652688523304e-07, + 4.884652688523304e-07, + 4.884652688523304e-07 + ], + [ + 7.210697926292915e-07, + 7.210697926292915e-07, + 7.210697926292915e-07 + ], + [ + 9.5367431640625e-07, + 9.5367431640625e-07, + 9.5367431640625e-07 + ] + ] + }, + "raw_series": [ + { + "t": [ + 0.0002855118364095688, + 0.023330935975536704, + 0.04372683493420482, + 0.06422104290686548, + 0.08468786790035665, + 0.10521064884960651, + 0.12608508998528123, + 0.1467293850146234, + 0.16808246192522347, + 0.18848198605701327, + 0.20889306184835732, + 0.22934512584470212, + 0.24974042503163218, + 0.270136056933552, + 0.29053198685869575, + 0.3111308019142598, + 0.33156854985281825, + 0.35215518600307405, + 0.37275991798378527, + 0.3932898009661585, + 0.41372880386188626, + 0.43425925984047353, + 0.45472785201855004, + 0.47533532604575157, + 0.49587131990119815 + ], + "rss_kb": [ + 53716.0, + 63688.0, + 65884.0, + 67840.0, + 68988.0, + 73456.0, + 79168.0, + 82152.0, + 82476.0, + 83148.0, + 83728.0, + 84244.0, + 86680.0, + 89092.0, + 91664.0, + 93836.0, + 97236.0, + 97236.0, + 97236.0, + 97236.0, + 107072.0, + 109444.0, + 121552.0, + 162800.0, + 174520.0 + ], + "disk_bytes": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1024.0 + ] + } + ], + "environment": { + "timestamp": "2026-09-28T12:06:21.318845+00:00", + "platform": "Linux-7.1.13-200.fc44.x86_64-x86_64-with-glibc2.39", + "python": "3.12.14", + "cpu_count": 12, + "gnuplot": true, + "package:pyspark": "4.0.1", + "package:sail-nutmeg": "0.1.0", + "package:gfrs-poc": "0.1.0", + "git_commit": "bd8ce9ae8839477e2c08a0475ab7900b115c5366" + } +} \ No newline at end of file diff --git a/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/disk.dat b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/disk.dat new file mode 100644 index 00000000..44d46680 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/disk.dat @@ -0,0 +1,101 @@ +# fraction_pct mean ci_low ci_high +0.000000 0.000000 0.000000 0.000000 +1.010101 0.000000 0.000000 0.000000 +2.020202 0.000000 0.000000 0.000000 +3.030303 0.000000 0.000000 0.000000 +4.040404 0.000000 0.000000 0.000000 +5.050505 0.000000 0.000000 0.000000 +6.060606 0.000000 0.000000 0.000000 +7.070707 0.000000 0.000000 0.000000 +8.080808 0.000000 0.000000 0.000000 +9.090909 0.000000 0.000000 0.000000 +10.101010 0.000000 0.000000 0.000000 +11.111111 0.000000 0.000000 0.000000 +12.121212 0.000000 0.000000 0.000000 +13.131313 0.000000 0.000000 0.000000 +14.141414 0.000000 0.000000 0.000000 +15.151515 0.000000 0.000000 0.000000 +16.161616 0.000000 0.000000 0.000000 +17.171717 0.000000 0.000000 0.000000 +18.181818 0.000000 0.000000 0.000000 +19.191919 0.000000 0.000000 0.000000 +20.202020 0.000000 0.000000 0.000000 +21.212121 0.000000 0.000000 0.000000 +22.222222 0.000000 0.000000 0.000000 +23.232323 0.000000 0.000000 0.000000 +24.242424 0.000000 0.000000 0.000000 +25.252525 0.000000 0.000000 0.000000 +26.262626 0.000000 0.000000 0.000000 +27.272727 0.000000 0.000000 0.000000 +28.282828 0.000000 0.000000 0.000000 +29.292929 0.000000 0.000000 0.000000 +30.303030 0.000000 0.000000 0.000000 +31.313131 0.000000 0.000000 0.000000 +32.323232 0.000000 0.000000 0.000000 +33.333333 0.000000 0.000000 0.000000 +34.343434 0.000000 0.000000 0.000000 +35.353535 0.000000 0.000000 0.000000 +36.363636 0.000000 0.000000 0.000000 +37.373737 0.000000 0.000000 0.000000 +38.383838 0.000000 0.000000 0.000000 +39.393939 0.000000 0.000000 0.000000 +40.404040 0.000000 0.000000 0.000000 +41.414141 0.000000 0.000000 0.000000 +42.424242 0.000000 0.000000 0.000000 +43.434343 0.000000 0.000000 0.000000 +44.444444 0.000000 0.000000 0.000000 +45.454545 0.000000 0.000000 0.000000 +46.464646 0.000000 0.000000 0.000000 +47.474747 0.000000 0.000000 0.000000 +48.484848 0.000000 0.000000 0.000000 +49.494949 0.000000 0.000000 0.000000 +50.505051 0.000000 0.000000 0.000000 +51.515152 0.000000 0.000000 0.000000 +52.525253 0.000000 0.000000 0.000000 +53.535354 0.000000 0.000000 0.000000 +54.545455 0.000000 0.000000 0.000000 +55.555556 0.000000 0.000000 0.000000 +56.565657 0.000000 0.000000 0.000000 +57.575758 0.000000 0.000000 0.000000 +58.585859 0.000000 0.000000 0.000000 +59.595960 0.000000 0.000000 0.000000 +60.606061 0.000000 0.000000 0.000000 +61.616162 0.000000 0.000000 0.000000 +62.626263 0.000000 0.000000 0.000000 +63.636364 0.000000 0.000000 0.000000 +64.646465 0.000000 0.000000 0.000000 +65.656566 0.000000 0.000000 0.000000 +66.666667 0.000000 0.000000 0.000000 +67.676768 0.000000 0.000000 0.000000 +68.686869 0.000000 0.000000 0.000000 +69.696970 0.000000 0.000000 0.000000 +70.707071 0.000000 0.000000 0.000000 +71.717172 0.000000 0.000000 0.000000 +72.727273 0.000000 0.000000 0.000000 +73.737374 0.000000 0.000000 0.000000 +74.747475 0.000000 0.000000 0.000000 +75.757576 0.000000 0.000000 0.000000 +76.767677 0.000000 0.000000 0.000000 +77.777778 0.000000 0.000000 0.000000 +78.787879 0.000000 0.000000 0.000000 +79.797980 0.000000 0.000000 0.000000 +80.808081 0.000000 0.000000 0.000000 +81.818182 0.000000 0.000000 0.000000 +82.828283 0.000000 0.000000 0.000000 +83.838384 0.000000 0.000000 0.000000 +84.848485 0.000000 0.000000 0.000000 +85.858586 0.000000 0.000000 0.000000 +86.868687 0.000000 0.000000 0.000000 +87.878788 0.000000 0.000000 0.000000 +88.888889 0.000000 0.000000 0.000000 +89.898990 0.000000 0.000000 0.000000 +90.909091 0.000000 0.000000 0.000000 +91.919192 0.000000 0.000000 0.000000 +92.929293 0.000000 0.000000 0.000000 +93.939394 0.000000 0.000000 0.000000 +94.949495 0.000000 0.000000 0.000000 +95.959596 0.000000 0.000000 0.000000 +96.969697 0.000000 0.000000 0.000000 +97.979798 0.000000 0.000000 0.000000 +98.989899 0.000001 0.000001 0.000001 +100.000000 0.000001 0.000001 0.000001 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/disk.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/disk.gnuplot new file mode 100644 index 00000000..6d3c3588 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/disk.gnuplot @@ -0,0 +1,10 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/var/home/sem/github/sail/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/disk.png' +set title "nutmeg pagerank / example-directed (-) — max_mem_4G_hash_parts_4 — disk usage" +set xlabel 'fraction of run (%)' +set ylabel 'disk consumed (GiB)' +set grid +set key top left +set yrange [0:*] +plot '/var/home/sem/github/sail/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/disk.dat' using 1:3:4 with filledcurves lc rgb '#cccccc' title '95% CI', \ + '' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'mean' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/disk.png b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/disk.png new file mode 100644 index 00000000..a9784215 Binary files /dev/null and b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/disk.png differ diff --git a/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/rss.dat b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/rss.dat new file mode 100644 index 00000000..176df4e6 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/rss.dat @@ -0,0 +1,101 @@ +# fraction_pct mean ci_low ci_high +0.000000 0.051228 0.051228 0.051228 +1.010101 0.053177 0.053177 0.053177 +2.020202 0.055244 0.055244 0.055244 +3.030303 0.057311 0.057311 0.057311 +4.040404 0.059378 0.059378 0.059378 +5.050505 0.060914 0.060914 0.060914 +6.060606 0.061428 0.061428 0.061428 +7.070707 0.061942 0.061942 0.061942 +8.080808 0.062456 0.062456 0.062456 +9.090909 0.062955 0.062955 0.062955 +10.101010 0.063411 0.063411 0.063411 +11.111111 0.063867 0.063867 0.063867 +12.121212 0.064323 0.064323 0.064323 +13.131313 0.064745 0.064745 0.064745 +14.141414 0.065013 0.065013 0.065013 +15.151515 0.065281 0.065281 0.065281 +16.161616 0.065549 0.065549 0.065549 +17.171717 0.065888 0.065888 0.065888 +18.181818 0.066928 0.066928 0.066928 +19.191919 0.067968 0.067968 0.067968 +20.202020 0.069008 0.069008 0.069008 +21.212121 0.070048 0.070048 0.070048 +22.222222 0.071353 0.071353 0.071353 +23.232323 0.072661 0.072661 0.072661 +24.242424 0.073968 0.073968 0.073968 +25.252525 0.075275 0.075275 0.075275 +26.262626 0.076072 0.076072 0.076072 +27.272727 0.076762 0.076762 0.076762 +28.282828 0.077453 0.077453 0.077453 +29.292929 0.078143 0.078143 0.078143 +30.303030 0.078397 0.078397 0.078397 +31.313131 0.078470 0.078470 0.078470 +32.323232 0.078542 0.078542 0.078542 +33.333333 0.078615 0.078615 0.078615 +34.343434 0.078725 0.078725 0.078725 +35.353535 0.078882 0.078882 0.078882 +36.363636 0.079040 0.079040 0.079040 +37.373737 0.079197 0.079197 0.079197 +38.383838 0.079346 0.079346 0.079346 +39.393939 0.079482 0.079482 0.079482 +40.404040 0.079618 0.079618 0.079618 +41.414141 0.079754 0.079754 0.079754 +42.424242 0.079885 0.079885 0.079885 +43.434343 0.080005 0.080005 0.080005 +44.444444 0.080126 0.080126 0.080126 +45.454545 0.080246 0.080246 0.080246 +46.464646 0.080462 0.080462 0.080462 +47.474747 0.081033 0.081033 0.081033 +48.484848 0.081603 0.081603 0.081603 +49.494949 0.082174 0.082174 0.082174 +50.505051 0.082743 0.082743 0.082743 +51.515152 0.083308 0.083308 0.083308 +52.525253 0.083873 0.083873 0.083873 +53.535354 0.084438 0.084438 0.084438 +54.545455 0.085006 0.085006 0.085006 +55.555556 0.085608 0.085608 0.085608 +56.565657 0.086210 0.086210 0.086210 +57.575758 0.086813 0.086813 0.086813 +58.585859 0.087415 0.087415 0.087415 +59.595960 0.087919 0.087919 0.087919 +60.606061 0.088423 0.088423 0.088423 +61.616162 0.088926 0.088926 0.088926 +62.626263 0.089430 0.089430 0.089430 +63.636364 0.090191 0.090191 0.090191 +64.646465 0.090985 0.090985 0.090985 +65.656566 0.091780 0.091780 0.091780 +66.666667 0.092575 0.092575 0.092575 +67.676768 0.092731 0.092731 0.092731 +68.686869 0.092731 0.092731 0.092731 +69.696970 0.092731 0.092731 0.092731 +70.707071 0.092731 0.092731 0.092731 +71.717172 0.092731 0.092731 0.092731 +72.727273 0.092731 0.092731 0.092731 +73.737374 0.092731 0.092731 0.092731 +74.747475 0.092731 0.092731 0.092731 +75.757576 0.092731 0.092731 0.092731 +76.767677 0.092731 0.092731 0.092731 +77.777778 0.092731 0.092731 0.092731 +78.787879 0.092731 0.092731 0.092731 +79.797980 0.093835 0.093835 0.093835 +80.808081 0.096134 0.096134 0.096134 +81.818182 0.098433 0.098433 0.098433 +82.828283 0.100732 0.100732 0.100732 +83.838384 0.102332 0.102332 0.102332 +84.848485 0.102884 0.102884 0.102884 +85.858586 0.103436 0.103436 0.103436 +86.868687 0.103988 0.103988 0.103988 +87.878788 0.105224 0.105224 0.105224 +88.888889 0.108049 0.108049 0.108049 +89.898990 0.110875 0.110875 0.110875 +90.909091 0.113701 0.113701 0.113701 +91.919192 0.117969 0.117969 0.117969 +92.929293 0.127531 0.127531 0.127531 +93.939394 0.137092 0.137092 0.137092 +94.949495 0.146653 0.146653 0.146653 +95.959596 0.155531 0.155531 0.155531 +96.969697 0.158257 0.158257 0.158257 +97.979798 0.160983 0.160983 0.160983 +98.989899 0.163709 0.163709 0.163709 +100.000000 0.166435 0.166435 0.166435 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/rss.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/rss.gnuplot new file mode 100644 index 00000000..4b1272f3 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/rss.gnuplot @@ -0,0 +1,10 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/var/home/sem/github/sail/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/rss.png' +set title "nutmeg pagerank / example-directed (-) — max_mem_4G_hash_parts_4 — RSS" +set xlabel 'fraction of run (%)' +set ylabel 'RSS (GiB)' +set grid +set key top left +set yrange [0:*] +plot '/var/home/sem/github/sail/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/rss.dat' using 1:3:4 with filledcurves lc rgb '#cccccc' title '95% CI', \ + '' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'mean' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/rss.png b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/rss.png new file mode 100644 index 00000000..c7e516d0 Binary files /dev/null and b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/rss.png differ diff --git a/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.dat b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.dat new file mode 100644 index 00000000..b8737713 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.dat @@ -0,0 +1,257 @@ +# time_s density +-3.97289185 0.000133838715 +-3.9415193 0.000151658842 +-3.91014675 0.000171682592 +-3.8787742 0.000194158916 +-3.84740166 0.000219361784 +-3.81602911 0.000247592309 +-3.78465656 0.000279181015 +-3.75328401 0.000314490235 +-3.72191146 0.000353916655 +-3.69053891 0.000397893997 +-3.65916636 0.000446895853 +-3.62779381 0.000501438659 +-3.59642126 0.000562084817 +-3.56504871 0.000629445954 +-3.53367616 0.000704186329 +-3.50230362 0.00078702637 +-3.47093107 0.000878746341 +-3.43955852 0.000980190135 +-3.40818597 0.00109226917 +-3.37681342 0.0012159664 +-3.34544087 0.00135234042 +-3.31406832 0.00150252958 +-3.28269577 0.00166775628 +-3.25132322 0.00184933117 +-3.21995067 0.00204865745 +-3.18857813 0.0022672351 +-3.15720558 0.00250666511 +-3.12583303 0.00276865363 +-3.09446048 0.003055016 +-3.06308793 0.00336768066 +-3.03171538 0.00370869286 +-3.00034283 0.00408021816 +-2.96897028 0.00448454569 +-2.93759773 0.00492409102 +-2.90622518 0.00540139879 +-2.87485264 0.00591914481 +-2.84348009 0.00648013776 +-2.81210754 0.00708732035 +-2.78073499 0.0077437699 +-2.74936244 0.00845269829 +-2.71798989 0.00921745119 +-2.68661734 0.0100415066 +-2.65524479 0.0109284724 +-2.62387224 0.0118820833 +-2.59249969 0.0129061966 +-2.56112715 0.0140047871 +-2.5297546 0.015181941 +-2.49838205 0.0164418483 +-2.4670095 0.0177887949 +-2.43563695 0.0192271524 +-2.4042644 0.0207613678 +-2.37289185 0.0223959509 +-2.3415193 0.0241354612 +-2.31014675 0.0259844931 +-2.2787742 0.0279476597 +-2.24740166 0.0300295757 +-2.21602911 0.0322348384 +-2.18465656 0.0345680077 +-2.15328401 0.0370335848 +-2.12191146 0.0396359899 +-2.09053891 0.0423795377 +-2.05916636 0.0452684134 +-2.02779381 0.0483066457 +-1.99642126 0.0514980806 +-1.96504871 0.0548463531 +-1.93367616 0.0583548582 +-1.90230362 0.0620267224 +-1.87093107 0.065864773 +-1.83955852 0.069871508 +-1.80818597 0.0740490661 +-1.77681342 0.0783991955 +-1.74544087 0.0829232237 +-1.71406832 0.087622028 +-1.68269577 0.0924960049 +-1.65132322 0.0975450421 +-1.61995067 0.102768491 +-1.58857813 0.108165137 +-1.55720558 0.113733181 +-1.52583303 0.119470207 +-1.49446048 0.125373168 +-1.46308793 0.131438361 +-1.43171538 0.137661412 +-1.40034283 0.144037262 +-1.36897028 0.150560152 +-1.33759773 0.157223617 +-1.30622518 0.164020479 +-1.27485264 0.170942841 +-1.24348009 0.177982093 +-1.21210754 0.185128915 +-1.18073499 0.192373281 +-1.14936244 0.199704476 +-1.11798989 0.207111111 +-1.08661734 0.214581141 +-1.05524479 0.222101888 +-1.02387224 0.229660076 +-0.992499694 0.237241854 +-0.961127145 0.244832837 +-0.929754596 0.252418146 +-0.898382047 0.259982449 +-0.867009498 0.267510012 +-0.835636949 0.274984746 +-0.8042644 0.282390262 +-0.772891851 0.289709929 +-0.741519302 0.296926935 +-0.710146753 0.304024346 +-0.678774204 0.310985171 +-0.647401655 0.317792432 +-0.616029106 0.324429227 +-0.584656557 0.330878802 +-0.553284008 0.337124619 +-0.521911459 0.343150427 +-0.49053891 0.348940332 +-0.459166361 0.354478866 +-0.427793812 0.359751056 +-0.396421263 0.36474249 +-0.365048714 0.369439383 +-0.333676165 0.373828643 +-0.302303616 0.377897926 +-0.270931067 0.381635701 +-0.239558518 0.385031297 +-0.208185969 0.38807496 +-0.17681342 0.390757895 +-0.145440871 0.393072312 +-0.114068322 0.395011461 +-0.0826957727 0.396569666 +-0.0513232236 0.397742352 +-0.0199506746 0.398526068 +0.0114218744 0.398918505 +0.0427944234 0.398918505 +0.0741669724 0.398526068 +0.105539521 0.397742352 +0.13691207 0.396569666 +0.168284619 0.395011461 +0.199657169 0.393072312 +0.231029718 0.390757895 +0.262402267 0.38807496 +0.293774816 0.385031297 +0.325147365 0.381635701 +0.356519914 0.377897926 +0.387892463 0.373828643 +0.419265012 0.369439383 +0.450637561 0.36474249 +0.48201011 0.359751056 +0.513382659 0.354478866 +0.544755208 0.348940332 +0.576127757 0.343150427 +0.607500306 0.337124619 +0.638872855 0.330878802 +0.670245404 0.324429227 +0.701617953 0.317792432 +0.732990502 0.310985171 +0.764363051 0.304024346 +0.7957356 0.296926935 +0.827108149 0.289709929 +0.858480698 0.282390262 +0.889853247 0.274984746 +0.921225796 0.267510012 +0.952598345 0.259982449 +0.983970894 0.252418146 +1.01534344 0.244832837 +1.04671599 0.237241854 +1.07808854 0.229660076 +1.10946109 0.222101888 +1.14083364 0.214581141 +1.17220619 0.207111111 +1.20357874 0.199704476 +1.23495129 0.192373281 +1.26632384 0.185128915 +1.29769638 0.177982093 +1.32906893 0.170942841 +1.36044148 0.164020479 +1.39181403 0.157223617 +1.42318658 0.150560152 +1.45455913 0.144037262 +1.48593168 0.137661412 +1.51730423 0.131438361 +1.54867678 0.125373168 +1.58004933 0.119470207 +1.61142187 0.113733181 +1.64279442 0.108165137 +1.67416697 0.102768491 +1.70553952 0.0975450421 +1.73691207 0.0924960049 +1.76828462 0.087622028 +1.79965717 0.0829232237 +1.83102972 0.0783991955 +1.86240227 0.0740490661 +1.89377482 0.069871508 +1.92514736 0.065864773 +1.95651991 0.0620267224 +1.98789246 0.0583548582 +2.01926501 0.0548463531 +2.05063756 0.0514980806 +2.08201011 0.0483066457 +2.11338266 0.0452684134 +2.14475521 0.0423795377 +2.17612776 0.0396359899 +2.20750031 0.0370335848 +2.23887285 0.0345680077 +2.2702454 0.0322348384 +2.30161795 0.0300295757 +2.3329905 0.0279476597 +2.36436305 0.0259844931 +2.3957356 0.0241354612 +2.42710815 0.0223959509 +2.4584807 0.0207613678 +2.48985325 0.0192271524 +2.5212258 0.0177887949 +2.55259834 0.0164418483 +2.58397089 0.015181941 +2.61534344 0.0140047871 +2.64671599 0.0129061966 +2.67808854 0.0118820833 +2.70946109 0.0109284724 +2.74083364 0.0100415066 +2.77220619 0.00921745119 +2.80357874 0.00845269829 +2.83495129 0.0077437699 +2.86632384 0.00708732035 +2.89769638 0.00648013776 +2.92906893 0.00591914481 +2.96044148 0.00540139879 +2.99181403 0.00492409102 +3.02318658 0.00448454569 +3.05455913 0.00408021816 +3.08593168 0.00370869286 +3.11730423 0.00336768066 +3.14867678 0.003055016 +3.18004933 0.00276865363 +3.21142187 0.00250666511 +3.24279442 0.0022672351 +3.27416697 0.00204865745 +3.30553952 0.00184933117 +3.33691207 0.00166775628 +3.36828462 0.00150252958 +3.39965717 0.00135234042 +3.43102972 0.0012159664 +3.46240227 0.00109226917 +3.49377482 0.000980190135 +3.52514736 0.000878746341 +3.55651991 0.00078702637 +3.58789246 0.000704186329 +3.61926501 0.000629445954 +3.65063756 0.000562084817 +3.68201011 0.000501438659 +3.71338266 0.000446895853 +3.74475521 0.000397893997 +3.77612776 0.000353916655 +3.80750031 0.000314490235 +3.83887285 0.000279181015 +3.8702454 0.000247592309 +3.90161795 0.000219361784 +3.9329905 0.000194158916 +3.96436305 0.000171682592 +3.9957356 0.000151658842 +4.02710815 0.000133838715 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.gnuplot new file mode 100644 index 00000000..6398a651 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.gnuplot @@ -0,0 +1,19 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/var/home/sem/github/sail/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.png' +set title "nutmeg pagerank / example-directed (-) — max_mem_4G_hash_parts_4\nmedian=0.027s mean=0.027s std=0.000s min=0.027s max=0.027s p90=0.027s p95=0.027s runs=1" +set xlabel 'wall time (s)' +set ylabel 'probability density (1/s)' +set tmargin 5 +set yrange [0:0.518594] +set xrange [-3.972892:4.027108] +set grid y +set key top right +set arrow from 0.027108,0 to 0.027108,0.518594 nohead lc rgb 'red' lw 2 +set label 'median 0.027s' at 0.027108,0.518594 offset char 0,1 tc rgb 'red' +set arrow from 0.027108,0 to 0.027108,0.518594 nohead lc rgb 'orange' lw 1 dt 2 +set label 'p90 0.027s' at 0.027108,0.518594 offset char 0,1 tc rgb 'orange' +set arrow from 0.027108,0 to 0.027108,0.518594 nohead lc rgb 'orange' lw 1 dt 3 +set label 'p95 0.027s' at 0.027108,0.518594 offset char 0,1 tc rgb 'orange' +set arrow from 0.027108,0 to 0.027108,0.0159567 nohead lc rgb '#666666' lw 1 +plot '/var/home/sem/github/sail/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.dat' using 1:2 with filledcurves y=0 lc rgb '#4682b4' fs transparent solid 0.25 title 'kernel density', \ + '/var/home/sem/github/sail/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.dat' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'KDE (runs)' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.png b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.png new file mode 100644 index 00000000..3455ea21 Binary files /dev/null and b/examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.png differ diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/benchmark.json b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/benchmark.json new file mode 100644 index 00000000..d8cd10f5 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/benchmark.json @@ -0,0 +1,1164 @@ +{ + "algorithm": "pagerank", + "engine": "pregel", + "dataset": "example-directed", + "size_class": "-", + "params": { + "max_memory": "24G", + "use_smj": false, + "join": "hash", + "partitions": 8, + "threads": 8, + "tol": 1e-05, + "damping": 0.85, + "max_iter": 0, + "nutmeg_kernel": null, + "nutmeg_memory": null, + "sail_binary": "/home/ubuntu/sail/target/release/sail", + "work_dir": "/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/work/pregel_example-directed", + "runs": 1, + "warmup": 0, + "target_samples": 300, + "align": "dtw", + "disk_mode": "du" + }, + "graph": { + "vertices": 10, + "edges": 17, + "nodes_str": "10", + "edges_str": "17" + }, + "warmup": { + "wall_time_s": null, + "sampling_interval_s": null + }, + "runs": [ + { + "index": 0, + "wall_time_s": 0.8277624659995126, + "peak_rss_kb": 279084.0, + "peak_disk_bytes": 93184.0, + "n_samples": 6, + "details": { + "iterations": 31, + "active_counts": [ + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 4, + 3, + 1, + 0 + ], + "wall_time_s": 0.8277624659995126, + "result": "/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/work/pregel_example-directed/run_0/result" + } + } + ], + "stats": { + "wall_time_s": { + "n": 1, + "median": 0.8277624659995126, + "mean": 0.8277624659995126, + "std": 0.0, + "min": 0.8277624659995126, + "max": 0.8277624659995126, + "p90": 0.8277624659995126, + "p95": 0.8277624659995126 + }, + "peak_rss_kb": { + "n": 1, + "median": 279084.0, + "mean": 279084.0, + "std": 0.0, + "min": 279084.0, + "max": 279084.0, + "p90": 279084.0, + "p95": 279084.0 + }, + "peak_disk_bytes": { + "n": 1, + "median": 93184.0, + "mean": 93184.0, + "std": 0.0, + "min": 93184.0, + "max": 93184.0, + "p90": 93184.0, + "p95": 93184.0 + }, + "medges_per_sec": 2.0537292639226782e-05 + }, + "series": { + "alignment": "duration", + "ref_run": 0, + "band_frac": 0.0, + "grid_size": 100, + "rss_bands_gib": [ + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.054225921630859375, + 0.054225921630859375, + 0.054225921630859375 + ], + [ + 0.0544945083090069, + 0.0544945083090069, + 0.0544945083090069 + ], + [ + 0.05614672393920336, + 0.05614672393920336, + 0.05614672393920336 + ], + [ + 0.05779893956939983, + 0.05779893956939983, + 0.05779893956939983 + ], + [ + 0.059451155199596296, + 0.059451155199596296, + 0.059451155199596296 + ], + [ + 0.061103370829792766, + 0.061103370829792766, + 0.061103370829792766 + ], + [ + 0.06275558645998923, + 0.06275558645998923, + 0.06275558645998923 + ], + [ + 0.06440780209018568, + 0.06440780209018568, + 0.06440780209018568 + ], + [ + 0.06606001772038217, + 0.06606001772038217, + 0.06606001772038217 + ], + [ + 0.06771223335057862, + 0.06771223335057862, + 0.06771223335057862 + ], + [ + 0.0693644489807751, + 0.0693644489807751, + 0.0693644489807751 + ], + [ + 0.07101666461097156, + 0.07101666461097156, + 0.07101666461097156 + ], + [ + 0.07266888024116802, + 0.07266888024116802, + 0.07266888024116802 + ], + [ + 0.07432109587136448, + 0.07432109587136448, + 0.07432109587136448 + ], + [ + 0.07597331150156095, + 0.07597331150156095, + 0.07597331150156095 + ], + [ + 0.07762552713175741, + 0.07762552713175741, + 0.07762552713175741 + ], + [ + 0.07927774276195389, + 0.07927774276195389, + 0.07927774276195389 + ], + [ + 0.08092995839215034, + 0.08092995839215034, + 0.08092995839215034 + ], + [ + 0.08258217402234681, + 0.08258217402234681, + 0.08258217402234681 + ], + [ + 0.08423438965254326, + 0.08423438965254326, + 0.08423438965254326 + ], + [ + 0.08588660528273975, + 0.08588660528273975, + 0.08588660528273975 + ], + [ + 0.09182520775015611, + 0.09182520775015611, + 0.09182520775015611 + ], + [ + 0.10100047275909116, + 0.10100047275909116, + 0.10100047275909116 + ], + [ + 0.11017573776802621, + 0.11017573776802621, + 0.11017573776802621 + ], + [ + 0.11935100277696109, + 0.11935100277696109, + 0.11935100277696109 + ], + [ + 0.12852626778589632, + 0.12852626778589632, + 0.12852626778589632 + ], + [ + 0.1377015327948312, + 0.1377015327948312, + 0.1377015327948312 + ], + [ + 0.1468767978037664, + 0.1468767978037664, + 0.1468767978037664 + ], + [ + 0.1560520628127013, + 0.1560520628127013, + 0.1560520628127013 + ], + [ + 0.16522732782163635, + 0.16522732782163635, + 0.16522732782163635 + ], + [ + 0.17440259283057138, + 0.17440259283057138, + 0.17440259283057138 + ], + [ + 0.18357785783950642, + 0.18357785783950642, + 0.18357785783950642 + ], + [ + 0.19275312284844165, + 0.19275312284844165, + 0.19275312284844165 + ], + [ + 0.20192838785737655, + 0.20192838785737655, + 0.20192838785737655 + ], + [ + 0.21110365286631172, + 0.21110365286631172, + 0.21110365286631172 + ], + [ + 0.22027891787524664, + 0.22027891787524664, + 0.22027891787524664 + ], + [ + 0.22945418288418168, + 0.22945418288418168, + 0.22945418288418168 + ], + [ + 0.23862944789311674, + 0.23862944789311674, + 0.23862944789311674 + ], + [ + 0.24780471290205178, + 0.24780471290205178, + 0.24780471290205178 + ], + [ + 0.2569799779109868, + 0.2569799779109868, + 0.2569799779109868 + ], + [ + 0.2661552429199219, + 0.2661552429199219, + 0.2661552429199219 + ] + ], + "disk_bands_gib": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 2.5266976110658143e-06, + 2.5266976110658143e-06, + 2.5266976110658143e-06 + ], + [ + 6.961311568008078e-06, + 6.961311568008078e-06, + 6.961311568008078e-06 + ], + [ + 1.1395925524950343e-05, + 1.1395925524950343e-05, + 1.1395925524950343e-05 + ], + [ + 1.5830539481892528e-05, + 1.5830539481892528e-05, + 1.5830539481892528e-05 + ], + [ + 2.026515343883487e-05, + 2.026515343883487e-05, + 2.026515343883487e-05 + ], + [ + 2.4699767395777056e-05, + 2.4699767395777056e-05, + 2.4699767395777056e-05 + ], + [ + 2.9134381352719398e-05, + 2.9134381352719398e-05, + 2.9134381352719398e-05 + ], + [ + 3.356899530966158e-05, + 3.356899530966158e-05, + 3.356899530966158e-05 + ], + [ + 3.8003609266603845e-05, + 3.8003609266603845e-05, + 3.8003609266603845e-05 + ], + [ + 4.243822322354611e-05, + 4.243822322354611e-05, + 4.243822322354611e-05 + ], + [ + 4.687283718048838e-05, + 4.687283718048838e-05, + 4.687283718048838e-05 + ], + [ + 5.130745113743071e-05, + 5.130745113743071e-05, + 5.130745113743071e-05 + ], + [ + 5.57420650943729e-05, + 5.57420650943729e-05, + 5.57420650943729e-05 + ], + [ + 6.017667905131524e-05, + 6.017667905131524e-05, + 6.017667905131524e-05 + ], + [ + 6.461129300825744e-05, + 6.461129300825744e-05, + 6.461129300825744e-05 + ], + [ + 6.90459069651997e-05, + 6.90459069651997e-05, + 6.90459069651997e-05 + ], + [ + 7.348052092214195e-05, + 7.348052092214195e-05, + 7.348052092214195e-05 + ], + [ + 7.791513487908424e-05, + 7.791513487908424e-05, + 7.791513487908424e-05 + ], + [ + 8.234974883602649e-05, + 8.234974883602649e-05, + 8.234974883602649e-05 + ], + [ + 8.678436279296875e-05, + 8.678436279296875e-05, + 8.678436279296875e-05 + ] + ] + }, + "raw_series": [ + { + "t": [ + 0.0001725209995129262, + 0.5029748569995718, + 1.0245247470002141, + 1.5296509829995557, + 2.0305102749998696, + 2.530780914999923 + ], + "rss_kb": [ + 56860.0, + 56860.0, + 56860.0, + 56860.0, + 90804.0, + 279084.0 + ], + "disk_bytes": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 93184.0 + ] + } + ], + "environment": { + "timestamp": "2026-09-28T13:43:34.567321+00:00", + "platform": "Linux-7.0.0-1006-aws-x86_64-with-glibc2.43", + "python": "3.12.14", + "cpu_count": 16, + "gnuplot": false, + "package:pyspark": "4.0.1", + "package:sail-nutmeg": "0.1.0", + "package:gfrs-poc": "0.1.0", + "git_commit": "2fbc6c50ac1815371e4813e3f49e687b7639ae94" + } +} \ No newline at end of file diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/disk.dat b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/disk.dat new file mode 100644 index 00000000..41d616bf --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/disk.dat @@ -0,0 +1,101 @@ +# fraction_pct mean ci_low ci_high +0.000000 0.000000 0.000000 0.000000 +1.010101 0.000000 0.000000 0.000000 +2.020202 0.000000 0.000000 0.000000 +3.030303 0.000000 0.000000 0.000000 +4.040404 0.000000 0.000000 0.000000 +5.050505 0.000000 0.000000 0.000000 +6.060606 0.000000 0.000000 0.000000 +7.070707 0.000000 0.000000 0.000000 +8.080808 0.000000 0.000000 0.000000 +9.090909 0.000000 0.000000 0.000000 +10.101010 0.000000 0.000000 0.000000 +11.111111 0.000000 0.000000 0.000000 +12.121212 0.000000 0.000000 0.000000 +13.131313 0.000000 0.000000 0.000000 +14.141414 0.000000 0.000000 0.000000 +15.151515 0.000000 0.000000 0.000000 +16.161616 0.000000 0.000000 0.000000 +17.171717 0.000000 0.000000 0.000000 +18.181818 0.000000 0.000000 0.000000 +19.191919 0.000000 0.000000 0.000000 +20.202020 0.000000 0.000000 0.000000 +21.212121 0.000000 0.000000 0.000000 +22.222222 0.000000 0.000000 0.000000 +23.232323 0.000000 0.000000 0.000000 +24.242424 0.000000 0.000000 0.000000 +25.252525 0.000000 0.000000 0.000000 +26.262626 0.000000 0.000000 0.000000 +27.272727 0.000000 0.000000 0.000000 +28.282828 0.000000 0.000000 0.000000 +29.292929 0.000000 0.000000 0.000000 +30.303030 0.000000 0.000000 0.000000 +31.313131 0.000000 0.000000 0.000000 +32.323232 0.000000 0.000000 0.000000 +33.333333 0.000000 0.000000 0.000000 +34.343434 0.000000 0.000000 0.000000 +35.353535 0.000000 0.000000 0.000000 +36.363636 0.000000 0.000000 0.000000 +37.373737 0.000000 0.000000 0.000000 +38.383838 0.000000 0.000000 0.000000 +39.393939 0.000000 0.000000 0.000000 +40.404040 0.000000 0.000000 0.000000 +41.414141 0.000000 0.000000 0.000000 +42.424242 0.000000 0.000000 0.000000 +43.434343 0.000000 0.000000 0.000000 +44.444444 0.000000 0.000000 0.000000 +45.454545 0.000000 0.000000 0.000000 +46.464646 0.000000 0.000000 0.000000 +47.474747 0.000000 0.000000 0.000000 +48.484848 0.000000 0.000000 0.000000 +49.494949 0.000000 0.000000 0.000000 +50.505051 0.000000 0.000000 0.000000 +51.515152 0.000000 0.000000 0.000000 +52.525253 0.000000 0.000000 0.000000 +53.535354 0.000000 0.000000 0.000000 +54.545455 0.000000 0.000000 0.000000 +55.555556 0.000000 0.000000 0.000000 +56.565657 0.000000 0.000000 0.000000 +57.575758 0.000000 0.000000 0.000000 +58.585859 0.000000 0.000000 0.000000 +59.595960 0.000000 0.000000 0.000000 +60.606061 0.000000 0.000000 0.000000 +61.616162 0.000000 0.000000 0.000000 +62.626263 0.000000 0.000000 0.000000 +63.636364 0.000000 0.000000 0.000000 +64.646465 0.000000 0.000000 0.000000 +65.656566 0.000000 0.000000 0.000000 +66.666667 0.000000 0.000000 0.000000 +67.676768 0.000000 0.000000 0.000000 +68.686869 0.000000 0.000000 0.000000 +69.696970 0.000000 0.000000 0.000000 +70.707071 0.000000 0.000000 0.000000 +71.717172 0.000000 0.000000 0.000000 +72.727273 0.000000 0.000000 0.000000 +73.737374 0.000000 0.000000 0.000000 +74.747475 0.000000 0.000000 0.000000 +75.757576 0.000000 0.000000 0.000000 +76.767677 0.000000 0.000000 0.000000 +77.777778 0.000000 0.000000 0.000000 +78.787879 0.000000 0.000000 0.000000 +79.797980 0.000000 0.000000 0.000000 +80.808081 0.000003 0.000003 0.000003 +81.818182 0.000007 0.000007 0.000007 +82.828283 0.000011 0.000011 0.000011 +83.838384 0.000016 0.000016 0.000016 +84.848485 0.000020 0.000020 0.000020 +85.858586 0.000025 0.000025 0.000025 +86.868687 0.000029 0.000029 0.000029 +87.878788 0.000034 0.000034 0.000034 +88.888889 0.000038 0.000038 0.000038 +89.898990 0.000042 0.000042 0.000042 +90.909091 0.000047 0.000047 0.000047 +91.919192 0.000051 0.000051 0.000051 +92.929293 0.000056 0.000056 0.000056 +93.939394 0.000060 0.000060 0.000060 +94.949495 0.000065 0.000065 0.000065 +95.959596 0.000069 0.000069 0.000069 +96.969697 0.000073 0.000073 0.000073 +97.979798 0.000078 0.000078 0.000078 +98.989899 0.000082 0.000082 0.000082 +100.000000 0.000087 0.000087 0.000087 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/disk.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/disk.gnuplot new file mode 100644 index 00000000..2dcdcd49 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/disk.gnuplot @@ -0,0 +1,10 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/disk.png' +set title "pregel pagerank / example-directed (-) — max_mem_24G_hash_parts_8 — disk usage" +set xlabel 'fraction of run (%)' +set ylabel 'disk consumed (GiB)' +set grid +set key top left +set yrange [0:*] +plot '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/disk.dat' using 1:3:4 with filledcurves lc rgb '#cccccc' title '95% CI', \ + '' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'mean' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/rss.dat b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/rss.dat new file mode 100644 index 00000000..6841ad80 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/rss.dat @@ -0,0 +1,101 @@ +# fraction_pct mean ci_low ci_high +0.000000 0.054226 0.054226 0.054226 +1.010101 0.054226 0.054226 0.054226 +2.020202 0.054226 0.054226 0.054226 +3.030303 0.054226 0.054226 0.054226 +4.040404 0.054226 0.054226 0.054226 +5.050505 0.054226 0.054226 0.054226 +6.060606 0.054226 0.054226 0.054226 +7.070707 0.054226 0.054226 0.054226 +8.080808 0.054226 0.054226 0.054226 +9.090909 0.054226 0.054226 0.054226 +10.101010 0.054226 0.054226 0.054226 +11.111111 0.054226 0.054226 0.054226 +12.121212 0.054226 0.054226 0.054226 +13.131313 0.054226 0.054226 0.054226 +14.141414 0.054226 0.054226 0.054226 +15.151515 0.054226 0.054226 0.054226 +16.161616 0.054226 0.054226 0.054226 +17.171717 0.054226 0.054226 0.054226 +18.181818 0.054226 0.054226 0.054226 +19.191919 0.054226 0.054226 0.054226 +20.202020 0.054226 0.054226 0.054226 +21.212121 0.054226 0.054226 0.054226 +22.222222 0.054226 0.054226 0.054226 +23.232323 0.054226 0.054226 0.054226 +24.242424 0.054226 0.054226 0.054226 +25.252525 0.054226 0.054226 0.054226 +26.262626 0.054226 0.054226 0.054226 +27.272727 0.054226 0.054226 0.054226 +28.282828 0.054226 0.054226 0.054226 +29.292929 0.054226 0.054226 0.054226 +30.303030 0.054226 0.054226 0.054226 +31.313131 0.054226 0.054226 0.054226 +32.323232 0.054226 0.054226 0.054226 +33.333333 0.054226 0.054226 0.054226 +34.343434 0.054226 0.054226 0.054226 +35.353535 0.054226 0.054226 0.054226 +36.363636 0.054226 0.054226 0.054226 +37.373737 0.054226 0.054226 0.054226 +38.383838 0.054226 0.054226 0.054226 +39.393939 0.054226 0.054226 0.054226 +40.404040 0.054226 0.054226 0.054226 +41.414141 0.054226 0.054226 0.054226 +42.424242 0.054226 0.054226 0.054226 +43.434343 0.054226 0.054226 0.054226 +44.444444 0.054226 0.054226 0.054226 +45.454545 0.054226 0.054226 0.054226 +46.464646 0.054226 0.054226 0.054226 +47.474747 0.054226 0.054226 0.054226 +48.484848 0.054226 0.054226 0.054226 +49.494949 0.054226 0.054226 0.054226 +50.505051 0.054226 0.054226 0.054226 +51.515152 0.054226 0.054226 0.054226 +52.525253 0.054226 0.054226 0.054226 +53.535354 0.054226 0.054226 0.054226 +54.545455 0.054226 0.054226 0.054226 +55.555556 0.054226 0.054226 0.054226 +56.565657 0.054226 0.054226 0.054226 +57.575758 0.054226 0.054226 0.054226 +58.585859 0.054226 0.054226 0.054226 +59.595960 0.054226 0.054226 0.054226 +60.606061 0.054495 0.054495 0.054495 +61.616162 0.056147 0.056147 0.056147 +62.626263 0.057799 0.057799 0.057799 +63.636364 0.059451 0.059451 0.059451 +64.646465 0.061103 0.061103 0.061103 +65.656566 0.062756 0.062756 0.062756 +66.666667 0.064408 0.064408 0.064408 +67.676768 0.066060 0.066060 0.066060 +68.686869 0.067712 0.067712 0.067712 +69.696970 0.069364 0.069364 0.069364 +70.707071 0.071017 0.071017 0.071017 +71.717172 0.072669 0.072669 0.072669 +72.727273 0.074321 0.074321 0.074321 +73.737374 0.075973 0.075973 0.075973 +74.747475 0.077626 0.077626 0.077626 +75.757576 0.079278 0.079278 0.079278 +76.767677 0.080930 0.080930 0.080930 +77.777778 0.082582 0.082582 0.082582 +78.787879 0.084234 0.084234 0.084234 +79.797980 0.085887 0.085887 0.085887 +80.808081 0.091825 0.091825 0.091825 +81.818182 0.101000 0.101000 0.101000 +82.828283 0.110176 0.110176 0.110176 +83.838384 0.119351 0.119351 0.119351 +84.848485 0.128526 0.128526 0.128526 +85.858586 0.137702 0.137702 0.137702 +86.868687 0.146877 0.146877 0.146877 +87.878788 0.156052 0.156052 0.156052 +88.888889 0.165227 0.165227 0.165227 +89.898990 0.174403 0.174403 0.174403 +90.909091 0.183578 0.183578 0.183578 +91.919192 0.192753 0.192753 0.192753 +92.929293 0.201928 0.201928 0.201928 +93.939394 0.211104 0.211104 0.211104 +94.949495 0.220279 0.220279 0.220279 +95.959596 0.229454 0.229454 0.229454 +96.969697 0.238629 0.238629 0.238629 +97.979798 0.247805 0.247805 0.247805 +98.989899 0.256980 0.256980 0.256980 +100.000000 0.266155 0.266155 0.266155 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/rss.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/rss.gnuplot new file mode 100644 index 00000000..b38158be --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/rss.gnuplot @@ -0,0 +1,10 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/rss.png' +set title "pregel pagerank / example-directed (-) — max_mem_24G_hash_parts_8 — RSS" +set xlabel 'fraction of run (%)' +set ylabel 'RSS (GiB)' +set grid +set key top left +set yrange [0:*] +plot '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/rss.dat' using 1:3:4 with filledcurves lc rgb '#cccccc' title '95% CI', \ + '' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'mean' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/wall_time.dat b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/wall_time.dat new file mode 100644 index 00000000..4248062e --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/wall_time.dat @@ -0,0 +1,257 @@ +# time_s density +-3.17223753 0.000133838715 +-3.14086498 0.000151658842 +-3.10949244 0.000171682592 +-3.07811989 0.000194158916 +-3.04674734 0.000219361784 +-3.01537479 0.000247592309 +-2.98400224 0.000279181015 +-2.95262969 0.000314490235 +-2.92125714 0.000353916655 +-2.88988459 0.000397893997 +-2.85851204 0.000446895853 +-2.82713949 0.000501438659 +-2.79576695 0.000562084817 +-2.7643944 0.000629445954 +-2.73302185 0.000704186329 +-2.7016493 0.00078702637 +-2.67027675 0.000878746341 +-2.6389042 0.000980190135 +-2.60753165 0.00109226917 +-2.5761591 0.0012159664 +-2.54478655 0.00135234042 +-2.513414 0.00150252958 +-2.48204146 0.00166775628 +-2.45066891 0.00184933117 +-2.41929636 0.00204865745 +-2.38792381 0.0022672351 +-2.35655126 0.00250666511 +-2.32517871 0.00276865363 +-2.29380616 0.003055016 +-2.26243361 0.00336768066 +-2.23106106 0.00370869286 +-2.19968851 0.00408021816 +-2.16831597 0.00448454569 +-2.13694342 0.00492409102 +-2.10557087 0.00540139879 +-2.07419832 0.00591914481 +-2.04282577 0.00648013776 +-2.01145322 0.00708732035 +-1.98008067 0.0077437699 +-1.94870812 0.00845269829 +-1.91733557 0.00921745119 +-1.88596302 0.0100415066 +-1.85459048 0.0109284724 +-1.82321793 0.0118820833 +-1.79184538 0.0129061966 +-1.76047283 0.0140047871 +-1.72910028 0.015181941 +-1.69772773 0.0164418483 +-1.66635518 0.0177887949 +-1.63498263 0.0192271524 +-1.60361008 0.0207613678 +-1.57223753 0.0223959509 +-1.54086498 0.0241354612 +-1.50949244 0.0259844931 +-1.47811989 0.0279476597 +-1.44674734 0.0300295757 +-1.41537479 0.0322348384 +-1.38400224 0.0345680077 +-1.35262969 0.0370335848 +-1.32125714 0.0396359899 +-1.28988459 0.0423795377 +-1.25851204 0.0452684134 +-1.22713949 0.0483066457 +-1.19576695 0.0514980806 +-1.1643944 0.0548463531 +-1.13302185 0.0583548582 +-1.1016493 0.0620267224 +-1.07027675 0.065864773 +-1.0389042 0.069871508 +-1.00753165 0.0740490661 +-0.976159103 0.0783991955 +-0.944786554 0.0829232237 +-0.913414005 0.087622028 +-0.882041456 0.0924960049 +-0.850668907 0.0975450421 +-0.819296358 0.102768491 +-0.787923809 0.108165137 +-0.756551259 0.113733181 +-0.72517871 0.119470207 +-0.693806161 0.125373168 +-0.662433612 0.131438361 +-0.631061063 0.137661412 +-0.599688514 0.144037262 +-0.568315965 0.150560152 +-0.536943416 0.157223617 +-0.505570867 0.164020479 +-0.474198318 0.170942841 +-0.442825769 0.177982093 +-0.41145322 0.185128915 +-0.380080671 0.192373281 +-0.348708122 0.199704476 +-0.317335573 0.207111111 +-0.285963024 0.214581141 +-0.254590475 0.222101888 +-0.223217926 0.229660076 +-0.191845377 0.237241854 +-0.160472828 0.244832837 +-0.129100279 0.252418146 +-0.0977277301 0.259982449 +-0.0663551811 0.267510012 +-0.034982632 0.274984746 +-0.00361008302 0.282390262 +0.027762466 0.289709929 +0.059135015 0.296926935 +0.090507564 0.304024346 +0.121880113 0.310985171 +0.153252662 0.317792432 +0.184625211 0.324429227 +0.21599776 0.330878802 +0.247370309 0.337124619 +0.278742858 0.343150427 +0.310115407 0.348940332 +0.341487956 0.354478866 +0.372860505 0.359751056 +0.404233054 0.36474249 +0.435605603 0.369439383 +0.466978152 0.373828643 +0.498350701 0.377897926 +0.52972325 0.381635701 +0.561095799 0.385031297 +0.592468348 0.38807496 +0.623840897 0.390757895 +0.655213446 0.393072312 +0.686585995 0.395011461 +0.717958544 0.396569666 +0.749331093 0.397742352 +0.780703642 0.398526068 +0.812076191 0.398918505 +0.843448741 0.398918505 +0.87482129 0.398526068 +0.906193839 0.397742352 +0.937566388 0.396569666 +0.968938937 0.395011461 +1.00031149 0.393072312 +1.03168403 0.390757895 +1.06305658 0.38807496 +1.09442913 0.385031297 +1.12580168 0.381635701 +1.15717423 0.377897926 +1.18854678 0.373828643 +1.21991933 0.369439383 +1.25129188 0.36474249 +1.28266443 0.359751056 +1.31403698 0.354478866 +1.34540952 0.348940332 +1.37678207 0.343150427 +1.40815462 0.337124619 +1.43952717 0.330878802 +1.47089972 0.324429227 +1.50227227 0.317792432 +1.53364482 0.310985171 +1.56501737 0.304024346 +1.59638992 0.296926935 +1.62776247 0.289709929 +1.65913502 0.282390262 +1.69050756 0.274984746 +1.72188011 0.267510012 +1.75325266 0.259982449 +1.78462521 0.252418146 +1.81599776 0.244832837 +1.84737031 0.237241854 +1.87874286 0.229660076 +1.91011541 0.222101888 +1.94148796 0.214581141 +1.97286051 0.207111111 +2.00423305 0.199704476 +2.0356056 0.192373281 +2.06697815 0.185128915 +2.0983507 0.177982093 +2.12972325 0.170942841 +2.1610958 0.164020479 +2.19246835 0.157223617 +2.2238409 0.150560152 +2.25521345 0.144037262 +2.286586 0.137661412 +2.31795854 0.131438361 +2.34933109 0.125373168 +2.38070364 0.119470207 +2.41207619 0.113733181 +2.44344874 0.108165137 +2.47482129 0.102768491 +2.50619384 0.0975450421 +2.53756639 0.0924960049 +2.56893894 0.087622028 +2.60031149 0.0829232237 +2.63168403 0.0783991955 +2.66305658 0.0740490661 +2.69442913 0.069871508 +2.72580168 0.065864773 +2.75717423 0.0620267224 +2.78854678 0.0583548582 +2.81991933 0.0548463531 +2.85129188 0.0514980806 +2.88266443 0.0483066457 +2.91403698 0.0452684134 +2.94540952 0.0423795377 +2.97678207 0.0396359899 +3.00815462 0.0370335848 +3.03952717 0.0345680077 +3.07089972 0.0322348384 +3.10227227 0.0300295757 +3.13364482 0.0279476597 +3.16501737 0.0259844931 +3.19638992 0.0241354612 +3.22776247 0.0223959509 +3.25913502 0.0207613678 +3.29050756 0.0192271524 +3.32188011 0.0177887949 +3.35325266 0.0164418483 +3.38462521 0.015181941 +3.41599776 0.0140047871 +3.44737031 0.0129061966 +3.47874286 0.0118820833 +3.51011541 0.0109284724 +3.54148796 0.0100415066 +3.57286051 0.00921745119 +3.60423305 0.00845269829 +3.6356056 0.0077437699 +3.66697815 0.00708732035 +3.6983507 0.00648013776 +3.72972325 0.00591914481 +3.7610958 0.00540139879 +3.79246835 0.00492409102 +3.8238409 0.00448454569 +3.85521345 0.00408021816 +3.886586 0.00370869286 +3.91795854 0.00336768066 +3.94933109 0.003055016 +3.98070364 0.00276865363 +4.01207619 0.00250666511 +4.04344874 0.0022672351 +4.07482129 0.00204865745 +4.10619384 0.00184933117 +4.13756639 0.00166775628 +4.16893894 0.00150252958 +4.20031149 0.00135234042 +4.23168403 0.0012159664 +4.26305658 0.00109226917 +4.29442913 0.000980190135 +4.32580168 0.000878746341 +4.35717423 0.00078702637 +4.38854678 0.000704186329 +4.41991933 0.000629445954 +4.45129188 0.000562084817 +4.48266443 0.000501438659 +4.51403698 0.000446895853 +4.54540952 0.000397893997 +4.57678207 0.000353916655 +4.60815462 0.000314490235 +4.63952717 0.000279181015 +4.67089972 0.000247592309 +4.70227227 0.000219361784 +4.73364482 0.000194158916 +4.76501737 0.000171682592 +4.79638992 0.000151658842 +4.82776247 0.000133838715 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/wall_time.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/wall_time.gnuplot new file mode 100644 index 00000000..675e57b1 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/wall_time.gnuplot @@ -0,0 +1,19 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/wall_time.png' +set title "pregel pagerank / example-directed (-) — max_mem_24G_hash_parts_8\nmedian=0.828s mean=0.828s std=0.000s min=0.828s max=0.828s p90=0.828s p95=0.828s runs=1" +set xlabel 'wall time (s)' +set ylabel 'probability density (1/s)' +set tmargin 5 +set yrange [0:0.518594] +set xrange [-3.172238:4.827762] +set grid y +set key top right +set arrow from 0.827762,0 to 0.827762,0.518594 nohead lc rgb 'red' lw 2 +set label 'median 0.828s' at 0.827762,0.518594 offset char 0,1 tc rgb 'red' +set arrow from 0.827762,0 to 0.827762,0.518594 nohead lc rgb 'orange' lw 1 dt 2 +set label 'p90 0.828s' at 0.827762,0.518594 offset char 0,1 tc rgb 'orange' +set arrow from 0.827762,0 to 0.827762,0.518594 nohead lc rgb 'orange' lw 1 dt 3 +set label 'p95 0.828s' at 0.827762,0.518594 offset char 0,1 tc rgb 'orange' +set arrow from 0.827762,0 to 0.827762,0.0159567 nohead lc rgb '#666666' lw 1 +plot '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/wall_time.dat' using 1:2 with filledcurves y=0 lc rgb '#4682b4' fs transparent solid 0.25 title 'kernel density', \ + '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/wall_time.dat' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'KDE (runs)' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/benchmark.json b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/benchmark.json new file mode 100644 index 00000000..f6c702a3 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/benchmark.json @@ -0,0 +1,1398 @@ +{ + "algorithm": "pagerank", + "engine": "pregel", + "dataset": "example-directed", + "size_class": "-", + "params": { + "max_memory": "4G", + "use_smj": false, + "join": "hash", + "partitions": 4, + "threads": 4, + "tol": 1e-05, + "damping": 0.85, + "max_iter": 0, + "nutmeg_kernel": null, + "nutmeg_memory": null, + "sail_binary": "/target/release/sail", + "work_dir": "/tmp/sem_harness_work/pregel_example-directed", + "runs": 1, + "warmup": 1, + "target_samples": 300, + "align": "dtw", + "disk_mode": "du" + }, + "graph": { + "vertices": 10, + "edges": 17, + "nodes_str": "10", + "edges_str": "17" + }, + "warmup": { + "wall_time_s": 1.669651258038357, + "sampling_interval_s": null + }, + "runs": [ + { + "index": 0, + "wall_time_s": 1.7841648440808058, + "peak_rss_kb": 218492.0, + "peak_disk_bytes": 164864.0, + "n_samples": 84, + "details": { + "iterations": 31, + "active_counts": [ + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 4, + 3, + 1, + 0 + ], + "wall_time_s": 1.7841648440808058, + "result": "/tmp/sem_harness_work/pregel_example-directed/run_0/result" + } + } + ], + "stats": { + "wall_time_s": { + "n": 1, + "median": 1.7841648440808058, + "mean": 1.7841648440808058, + "std": 0.0, + "min": 1.7841648440808058, + "max": 1.7841648440808058, + "p90": 1.7841648440808058, + "p95": 1.7841648440808058 + }, + "peak_rss_kb": { + "n": 1, + "median": 218492.0, + "mean": 218492.0, + "std": 0.0, + "min": 218492.0, + "max": 218492.0, + "p90": 218492.0, + "p95": 218492.0 + }, + "peak_disk_bytes": { + "n": 1, + "median": 164864.0, + "mean": 164864.0, + "std": 0.0, + "min": 164864.0, + "max": 164864.0, + "p90": 164864.0, + "p95": 164864.0 + }, + "medges_per_sec": 9.528267556890647e-06 + }, + "series": { + "alignment": "dtw", + "ref_run": 0, + "band_frac": 0.25, + "grid_size": 100, + "rss_bands_gib": [ + [ + 0.051631927490234375, + 0.051631927490234375, + 0.051631927490234375 + ], + [ + 0.05986010512113278, + 0.05986010512113278, + 0.05986010512113278 + ], + [ + 0.06356870592250176, + 0.06356870592250176, + 0.06356870592250176 + ], + [ + 0.06597568584178977, + 0.06597568584178977, + 0.06597568584178977 + ], + [ + 0.06975007852975024, + 0.06975007852975024, + 0.06975007852975024 + ], + [ + 0.0730556482810417, + 0.0730556482810417, + 0.0730556482810417 + ], + [ + 0.0778168942102863, + 0.0778168942102863, + 0.0778168942102863 + ], + [ + 0.0797926331113944, + 0.0797926331113944, + 0.0797926331113944 + ], + [ + 0.08076885807321865, + 0.08076885807321865, + 0.08076885807321865 + ], + [ + 0.08225961144984083, + 0.08225961144984083, + 0.08225961144984083 + ], + [ + 0.0838060385887296, + 0.0838060385887296, + 0.0838060385887296 + ], + [ + 0.08580600703845666, + 0.08580600703845666, + 0.08580600703845666 + ], + [ + 0.08816919613758453, + 0.08816919613758453, + 0.08816919613758453 + ], + [ + 0.11030007359516258, + 0.11030007359516258, + 0.11030007359516258 + ], + [ + 0.13916864096912446, + 0.13916864096912446, + 0.13916864096912446 + ], + [ + 0.15848720282100293, + 0.15848720282100293, + 0.15848720282100293 + ], + [ + 0.16821735284616202, + 0.16821735284616202, + 0.16821735284616202 + ], + [ + 0.1731931710916416, + 0.1731931710916416, + 0.1731931710916416 + ], + [ + 0.1772620540510555, + 0.1772620540510555, + 0.1772620540510555 + ], + [ + 0.1802047861786032, + 0.1802047861786032, + 0.1802047861786032 + ], + [ + 0.18125600799956149, + 0.18125600799956149, + 0.18125600799956149 + ], + [ + 0.18290496957839011, + 0.18290496957839011, + 0.18290496957839011 + ], + [ + 0.18526861239327502, + 0.18526861239327502, + 0.18526861239327502 + ], + [ + 0.18571993424391456, + 0.18571993424391456, + 0.18571993424391456 + ], + [ + 0.18728688183879003, + 0.18728688183879003, + 0.18728688183879003 + ], + [ + 0.1877328200629122, + 0.1877328200629122, + 0.1877328200629122 + ], + [ + 0.1893214549626591, + 0.1893214549626591, + 0.1893214549626591 + ], + [ + 0.1893310546875, + 0.1893310546875, + 0.1893310546875 + ], + [ + 0.1893310546875, + 0.1893310546875, + 0.1893310546875 + ], + [ + 0.1893310546875, + 0.1893310546875, + 0.1893310546875 + ], + [ + 0.1893310546875, + 0.1893310546875, + 0.1893310546875 + ], + [ + 0.1893310546875, + 0.1893310546875, + 0.1893310546875 + ], + [ + 0.1893310546875, + 0.1893310546875, + 0.1893310546875 + ], + [ + 0.1893310546875, + 0.1893310546875, + 0.1893310546875 + ], + [ + 0.1893310546875, + 0.1893310546875, + 0.1893310546875 + ], + [ + 0.1893310546875, + 0.1893310546875, + 0.1893310546875 + ], + [ + 0.1893310546875, + 0.1893310546875, + 0.1893310546875 + ], + [ + 0.1896546368387056, + 0.1896546368387056, + 0.1896546368387056 + ], + [ + 0.19137346013102707, + 0.19137346013102707, + 0.19137346013102707 + ], + [ + 0.19311141866507836, + 0.19311141866507836, + 0.19311141866507836 + ], + [ + 0.19324111938476562, + 0.19324111938476562, + 0.19324111938476562 + ], + [ + 0.19324111938476562, + 0.19324111938476562, + 0.19324111938476562 + ], + [ + 0.19324111938476562, + 0.19324111938476562, + 0.19324111938476562 + ], + [ + 0.1932432344590218, + 0.1932432344590218, + 0.1932432344590218 + ], + [ + 0.19395102544678663, + 0.19395102544678663, + 0.19395102544678663 + ], + [ + 0.19519805908203125, + 0.19519805908203125, + 0.19519805908203125 + ], + [ + 0.19519805908203125, + 0.19519805908203125, + 0.19519805908203125 + ], + [ + 0.19519805908203125, + 0.19519805908203125, + 0.19519805908203125 + ], + [ + 0.18763586692348308, + 0.18763586692348308, + 0.18763586692348308 + ], + [ + 0.18118661620396398, + 0.18118661620396398, + 0.18118661620396398 + ], + [ + 0.18246481371591053, + 0.18246481371591053, + 0.18246481371591053 + ], + [ + 0.18266606014421605, + 0.18266606014421605, + 0.18266606014421605 + ], + [ + 0.1826777821493767, + 0.1826777821493767, + 0.1826777821493767 + ], + [ + 0.1826856364277933, + 0.1826856364277933, + 0.1826856364277933 + ], + [ + 0.18270123971625665, + 0.18270123971625665, + 0.18270123971625665 + ], + [ + 0.18271482277150428, + 0.18271482277150428, + 0.18271482277150428 + ], + [ + 0.18272570673890753, + 0.18272570673890753, + 0.18272570673890753 + ], + [ + 0.18275123909674842, + 0.18275123909674842, + 0.18275123909674842 + ], + [ + 0.18280711590782525, + 0.18280711590782525, + 0.18280711590782525 + ], + [ + 0.18284043651653065, + 0.18284043651653065, + 0.18284043651653065 + ], + [ + 0.18284988403320312, + 0.18284988403320312, + 0.18284988403320312 + ], + [ + 0.18286667561016465, + 0.18286667561016465, + 0.18286667561016465 + ], + [ + 0.18355681536575041, + 0.18355681536575041, + 0.18355681536575041 + ], + [ + 0.18490982055664062, + 0.18490982055664062, + 0.18490982055664062 + ], + [ + 0.18491254948212815, + 0.18491254948212815, + 0.18491254948212815 + ], + [ + 0.18495019523419945, + 0.18495019523419945, + 0.18495019523419945 + ], + [ + 0.1849779522550121, + 0.1849779522550121, + 0.1849779522550121 + ], + [ + 0.18500013958886657, + 0.18500013958886657, + 0.18500013958886657 + ], + [ + 0.18501288884749548, + 0.18501288884749548, + 0.18501288884749548 + ], + [ + 0.1850195856711133, + 0.1850195856711133, + 0.1850195856711133 + ], + [ + 0.18503411385923824, + 0.18503411385923824, + 0.18503411385923824 + ], + [ + 0.18504558142479258, + 0.18504558142479258, + 0.18504558142479258 + ], + [ + 0.1927469223942082, + 0.1927469223942082, + 0.1927469223942082 + ], + [ + 0.2053680419921875, + 0.2053680419921875, + 0.2053680419921875 + ], + [ + 0.2053733338231588, + 0.2053733338231588, + 0.2053733338231588 + ], + [ + 0.2054030861205974, + 0.2054030861205974, + 0.2054030861205974 + ], + [ + 0.20540907304324704, + 0.20540907304324704, + 0.20540907304324704 + ], + [ + 0.2054348108516692, + 0.2054348108516692, + 0.2054348108516692 + ], + [ + 0.20547085567545598, + 0.20547085567545598, + 0.20547085567545598 + ], + [ + 0.2055121407887126, + 0.2055121407887126, + 0.2055121407887126 + ], + [ + 0.20575183350553178, + 0.20575183350553178, + 0.20575183350553178 + ], + [ + 0.20593997341442485, + 0.20593997341442485, + 0.20593997341442485 + ], + [ + 0.20601479427441602, + 0.20601479427441602, + 0.20601479427441602 + ], + [ + 0.20729752615541902, + 0.20729752615541902, + 0.20729752615541902 + ], + [ + 0.2080193462922716, + 0.2080193462922716, + 0.2080193462922716 + ], + [ + 0.20806100825576093, + 0.20806100825576093, + 0.20806100825576093 + ], + [ + 0.2080769422601917, + 0.2080769422601917, + 0.2080769422601917 + ], + [ + 0.2080849130577165, + 0.2080849130577165, + 0.2080849130577165 + ], + [ + 0.20808792114257812, + 0.20808792114257812, + 0.20808792114257812 + ], + [ + 0.20808792114257812, + 0.20808792114257812, + 0.20808792114257812 + ], + [ + 0.20808792114257812, + 0.20808792114257812, + 0.20808792114257812 + ], + [ + 0.20808792114257812, + 0.20808792114257812, + 0.20808792114257812 + ], + [ + 0.20808792114257812, + 0.20808792114257812, + 0.20808792114257812 + ], + [ + 0.20809043657291054, + 0.20809043657291054, + 0.20809043657291054 + ], + [ + 0.2081885028301094, + 0.2081885028301094, + 0.2081885028301094 + ], + [ + 0.20837020874023438, + 0.20837020874023438, + 0.20837020874023438 + ], + [ + 0.20837020874023438, + 0.20837020874023438, + 0.20837020874023438 + ], + [ + 0.20021314294053533, + 0.20021314294053533, + 0.20021314294053533 + ], + [ + 0.19404240509247067, + 0.19404240509247067, + 0.19404240509247067 + ], + [ + 0.19405364990234375, + 0.19405364990234375, + 0.19405364990234375 + ] + ], + "disk_bands_gib": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 5.717706220077451e-07, + 5.717706220077451e-07, + 5.717706220077451e-07 + ], + [ + 2.047877845103142e-06, + 2.047877845103142e-06, + 2.047877845103142e-06 + ], + [ + 4.4685713699256966e-06, + 4.4685713699256966e-06, + 4.4685713699256966e-06 + ], + [ + 6.774259289664412e-06, + 6.774259289664412e-06, + 6.774259289664412e-06 + ], + [ + 7.62939453125e-06, + 7.62939453125e-06, + 7.62939453125e-06 + ], + [ + 9.014061214380184e-06, + 9.014061214380184e-06, + 9.014061214380184e-06 + ], + [ + 1.1387731558547604e-05, + 1.1387731558547604e-05, + 1.1387731558547604e-05 + ], + [ + 1.3569769584912724e-05, + 1.3569769584912724e-05, + 1.3569769584912724e-05 + ], + [ + 1.5825959062316954e-05, + 1.5825959062316954e-05, + 1.5825959062316954e-05 + ], + [ + 1.71661376953125e-05, + 1.71661376953125e-05, + 1.71661376953125e-05 + ], + [ + 1.8107405579598346e-05, + 1.8107405579598346e-05, + 1.8107405579598346e-05 + ], + [ + 2.193450927734375e-05, + 2.193450927734375e-05, + 2.193450927734375e-05 + ], + [ + 2.239560101633518e-05, + 2.239560101633518e-05, + 2.239560101633518e-05 + ], + [ + 2.496839878629928e-05, + 2.496839878629928e-05, + 2.496839878629928e-05 + ], + [ + 2.6691396935703228e-05, + 2.6691396935703228e-05, + 2.6691396935703228e-05 + ], + [ + 2.7641147980158843e-05, + 2.7641147980158843e-05, + 2.7641147980158843e-05 + ], + [ + 2.9478375152826493e-05, + 2.9478375152826493e-05, + 2.9478375152826493e-05 + ], + [ + 3.215817591613253e-05, + 3.215817591613253e-05, + 3.215817591613253e-05 + ], + [ + 3.3852993674234584e-05, + 3.3852993674234584e-05, + 3.3852993674234584e-05 + ], + [ + 3.624808861825642e-05, + 3.624808861825642e-05, + 3.624808861825642e-05 + ], + [ + 3.719329833984375e-05, + 3.719329833984375e-05, + 3.719329833984375e-05 + ], + [ + 3.814386697888325e-05, + 3.814386697888325e-05, + 3.814386697888325e-05 + ], + [ + 4.0519807664156966e-05, + 4.0519807664156966e-05, + 4.0519807664156966e-05 + ], + [ + 4.243566721368008e-05, + 4.243566721368008e-05, + 4.243566721368008e-05 + ], + [ + 4.490971084724099e-05, + 4.490971084724099e-05, + 4.490971084724099e-05 + ], + [ + 4.660362754709604e-05, + 4.660362754709604e-05, + 4.660362754709604e-05 + ], + [ + 4.925891127982124e-05, + 4.925891127982124e-05, + 4.925891127982124e-05 + ], + [ + 5.1173549688630516e-05, + 5.1173549688630516e-05, + 5.1173549688630516e-05 + ], + [ + 5.346913514129318e-05, + 5.346913514129318e-05, + 5.346913514129318e-05 + ], + [ + 5.54169731632497e-05, + 5.54169731632497e-05, + 5.54169731632497e-05 + ], + [ + 5.730109819055966e-05, + 5.730109819055966e-05, + 5.730109819055966e-05 + ], + [ + 5.933303288093213e-05, + 5.933303288093213e-05, + 5.933303288093213e-05 + ], + [ + 6.094174507238848e-05, + 6.094174507238848e-05, + 6.094174507238848e-05 + ], + [ + 6.309007091315476e-05, + 6.309007091315476e-05, + 6.309007091315476e-05 + ], + [ + 6.488781205504725e-05, + 6.488781205504725e-05, + 6.488781205504725e-05 + ], + [ + 6.656929904966155e-05, + 6.656929904966155e-05, + 6.656929904966155e-05 + ], + [ + 6.840227827329426e-05, + 6.840227827329426e-05, + 6.840227827329426e-05 + ], + [ + 6.997562693061064e-05, + 6.997562693061064e-05, + 6.997562693061064e-05 + ], + [ + 7.183722081118311e-05, + 7.183722081118311e-05, + 7.183722081118311e-05 + ], + [ + 7.379282979105056e-05, + 7.379282979105056e-05, + 7.379282979105056e-05 + ], + [ + 7.535960245802897e-05, + 7.535960245802897e-05, + 7.535960245802897e-05 + ], + [ + 7.739706074517102e-05, + 7.739706074517102e-05, + 7.739706074517102e-05 + ], + [ + 7.958189712923e-05, + 7.958189712923e-05, + 7.958189712923e-05 + ], + [ + 8.152923781785655e-05, + 8.152923781785655e-05, + 8.152923781785655e-05 + ], + [ + 8.285963808159063e-05, + 8.285963808159063e-05, + 8.285963808159063e-05 + ], + [ + 8.512212472612704e-05, + 8.512212472612704e-05, + 8.512212472612704e-05 + ], + [ + 8.58306884765625e-05, + 8.58306884765625e-05, + 8.58306884765625e-05 + ], + [ + 8.667026732463913e-05, + 8.667026732463913e-05, + 8.667026732463913e-05 + ], + [ + 8.868443007148494e-05, + 8.868443007148494e-05, + 8.868443007148494e-05 + ], + [ + 9.125215580679184e-05, + 9.125215580679184e-05, + 9.125215580679184e-05 + ], + [ + 9.356504168040957e-05, + 9.356504168040957e-05, + 9.356504168040957e-05 + ], + [ + 9.501295522161348e-05, + 9.501295522161348e-05, + 9.501295522161348e-05 + ], + [ + 9.675797918450148e-05, + 9.675797918450148e-05, + 9.675797918450148e-05 + ], + [ + 9.855107897941449e-05, + 9.855107897941449e-05, + 9.855107897941449e-05 + ], + [ + 0.00010013580322265625, + 0.00010013580322265625, + 0.00010013580322265625 + ], + [ + 0.00010013580322265625, + 0.00010013580322265625, + 0.00010013580322265625 + ], + [ + 0.00010355257369627653, + 0.00010355257369627653, + 0.00010355257369627653 + ], + [ + 0.0001049041748046875, + 0.0001049041748046875, + 0.0001049041748046875 + ], + [ + 0.00010598790903845666, + 0.00010598790903845666, + 0.00010598790903845666 + ], + [ + 0.00010829286427885329, + 0.00010829286427885329, + 0.00010829286427885329 + ], + [ + 0.00011006943370956668, + 0.00011006943370956668, + 0.00011006943370956668 + ], + [ + 0.00011230085601746082, + 0.00011230085601746082, + 0.00011230085601746082 + ], + [ + 0.0001139756085375897, + 0.0001139756085375897, + 0.0001139756085375897 + ], + [ + 0.00011576987455231184, + 0.00011576987455231184, + 0.00011576987455231184 + ], + [ + 0.00011756787847610606, + 0.00011756787847610606, + 0.00011756787847610606 + ], + [ + 0.00011904234680670011, + 0.00011904234680670011, + 0.00011904234680670011 + ], + [ + 0.00012092058799727334, + 0.00012092058799727334, + 0.00012092058799727334 + ], + [ + 0.00012261039125926058, + 0.00012261039125926058, + 0.00012261039125926058 + ], + [ + 0.0001239464780448172, + 0.0001239464780448172, + 0.0001239464780448172 + ], + [ + 0.0001258287964334993, + 0.0001258287964334993, + 0.0001258287964334993 + ], + [ + 0.00012791577239774048, + 0.00012791577239774048, + 0.00012791577239774048 + ], + [ + 0.00013000009797356808, + 0.00013000009797356808, + 0.00013000009797356808 + ], + [ + 0.0001313279316761299, + 0.0001313279316761299, + 0.0001313279316761299 + ], + [ + 0.00013334004679017985, + 0.00013334004679017985, + 0.00013334004679017985 + ], + [ + 0.00013505117822618497, + 0.00013505117822618497, + 0.00013505117822618497 + ], + [ + 0.00013625118646902877, + 0.00013625118646902877, + 0.00013625118646902877 + ], + [ + 0.000138550604608378, + 0.000138550604608378, + 0.000138550604608378 + ], + [ + 0.00014040158640147316, + 0.00014040158640147316, + 0.00014040158640147316 + ], + [ + 0.000142025834021008, + 0.000142025834021008, + 0.000142025834021008 + ], + [ + 0.0001433551883107463, + 0.0001433551883107463, + 0.0001433551883107463 + ], + [ + 0.0001449990031841825, + 0.0001449990031841825, + 0.0001449990031841825 + ], + [ + 0.0001469443018723693, + 0.0001469443018723693, + 0.0001469443018723693 + ], + [ + 0.00014853391641734466, + 0.00014853391641734466, + 0.00014853391641734466 + ], + [ + 0.00015040156688872667, + 0.00015040156688872667, + 0.00015040156688872667 + ], + [ + 0.00015213596370727267, + 0.00015213596370727267, + 0.00015213596370727267 + ], + [ + 0.00015354156494140625, + 0.00015354156494140625, + 0.00015354156494140625 + ] + ] + }, + "raw_series": [ + { + "t": [ + 0.00023118196986615658, + 0.02281244588084519, + 0.043311066925525665, + 0.0637473058886826, + 0.08442729688249528, + 0.1048651768360287, + 0.12732180394232273, + 0.1478119248058647, + 0.17328037996776402, + 0.19364965497516096, + 0.21408207481727004, + 0.23443299578502774, + 0.2548542018048465, + 0.2753501699771732, + 0.29676967579871416, + 0.31770059396512806, + 0.33845566492527723, + 0.3592870789580047, + 0.38104040385223925, + 0.4018626769538969, + 0.4227795437909663, + 0.44599146698601544, + 0.46913467696867883, + 0.4899475770071149, + 0.5106978619005531, + 0.5316557819023728, + 0.5537338149733841, + 0.5765214548446238, + 0.5973051788751036, + 0.6185052008368075, + 0.6401585878338665, + 0.6649559938814491, + 0.6863918919116259, + 0.7129216818138957, + 0.7356716718059033, + 0.7577729639597237, + 0.7811782949138433, + 0.8043571568559855, + 0.8259080469142646, + 0.8477034668903798, + 0.8721989509649575, + 0.8955779508687556, + 0.9237057638820261, + 0.9481122808065265, + 0.9751084528397769, + 1.0000724999699742, + 1.032203028909862, + 1.0578652238473296, + 1.0862707349006087, + 1.1114028899464756, + 1.140308802947402, + 1.1661290368065238, + 1.195641253842041, + 1.220739922951907, + 1.245313957799226, + 1.2688958598300815, + 1.291216955985874, + 1.3159575120080262, + 1.3430745049845427, + 1.3750590928830206, + 1.3995706560090184, + 1.4230224078055471, + 1.4480566098354757, + 1.4735255509149283, + 1.496243487810716, + 1.5196399048436433, + 1.5460332019720227, + 1.5704211289994419, + 1.6019290757831186, + 1.6285576988011599, + 1.6590762848500162, + 1.6884628948755562, + 1.7195357419550419, + 1.7450810079462826, + 1.7746502689551562, + 1.8014907739125192, + 1.8342097669374198, + 1.8584822898264974, + 1.8947419039905071, + 1.924582780804485, + 1.9545734277926385, + 1.979273164877668, + 2.0099967517890036, + 2.0379300378262997 + ], + "rss_kb": [ + 54140.0, + 63712.0, + 67000.0, + 69416.0, + 73556.0, + 76924.0, + 82552.0, + 83916.0, + 85088.0, + 87072.0, + 88420.0, + 90980.0, + 93368.0, + 129192.0, + 157108.0, + 172932.0, + 179084.0, + 183656.0, + 187944.0, + 190040.0, + 190084.0, + 194248.0, + 194316.0, + 196364.0, + 196468.0, + 198516.0, + 198528.0, + 198528.0, + 198528.0, + 198528.0, + 198528.0, + 198528.0, + 198528.0, + 198528.0, + 198528.0, + 198528.0, + 200576.0, + 202628.0, + 202628.0, + 202628.0, + 202628.0, + 202632.0, + 204680.0, + 204680.0, + 204680.0, + 189428.0, + 191520.0, + 191548.0, + 191556.0, + 191576.0, + 191596.0, + 191608.0, + 191692.0, + 191732.0, + 191732.0, + 191772.0, + 193892.0, + 193892.0, + 193944.0, + 193984.0, + 194000.0, + 194008.0, + 194028.0, + 194040.0, + 215344.0, + 215344.0, + 215384.0, + 215388.0, + 215444.0, + 215500.0, + 215912.0, + 216024.0, + 218100.0, + 218164.0, + 218188.0, + 218196.0, + 218196.0, + 218196.0, + 218196.0, + 218200.0, + 218492.0, + 218492.0, + 203464.0, + 203480.0 + ], + "disk_bytes": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1024.0, + 3072.0, + 6144.0, + 8192.0, + 8192.0, + 11264.0, + 13312.0, + 16384.0, + 18432.0, + 18432.0, + 23552.0, + 23552.0, + 26624.0, + 28672.0, + 29696.0, + 31744.0, + 34816.0, + 36864.0, + 39936.0, + 39936.0, + 43008.0, + 45056.0, + 48128.0, + 50176.0, + 53248.0, + 55296.0, + 58368.0, + 60416.0, + 63488.0, + 65536.0, + 68608.0, + 70656.0, + 73728.0, + 75776.0, + 78848.0, + 80896.0, + 83968.0, + 87040.0, + 89088.0, + 92160.0, + 92160.0, + 94208.0, + 97280.0, + 100352.0, + 102400.0, + 105472.0, + 107520.0, + 107520.0, + 112640.0, + 112640.0, + 115712.0, + 117760.0, + 120832.0, + 122880.0, + 125952.0, + 128000.0, + 131072.0, + 133120.0, + 136192.0, + 139264.0, + 141312.0, + 144384.0, + 146432.0, + 149504.0, + 152576.0, + 154624.0, + 157696.0, + 159744.0, + 162816.0, + 164864.0 + ] + } + ], + "environment": { + "timestamp": "2026-09-28T12:05:50.499749+00:00", + "platform": "Linux-7.1.13-200.fc44.x86_64-x86_64-with-glibc2.39", + "python": "3.12.14", + "cpu_count": 12, + "gnuplot": true, + "package:pyspark": "4.0.1", + "package:sail-nutmeg": "0.1.0", + "package:gfrs-poc": "0.1.0", + "git_commit": "bd8ce9ae8839477e2c08a0475ab7900b115c5366" + } +} \ No newline at end of file diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/disk.dat b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/disk.dat new file mode 100644 index 00000000..af84e03b --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/disk.dat @@ -0,0 +1,101 @@ +# fraction_pct mean ci_low ci_high +0.000000 0.000000 0.000000 0.000000 +1.010101 0.000000 0.000000 0.000000 +2.020202 0.000000 0.000000 0.000000 +3.030303 0.000000 0.000000 0.000000 +4.040404 0.000000 0.000000 0.000000 +5.050505 0.000000 0.000000 0.000000 +6.060606 0.000000 0.000000 0.000000 +7.070707 0.000000 0.000000 0.000000 +8.080808 0.000000 0.000000 0.000000 +9.090909 0.000000 0.000000 0.000000 +10.101010 0.000000 0.000000 0.000000 +11.111111 0.000000 0.000000 0.000000 +12.121212 0.000000 0.000000 0.000000 +13.131313 0.000000 0.000000 0.000000 +14.141414 0.000001 0.000001 0.000001 +15.151515 0.000002 0.000002 0.000002 +16.161616 0.000004 0.000004 0.000004 +17.171717 0.000007 0.000007 0.000007 +18.181818 0.000008 0.000008 0.000008 +19.191919 0.000009 0.000009 0.000009 +20.202020 0.000011 0.000011 0.000011 +21.212121 0.000014 0.000014 0.000014 +22.222222 0.000016 0.000016 0.000016 +23.232323 0.000017 0.000017 0.000017 +24.242424 0.000018 0.000018 0.000018 +25.252525 0.000022 0.000022 0.000022 +26.262626 0.000022 0.000022 0.000022 +27.272727 0.000025 0.000025 0.000025 +28.282828 0.000027 0.000027 0.000027 +29.292929 0.000028 0.000028 0.000028 +30.303030 0.000029 0.000029 0.000029 +31.313131 0.000032 0.000032 0.000032 +32.323232 0.000034 0.000034 0.000034 +33.333333 0.000036 0.000036 0.000036 +34.343434 0.000037 0.000037 0.000037 +35.353535 0.000038 0.000038 0.000038 +36.363636 0.000041 0.000041 0.000041 +37.373737 0.000042 0.000042 0.000042 +38.383838 0.000045 0.000045 0.000045 +39.393939 0.000047 0.000047 0.000047 +40.404040 0.000049 0.000049 0.000049 +41.414141 0.000051 0.000051 0.000051 +42.424242 0.000053 0.000053 0.000053 +43.434343 0.000055 0.000055 0.000055 +44.444444 0.000057 0.000057 0.000057 +45.454545 0.000059 0.000059 0.000059 +46.464646 0.000061 0.000061 0.000061 +47.474747 0.000063 0.000063 0.000063 +48.484848 0.000065 0.000065 0.000065 +49.494949 0.000067 0.000067 0.000067 +50.505051 0.000068 0.000068 0.000068 +51.515152 0.000070 0.000070 0.000070 +52.525253 0.000072 0.000072 0.000072 +53.535354 0.000074 0.000074 0.000074 +54.545455 0.000075 0.000075 0.000075 +55.555556 0.000077 0.000077 0.000077 +56.565657 0.000080 0.000080 0.000080 +57.575758 0.000082 0.000082 0.000082 +58.585859 0.000083 0.000083 0.000083 +59.595960 0.000085 0.000085 0.000085 +60.606061 0.000086 0.000086 0.000086 +61.616162 0.000087 0.000087 0.000087 +62.626263 0.000089 0.000089 0.000089 +63.636364 0.000091 0.000091 0.000091 +64.646465 0.000094 0.000094 0.000094 +65.656566 0.000095 0.000095 0.000095 +66.666667 0.000097 0.000097 0.000097 +67.676768 0.000099 0.000099 0.000099 +68.686869 0.000100 0.000100 0.000100 +69.696970 0.000100 0.000100 0.000100 +70.707071 0.000104 0.000104 0.000104 +71.717172 0.000105 0.000105 0.000105 +72.727273 0.000106 0.000106 0.000106 +73.737374 0.000108 0.000108 0.000108 +74.747475 0.000110 0.000110 0.000110 +75.757576 0.000112 0.000112 0.000112 +76.767677 0.000114 0.000114 0.000114 +77.777778 0.000116 0.000116 0.000116 +78.787879 0.000118 0.000118 0.000118 +79.797980 0.000119 0.000119 0.000119 +80.808081 0.000121 0.000121 0.000121 +81.818182 0.000123 0.000123 0.000123 +82.828283 0.000124 0.000124 0.000124 +83.838384 0.000126 0.000126 0.000126 +84.848485 0.000128 0.000128 0.000128 +85.858586 0.000130 0.000130 0.000130 +86.868687 0.000131 0.000131 0.000131 +87.878788 0.000133 0.000133 0.000133 +88.888889 0.000135 0.000135 0.000135 +89.898990 0.000136 0.000136 0.000136 +90.909091 0.000139 0.000139 0.000139 +91.919192 0.000140 0.000140 0.000140 +92.929293 0.000142 0.000142 0.000142 +93.939394 0.000143 0.000143 0.000143 +94.949495 0.000145 0.000145 0.000145 +95.959596 0.000147 0.000147 0.000147 +96.969697 0.000149 0.000149 0.000149 +97.979798 0.000150 0.000150 0.000150 +98.989899 0.000152 0.000152 0.000152 +100.000000 0.000154 0.000154 0.000154 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/disk.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/disk.gnuplot new file mode 100644 index 00000000..1c41e9b3 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/disk.gnuplot @@ -0,0 +1,10 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/var/home/sem/github/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/disk.png' +set title "pregel pagerank / example-directed (-) — max_mem_4G_hash_parts_4 — disk usage" +set xlabel 'fraction of run (%)' +set ylabel 'disk consumed (GiB)' +set grid +set key top left +set yrange [0:*] +plot '/var/home/sem/github/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/disk.dat' using 1:3:4 with filledcurves lc rgb '#cccccc' title '95% CI', \ + '' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'mean' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/disk.png b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/disk.png new file mode 100644 index 00000000..15373c93 Binary files /dev/null and b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/disk.png differ diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/rss.dat b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/rss.dat new file mode 100644 index 00000000..928a2e9a --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/rss.dat @@ -0,0 +1,101 @@ +# fraction_pct mean ci_low ci_high +0.000000 0.051632 0.051632 0.051632 +1.010101 0.059860 0.059860 0.059860 +2.020202 0.063569 0.063569 0.063569 +3.030303 0.065976 0.065976 0.065976 +4.040404 0.069750 0.069750 0.069750 +5.050505 0.073056 0.073056 0.073056 +6.060606 0.077817 0.077817 0.077817 +7.070707 0.079793 0.079793 0.079793 +8.080808 0.080769 0.080769 0.080769 +9.090909 0.082260 0.082260 0.082260 +10.101010 0.083806 0.083806 0.083806 +11.111111 0.085806 0.085806 0.085806 +12.121212 0.088169 0.088169 0.088169 +13.131313 0.110300 0.110300 0.110300 +14.141414 0.139169 0.139169 0.139169 +15.151515 0.158487 0.158487 0.158487 +16.161616 0.168217 0.168217 0.168217 +17.171717 0.173193 0.173193 0.173193 +18.181818 0.177262 0.177262 0.177262 +19.191919 0.180205 0.180205 0.180205 +20.202020 0.181256 0.181256 0.181256 +21.212121 0.182905 0.182905 0.182905 +22.222222 0.185269 0.185269 0.185269 +23.232323 0.185720 0.185720 0.185720 +24.242424 0.187287 0.187287 0.187287 +25.252525 0.187733 0.187733 0.187733 +26.262626 0.189321 0.189321 0.189321 +27.272727 0.189331 0.189331 0.189331 +28.282828 0.189331 0.189331 0.189331 +29.292929 0.189331 0.189331 0.189331 +30.303030 0.189331 0.189331 0.189331 +31.313131 0.189331 0.189331 0.189331 +32.323232 0.189331 0.189331 0.189331 +33.333333 0.189331 0.189331 0.189331 +34.343434 0.189331 0.189331 0.189331 +35.353535 0.189331 0.189331 0.189331 +36.363636 0.189331 0.189331 0.189331 +37.373737 0.189655 0.189655 0.189655 +38.383838 0.191373 0.191373 0.191373 +39.393939 0.193111 0.193111 0.193111 +40.404040 0.193241 0.193241 0.193241 +41.414141 0.193241 0.193241 0.193241 +42.424242 0.193241 0.193241 0.193241 +43.434343 0.193243 0.193243 0.193243 +44.444444 0.193951 0.193951 0.193951 +45.454545 0.195198 0.195198 0.195198 +46.464646 0.195198 0.195198 0.195198 +47.474747 0.195198 0.195198 0.195198 +48.484848 0.187636 0.187636 0.187636 +49.494949 0.181187 0.181187 0.181187 +50.505051 0.182465 0.182465 0.182465 +51.515152 0.182666 0.182666 0.182666 +52.525253 0.182678 0.182678 0.182678 +53.535354 0.182686 0.182686 0.182686 +54.545455 0.182701 0.182701 0.182701 +55.555556 0.182715 0.182715 0.182715 +56.565657 0.182726 0.182726 0.182726 +57.575758 0.182751 0.182751 0.182751 +58.585859 0.182807 0.182807 0.182807 +59.595960 0.182840 0.182840 0.182840 +60.606061 0.182850 0.182850 0.182850 +61.616162 0.182867 0.182867 0.182867 +62.626263 0.183557 0.183557 0.183557 +63.636364 0.184910 0.184910 0.184910 +64.646465 0.184913 0.184913 0.184913 +65.656566 0.184950 0.184950 0.184950 +66.666667 0.184978 0.184978 0.184978 +67.676768 0.185000 0.185000 0.185000 +68.686869 0.185013 0.185013 0.185013 +69.696970 0.185020 0.185020 0.185020 +70.707071 0.185034 0.185034 0.185034 +71.717172 0.185046 0.185046 0.185046 +72.727273 0.192747 0.192747 0.192747 +73.737374 0.205368 0.205368 0.205368 +74.747475 0.205373 0.205373 0.205373 +75.757576 0.205403 0.205403 0.205403 +76.767677 0.205409 0.205409 0.205409 +77.777778 0.205435 0.205435 0.205435 +78.787879 0.205471 0.205471 0.205471 +79.797980 0.205512 0.205512 0.205512 +80.808081 0.205752 0.205752 0.205752 +81.818182 0.205940 0.205940 0.205940 +82.828283 0.206015 0.206015 0.206015 +83.838384 0.207298 0.207298 0.207298 +84.848485 0.208019 0.208019 0.208019 +85.858586 0.208061 0.208061 0.208061 +86.868687 0.208077 0.208077 0.208077 +87.878788 0.208085 0.208085 0.208085 +88.888889 0.208088 0.208088 0.208088 +89.898990 0.208088 0.208088 0.208088 +90.909091 0.208088 0.208088 0.208088 +91.919192 0.208088 0.208088 0.208088 +92.929293 0.208088 0.208088 0.208088 +93.939394 0.208090 0.208090 0.208090 +94.949495 0.208189 0.208189 0.208189 +95.959596 0.208370 0.208370 0.208370 +96.969697 0.208370 0.208370 0.208370 +97.979798 0.200213 0.200213 0.200213 +98.989899 0.194042 0.194042 0.194042 +100.000000 0.194054 0.194054 0.194054 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/rss.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/rss.gnuplot new file mode 100644 index 00000000..19f08b43 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/rss.gnuplot @@ -0,0 +1,10 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/var/home/sem/github/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/rss.png' +set title "pregel pagerank / example-directed (-) — max_mem_4G_hash_parts_4 — RSS" +set xlabel 'fraction of run (%)' +set ylabel 'RSS (GiB)' +set grid +set key top left +set yrange [0:*] +plot '/var/home/sem/github/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/rss.dat' using 1:3:4 with filledcurves lc rgb '#cccccc' title '95% CI', \ + '' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'mean' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/rss.png b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/rss.png new file mode 100644 index 00000000..961bc38e Binary files /dev/null and b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/rss.png differ diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.dat b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.dat new file mode 100644 index 00000000..9196240e --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.dat @@ -0,0 +1,257 @@ +# time_s density +-2.21583516 0.000133838715 +-2.18446261 0.000151658842 +-2.15309006 0.000171682592 +-2.12171751 0.000194158916 +-2.09034496 0.000219361784 +-2.05897241 0.000247592309 +-2.02759986 0.000279181015 +-1.99622731 0.000314490235 +-1.96485476 0.000353916655 +-1.93348221 0.000397893997 +-1.90210967 0.000446895853 +-1.87073712 0.000501438659 +-1.83936457 0.000562084817 +-1.80799202 0.000629445954 +-1.77661947 0.000704186329 +-1.74524692 0.00078702637 +-1.71387437 0.000878746341 +-1.68250182 0.000980190135 +-1.65112927 0.00109226917 +-1.61975672 0.0012159664 +-1.58838418 0.00135234042 +-1.55701163 0.00150252958 +-1.52563908 0.00166775628 +-1.49426653 0.00184933117 +-1.46289398 0.00204865745 +-1.43152143 0.0022672351 +-1.40014888 0.00250666511 +-1.36877633 0.00276865363 +-1.33740378 0.003055016 +-1.30603123 0.00336768066 +-1.27465869 0.00370869286 +-1.24328614 0.00408021816 +-1.21191359 0.00448454569 +-1.18054104 0.00492409102 +-1.14916849 0.00540139879 +-1.11779594 0.00591914481 +-1.08642339 0.00648013776 +-1.05505084 0.00708732035 +-1.02367829 0.0077437699 +-0.992305744 0.00845269829 +-0.960933195 0.00921745119 +-0.929560646 0.0100415066 +-0.898188097 0.0109284724 +-0.866815548 0.0118820833 +-0.835442999 0.0129061966 +-0.80407045 0.0140047871 +-0.772697901 0.015181941 +-0.741325352 0.0164418483 +-0.709952803 0.0177887949 +-0.678580254 0.0192271524 +-0.647207705 0.0207613678 +-0.615835156 0.0223959509 +-0.584462607 0.0241354612 +-0.553090058 0.0259844931 +-0.521717509 0.0279476597 +-0.49034496 0.0300295757 +-0.458972411 0.0322348384 +-0.427599862 0.0345680077 +-0.396227313 0.0370335848 +-0.364854764 0.0396359899 +-0.333482215 0.0423795377 +-0.302109666 0.0452684134 +-0.270737117 0.0483066457 +-0.239364568 0.0514980806 +-0.207992019 0.0548463531 +-0.17661947 0.0583548582 +-0.145246921 0.0620267224 +-0.113874372 0.065864773 +-0.0825018226 0.069871508 +-0.0511292736 0.0740490661 +-0.0197567245 0.0783991955 +0.0116158245 0.0829232237 +0.0429883735 0.087622028 +0.0743609225 0.0924960049 +0.105733472 0.0975450421 +0.137106021 0.102768491 +0.16847857 0.108165137 +0.199851119 0.113733181 +0.231223668 0.119470207 +0.262596217 0.125373168 +0.293968766 0.131438361 +0.325341315 0.137661412 +0.356713864 0.144037262 +0.388086413 0.150560152 +0.419458962 0.157223617 +0.450831511 0.164020479 +0.48220406 0.170942841 +0.513576609 0.177982093 +0.544949158 0.185128915 +0.576321707 0.192373281 +0.607694256 0.199704476 +0.639066805 0.207111111 +0.670439354 0.214581141 +0.701811903 0.222101888 +0.733184452 0.229660076 +0.764557001 0.237241854 +0.79592955 0.244832837 +0.827302099 0.252418146 +0.858674648 0.259982449 +0.890047197 0.267510012 +0.921419746 0.274984746 +0.952792295 0.282390262 +0.984164844 0.289709929 +1.01553739 0.296926935 +1.04690994 0.304024346 +1.07828249 0.310985171 +1.10965504 0.317792432 +1.14102759 0.324429227 +1.17240014 0.330878802 +1.20377269 0.337124619 +1.23514524 0.343150427 +1.26651779 0.348940332 +1.29789033 0.354478866 +1.32926288 0.359751056 +1.36063543 0.36474249 +1.39200798 0.369439383 +1.42338053 0.373828643 +1.45475308 0.377897926 +1.48612563 0.381635701 +1.51749818 0.385031297 +1.54887073 0.38807496 +1.58024328 0.390757895 +1.61161582 0.393072312 +1.64298837 0.395011461 +1.67436092 0.396569666 +1.70573347 0.397742352 +1.73710602 0.398526068 +1.76847857 0.398918505 +1.79985112 0.398918505 +1.83122367 0.398526068 +1.86259622 0.397742352 +1.89396877 0.396569666 +1.92534131 0.395011461 +1.95671386 0.393072312 +1.98808641 0.390757895 +2.01945896 0.38807496 +2.05083151 0.385031297 +2.08220406 0.381635701 +2.11357661 0.377897926 +2.14494916 0.373828643 +2.17632171 0.369439383 +2.20769426 0.36474249 +2.2390668 0.359751056 +2.27043935 0.354478866 +2.3018119 0.348940332 +2.33318445 0.343150427 +2.364557 0.337124619 +2.39592955 0.330878802 +2.4273021 0.324429227 +2.45867465 0.317792432 +2.4900472 0.310985171 +2.52141975 0.304024346 +2.5527923 0.296926935 +2.58416484 0.289709929 +2.61553739 0.282390262 +2.64690994 0.274984746 +2.67828249 0.267510012 +2.70965504 0.259982449 +2.74102759 0.252418146 +2.77240014 0.244832837 +2.80377269 0.237241854 +2.83514524 0.229660076 +2.86651779 0.222101888 +2.89789033 0.214581141 +2.92926288 0.207111111 +2.96063543 0.199704476 +2.99200798 0.192373281 +3.02338053 0.185128915 +3.05475308 0.177982093 +3.08612563 0.170942841 +3.11749818 0.164020479 +3.14887073 0.157223617 +3.18024328 0.150560152 +3.21161582 0.144037262 +3.24298837 0.137661412 +3.27436092 0.131438361 +3.30573347 0.125373168 +3.33710602 0.119470207 +3.36847857 0.113733181 +3.39985112 0.108165137 +3.43122367 0.102768491 +3.46259622 0.0975450421 +3.49396877 0.0924960049 +3.52534131 0.087622028 +3.55671386 0.0829232237 +3.58808641 0.0783991955 +3.61945896 0.0740490661 +3.65083151 0.069871508 +3.68220406 0.065864773 +3.71357661 0.0620267224 +3.74494916 0.0583548582 +3.77632171 0.0548463531 +3.80769426 0.0514980806 +3.8390668 0.0483066457 +3.87043935 0.0452684134 +3.9018119 0.0423795377 +3.93318445 0.0396359899 +3.964557 0.0370335848 +3.99592955 0.0345680077 +4.0273021 0.0322348384 +4.05867465 0.0300295757 +4.0900472 0.0279476597 +4.12141975 0.0259844931 +4.1527923 0.0241354612 +4.18416484 0.0223959509 +4.21553739 0.0207613678 +4.24690994 0.0192271524 +4.27828249 0.0177887949 +4.30965504 0.0164418483 +4.34102759 0.015181941 +4.37240014 0.0140047871 +4.40377269 0.0129061966 +4.43514524 0.0118820833 +4.46651779 0.0109284724 +4.49789033 0.0100415066 +4.52926288 0.00921745119 +4.56063543 0.00845269829 +4.59200798 0.0077437699 +4.62338053 0.00708732035 +4.65475308 0.00648013776 +4.68612563 0.00591914481 +4.71749818 0.00540139879 +4.74887073 0.00492409102 +4.78024328 0.00448454569 +4.81161582 0.00408021816 +4.84298837 0.00370869286 +4.87436092 0.00336768066 +4.90573347 0.003055016 +4.93710602 0.00276865363 +4.96847857 0.00250666511 +4.99985112 0.0022672351 +5.03122367 0.00204865745 +5.06259622 0.00184933117 +5.09396877 0.00166775628 +5.12534131 0.00150252958 +5.15671386 0.00135234042 +5.18808641 0.0012159664 +5.21945896 0.00109226917 +5.25083151 0.000980190135 +5.28220406 0.000878746341 +5.31357661 0.00078702637 +5.34494916 0.000704186329 +5.37632171 0.000629445954 +5.40769426 0.000562084817 +5.4390668 0.000501438659 +5.47043935 0.000446895853 +5.5018119 0.000397893997 +5.53318445 0.000353916655 +5.564557 0.000314490235 +5.59592955 0.000279181015 +5.6273021 0.000247592309 +5.65867465 0.000219361784 +5.6900472 0.000194158916 +5.72141975 0.000171682592 +5.7527923 0.000151658842 +5.78416484 0.000133838715 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.gnuplot new file mode 100644 index 00000000..d636296a --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.gnuplot @@ -0,0 +1,19 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/var/home/sem/github/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.png' +set title "pregel pagerank / example-directed (-) — max_mem_4G_hash_parts_4\nmedian=1.784s mean=1.784s std=0.000s min=1.784s max=1.784s p90=1.784s p95=1.784s runs=1" +set xlabel 'wall time (s)' +set ylabel 'probability density (1/s)' +set tmargin 5 +set yrange [0:0.518594] +set xrange [-2.215835:5.784165] +set grid y +set key top right +set arrow from 1.784165,0 to 1.784165,0.518594 nohead lc rgb 'red' lw 2 +set label 'median 1.784s' at 1.784165,0.518594 offset char 0,1 tc rgb 'red' +set arrow from 1.784165,0 to 1.784165,0.518594 nohead lc rgb 'orange' lw 1 dt 2 +set label 'p90 1.784s' at 1.784165,0.518594 offset char 0,1 tc rgb 'orange' +set arrow from 1.784165,0 to 1.784165,0.518594 nohead lc rgb 'orange' lw 1 dt 3 +set label 'p95 1.784s' at 1.784165,0.518594 offset char 0,1 tc rgb 'orange' +set arrow from 1.784165,0 to 1.784165,0.0159567 nohead lc rgb '#666666' lw 1 +plot '/var/home/sem/github/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.dat' using 1:2 with filledcurves y=0 lc rgb '#4682b4' fs transparent solid 0.25 title 'kernel density', \ + '/var/home/sem/github/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.dat' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'KDE (runs)' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.png b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.png new file mode 100644 index 00000000..da9ba701 Binary files /dev/null and b/examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.png differ diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/benchmark.json b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/benchmark.json new file mode 100644 index 00000000..332afdc4 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/benchmark.json @@ -0,0 +1,3985 @@ +{ + "algorithm": "pagerank", + "engine": "pregel", + "dataset": "graph500-24", + "size_class": "M", + "params": { + "max_memory": "24G", + "use_smj": true, + "join": "smj", + "partitions": 8, + "threads": 8, + "tol": 1e-05, + "damping": 0.85, + "max_iter": 0, + "nutmeg_kernel": null, + "nutmeg_memory": null, + "sail_binary": "/home/ubuntu/sail/target/release/sail", + "work_dir": "/home/ubuntu/nvm/wd/pregel_graph500-24", + "runs": 3, + "warmup": 1, + "target_samples": 300, + "align": "dtw", + "disk_mode": "du" + }, + "graph": { + "vertices": 8000000, + "edges": 260000000, + "nodes_str": "8M", + "edges_str": "260M" + }, + "warmup": { + "wall_time_s": 175.0910653359997, + "sampling_interval_s": null + }, + "runs": [ + { + "index": 0, + "wall_time_s": 172.08866706900062, + "peak_rss_kb": 8048064.0, + "peak_disk_bytes": 7662424064.0, + "n_samples": 295, + "details": { + "iterations": 19, + "active_counts": [ + 7718333, + 7642010, + 6725245, + 5356667, + 3971201, + 2742255, + 1881827, + 1298025, + 816697, + 477655, + 271390, + 145068, + 65264, + 24554, + 7675, + 1436, + 162, + 11, + 0 + ], + "wall_time_s": 172.08866706900062, + "result": "/home/ubuntu/nvm/wd/pregel_graph500-24/run_0/result" + } + }, + { + "index": 1, + "wall_time_s": 181.19336667599964, + "peak_rss_kb": 8510352.0, + "peak_disk_bytes": 7684475904.0, + "n_samples": 311, + "details": { + "iterations": 19, + "active_counts": [ + 7718333, + 7642010, + 6725245, + 5356667, + 3971201, + 2742255, + 1881827, + 1298025, + 816697, + 477655, + 271390, + 145068, + 65264, + 24554, + 7675, + 1436, + 162, + 11, + 0 + ], + "wall_time_s": 181.19336667599964, + "result": "/home/ubuntu/nvm/wd/pregel_graph500-24/run_1/result" + } + }, + { + "index": 2, + "wall_time_s": 185.04314178599998, + "peak_rss_kb": 8153180.0, + "peak_disk_bytes": 7684820992.0, + "n_samples": 317, + "details": { + "iterations": 19, + "active_counts": [ + 7718333, + 7642010, + 6725245, + 5356667, + 3971201, + 2742255, + 1881827, + 1298025, + 816697, + 477655, + 271390, + 145068, + 65264, + 24554, + 7675, + 1436, + 162, + 11, + 0 + ], + "wall_time_s": 185.04314178599998, + "result": "/home/ubuntu/nvm/wd/pregel_graph500-24/run_2/result" + } + } + ], + "stats": { + "wall_time_s": { + "n": 3, + "median": 181.19336667599964, + "mean": 179.44172517700008, + "std": 6.6525025181586335, + "min": 172.08866706900062, + "max": 185.04314178599998, + "p90": 184.2731867639999, + "p95": 184.65816427499993 + }, + "peak_rss_kb": { + "n": 3, + "median": 8153180.0, + "mean": 8237198.666666667, + "std": 242326.02212171382, + "min": 8048064.0, + "max": 8510352.0, + "p90": 8438917.6, + "p95": 8474634.799999999 + }, + "peak_disk_bytes": { + "n": 3, + "median": 7684475904.0, + "mean": 7677240320.0, + "std": 12832414.146414071, + "min": 7662424064.0, + "max": 7684820992.0, + "p90": 7684751974.4, + "p95": 7684786483.2 + }, + "medges_per_sec": 1.4349311167936858 + }, + "series": { + "alignment": "dtw", + "ref_run": 1, + "band_frac": 0.25, + "grid_size": 100, + "rss_bands_gib": [ + [ + 0.056491851806640625, + 0.05617969668862427, + 0.05680400692465698 + ], + [ + 7.571379437884168, + 7.498734804643311, + 7.644024071125026 + ], + [ + 5.569145818061173, + 5.524585619303691, + 5.613706016818655 + ], + [ + 5.559722464399283, + 5.510699607788042, + 5.608745321010525 + ], + [ + 5.555005152390584, + 5.494441744856709, + 5.615568559924459 + ], + [ + 5.5475099205900475, + 5.47164830861235, + 5.623371532567745 + ], + [ + 5.435158034862439, + 5.373667855259324, + 5.496648214465553 + ], + [ + 3.0997739997042166, + 1.1041941131267983, + 5.095353886281635 + ], + [ + 1.842569635469306, + -0.6918905829657855, + 4.377029853904397 + ], + [ + 4.176848835284002, + 3.918685442668539, + 4.435012227899464 + ], + [ + 3.01215662248175, + 0.14195769340074227, + 5.882355551562759 + ], + [ + 3.6195864528195814, + 1.4017894978695304, + 5.837383407769632 + ], + [ + 1.3026237162865317, + 1.202382069568089, + 1.4028653630049746 + ], + [ + 2.5941508385134546, + -1.3715555879755694, + 6.559857265002479 + ], + [ + 2.5545692146209156, + -1.4720554001512207, + 6.581193829393052 + ], + [ + 3.478878431560046, + -0.14383795883970096, + 7.101594821959793 + ], + [ + 3.504458795884569, + -0.14034485777768868, + 7.149262449546827 + ], + [ + 3.4087735233948124, + -0.16223156789056592, + 6.979778614680191 + ], + [ + 1.3136799582884053, + 1.045451413586263, + 1.5819085029905477 + ], + [ + 1.4077988752715427, + 1.1789988987187687, + 1.6365988518243166 + ], + [ + 1.4072505446108243, + 1.2325402737454163, + 1.5819608154762324 + ], + [ + 3.761479517985901, + 1.0500042568157952, + 6.472954779156007 + ], + [ + 3.9343039225434917, + -0.27421117824837493, + 8.142819023335358 + ], + [ + 3.2454393956538765, + -0.0031582943777301864, + 6.494037085685483 + ], + [ + 1.224420058002566, + 1.1628240577601507, + 1.286016058244981 + ], + [ + 1.31240272199834, + 1.0187780521558565, + 1.6060273918408237 + ], + [ + 1.4031504286592706, + 1.3251196843989237, + 1.4811811729196176 + ], + [ + 3.7082831907153406, + 2.219034248894088, + 5.197532132536593 + ], + [ + 3.7374330843069408, + -0.01988197069178632, + 7.494748139305668 + ], + [ + 4.833541779636875, + 4.097462571302538, + 5.569620987971213 + ], + [ + 1.226616269197505, + 1.1707673418267535, + 1.2824651965682567 + ], + [ + 1.2205525142009297, + 1.1129131792198987, + 1.3281918491819606 + ], + [ + 1.3983114306482085, + 1.248321928241272, + 1.548300933055145 + ], + [ + 3.512186873968885, + 1.565020152062228, + 5.459353595875542 + ], + [ + 4.531799070974359, + 3.32498333999452, + 5.738614801954198 + ], + [ + 4.155202519059195, + 1.8867567032488801, + 6.42364833486951 + ], + [ + 1.3846562237169866, + 0.9024103020055745, + 1.8669021454283987 + ], + [ + 1.3980532176206635, + 0.9376425169706899, + 1.858463918270637 + ], + [ + 1.7335331716501505, + 0.814540737920519, + 2.652525605379782 + ], + [ + 4.798824520048986, + 3.7602332559544864, + 5.837415784143485 + ], + [ + 4.704021856463128, + 4.193630340218787, + 5.214413372707469 + ], + [ + 2.090797908222226, + 0.5893941560064067, + 3.592201660438046 + ], + [ + 1.590228518662629, + 1.2461032027929946, + 1.9343538345322635 + ], + [ + 2.441607673999261, + -0.6489706283277661, + 5.532185976326288 + ], + [ + 4.7955227543721834, + 3.8177933185109336, + 5.773252190233434 + ], + [ + 4.520732682698773, + 3.930932651656321, + 5.110532713741224 + ], + [ + 1.5698186047682752, + 1.4189558866071306, + 1.7206813229294198 + ], + [ + 1.2567995881098593, + 0.9797665196139181, + 1.5338326566058003 + ], + [ + 2.781613014333257, + 2.18355770282556, + 3.379668325840954 + ], + [ + 5.074490602239615, + 4.697160920593594, + 5.4518202838856356 + ], + [ + 5.033019365242023, + 4.7388124622559475, + 5.327226268228098 + ], + [ + 1.3383611335527856, + 0.9162424044063808, + 1.7604798626991904 + ], + [ + 2.2556975082671697, + 0.5971390844374409, + 3.9142559320968986 + ], + [ + 4.995931818799286, + 4.302635618995211, + 5.689228018603361 + ], + [ + 4.782043949276829, + 4.286806706477714, + 5.277281192075945 + ], + [ + 2.6797738333737797, + -0.9963768090666929, + 6.355924475814252 + ], + [ + 1.3073479990847616, + 1.2372595216987605, + 1.3774364764707627 + ], + [ + 4.406394859871791, + 2.8459109731531007, + 5.966878746590481 + ], + [ + 4.650117868151347, + 3.805372246021021, + 5.4948634902816735 + ], + [ + 4.029806309969042, + 2.262297353071114, + 5.7973152668669705 + ], + [ + 2.245762135944753, + -1.2874507340610077, + 5.778975005950514 + ], + [ + 4.239830224122437, + 2.0331455503464944, + 6.446514897898378 + ], + [ + 4.927762163091381, + 4.61236694950299, + 5.243157376679772 + ], + [ + 5.127685347326678, + 4.955696575287524, + 5.299674119365832 + ], + [ + 1.0836101665951778, + 0.6192608336638021, + 1.5479594995265535 + ], + [ + 2.565417330159621, + -1.6302371281365837, + 6.761071788455826 + ], + [ + 4.435220717650067, + 3.763279462292423, + 5.1071619730077105 + ], + [ + 4.189174497103854, + 3.3009718265180403, + 5.077377167689667 + ], + [ + 2.562474339440176, + -0.913871900941984, + 6.038820579822335 + ], + [ + 1.2110500376759308, + 1.0007793475626099, + 1.4213207277892517 + ], + [ + 4.055222073206453, + 2.594754875221623, + 5.515689271191283 + ], + [ + 4.729648160349668, + 4.083603491551324, + 5.3756928291480115 + ], + [ + 4.11159214309139, + 1.8650008787478347, + 6.358183407434946 + ], + [ + 1.2263632443393497, + 0.1067417127723056, + 2.345984775906394 + ], + [ + 1.5820286214705723, + 1.0223218330804955, + 2.141735409860649 + ], + [ + 5.027909657618237, + 4.559430265748447, + 5.496389049488028 + ], + [ + 4.799471337933025, + 3.7164555112533426, + 5.882487164612708 + ], + [ + 3.470388918200763, + -0.4375248702768961, + 7.378302706678422 + ], + [ + 1.109145695366103, + 0.7552515835777711, + 1.4630398071544348 + ], + [ + 4.351461675919919, + 3.6323198116408513, + 5.070603540198986 + ], + [ + 4.263432767001757, + 4.128493114681129, + 4.398372419322385 + ], + [ + 2.905401328873197, + 0.09393684305974803, + 5.716865814686646 + ], + [ + 1.1368713303583455, + 0.9764929200382291, + 1.297249740678462 + ], + [ + 2.626476319567602, + 0.2044523142940955, + 5.0485003248411084 + ], + [ + 3.0859183551175544, + -0.5025679293087597, + 6.6744046395438685 + ], + [ + 2.905796779541836, + -0.1956846926408926, + 6.007278251724564 + ], + [ + 1.8658652344993645, + -0.04602746302347893, + 3.777757932022208 + ], + [ + 2.779255324792709, + 0.00018864021959252852, + 5.558322009365826 + ], + [ + 3.2347652753098117, + 1.3085599542590538, + 5.16097059636057 + ], + [ + 3.0794805455821153, + 1.6012159511196733, + 4.557745140044557 + ], + [ + 2.22168435595975, + 0.6216738039820509, + 3.8216949079374487 + ], + [ + 4.274354258320121, + 2.5128613175383325, + 6.035847199101909 + ], + [ + 4.4881266194565335, + 3.116485987853702, + 5.859767251059365 + ], + [ + 3.0846197236444852, + -0.26927915749265807, + 6.4385186047816285 + ], + [ + 1.2046379942524725, + 0.863924697478063, + 1.545351291026882 + ], + [ + 3.98249729641579, + 1.6012336056838312, + 6.363760987147749 + ], + [ + 4.9895732178590855, + 4.045814809408312, + 5.933331626309859 + ], + [ + 3.648429401917712, + -0.6469099556161644, + 7.943768759451588 + ], + [ + 2.4569870349649325, + -1.8379444679027697, + 6.751918537832635 + ], + [ + 1.2564331401183038, + 0.9724754505475759, + 1.5403908296890316 + ] + ], + "disk_bands_gib": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.03389232093906174, + -0.006603627186265837, + 0.07438826906438932 + ], + [ + 0.19938484454757602, + 0.16920159160288295, + 0.22956809749226909 + ], + [ + 0.33992778929907325, + 0.32982344286570103, + 0.35003213573244546 + ], + [ + 0.48853416621478424, + 0.44727567181578626, + 0.5297926606137822 + ], + [ + 0.6340364978687124, + 0.61319679401281, + 0.6548762017246148 + ], + [ + 0.8103349486696921, + 0.7896647079192045, + 0.8310051894201798 + ], + [ + 0.8249666516021454, + 0.8071704705322438, + 0.8427628326720471 + ], + [ + 1.479981840830818, + -0.5202887044733477, + 3.4802523861349837 + ], + [ + 3.4317220052083335, + 1.2827979931249205, + 5.5806460172917465 + ], + [ + 4.175321261088054, + 2.243632711390659, + 6.107009810785448 + ], + [ + 3.561407725016276, + -0.3237536964515262, + 7.446569146484078 + ], + [ + 4.132893974172209, + 2.3854937587487495, + 5.880294189595668 + ], + [ + 3.423278574446126, + -0.576251041084213, + 7.422808189976465 + ], + [ + 3.4656423770380855, + -0.39924371003481296, + 7.330528464110984 + ], + [ + 4.107952837446614, + 2.2816417741292714, + 5.934263900763957 + ], + [ + 4.781066024600748, + 4.404005865170942, + 5.158126184030555 + ], + [ + 4.651204994487236, + 3.226051494409611, + 6.07635849456486 + ], + [ + 3.1842222557964823, + -0.3527397030281483, + 6.721184214621113 + ], + [ + 1.1409230511334518, + 0.9067097590781305, + 1.3751363431887733 + ], + [ + 1.5550301791617367, + 0.2352351980912788, + 2.8748251602321946 + ], + [ + 3.400454283383439, + -0.1254622245641066, + 6.926370791330984 + ], + [ + 5.182403296293021, + 4.722893764316735, + 5.641912828269307 + ], + [ + 5.148460922638937, + 4.884954297896982, + 5.4119675473808915 + ], + [ + 4.815579562856253, + 3.8129701889075656, + 5.81818893680494 + ], + [ + 1.983445167541504, + 0.25514430438767843, + 3.7117460306953296 + ], + [ + 2.062959150784912, + 0.5172178482970073, + 3.6087004532728164 + ], + [ + 3.862391037799318, + 2.618081424210098, + 5.106700651388538 + ], + [ + 4.354382724368302, + 2.6445964458213442, + 6.064169002915261 + ], + [ + 5.482884523440899, + 5.242131512702063, + 5.723637534179735 + ], + [ + 4.275177275445418, + 2.4917934534236457, + 6.05856109746719 + ], + [ + 1.7444379442203575, + 1.4429659369189458, + 2.0459099515217694 + ], + [ + 1.7535651524861653, + 1.5424551605818568, + 1.9646751443904737 + ], + [ + 3.4320511159711686, + 2.5368829973722793, + 4.327219234570058 + ], + [ + 5.26236831837219, + 3.9371087658605006, + 6.58762787088388 + ], + [ + 5.1943637117323185, + 3.7970590344970967, + 6.59166838896754 + ], + [ + 3.1575177915126393, + 0.8706362354961859, + 5.444399347529092 + ], + [ + 1.8962862845339448, + 1.765247880703061, + 2.0273246883648284 + ], + [ + 2.647569739253274, + 1.362448789787818, + 3.93269068871873 + ], + [ + 4.088719677454724, + 3.4820575577614052, + 4.695381797148042 + ], + [ + 5.887425953490372, + 5.712964067281053, + 6.061887839699692 + ], + [ + 2.4961337383306907, + 1.6748299770918056, + 3.317437499569576 + ], + [ + 3.407641574811675, + -0.9819232019040558, + 7.7972063515274055 + ], + [ + 3.0174074503882014, + 0.9254419802342562, + 5.109372920542146 + ], + [ + 4.102381604328923, + 3.812321317494033, + 4.392441891163813 + ], + [ + 5.85313138156054, + 5.501845854199745, + 6.204416908921335 + ], + [ + 2.169299183223699, + 1.8662204062930488, + 2.472377960154349 + ], + [ + 2.302337328592936, + 2.0416015758461947, + 2.5630730813396774 + ], + [ + 3.9221476984962766, + 3.064548094094434, + 4.779747302898119 + ], + [ + 5.498608096076855, + 5.414599535341456, + 5.582616656812253 + ], + [ + 2.8072713837669343, + 2.2693695679166836, + 3.345173199617185 + ], + [ + 2.4042849889191564, + 2.1368307614163475, + 2.6717392164219653 + ], + [ + 3.646152790394599, + 2.0914516206454614, + 5.2008539601437365 + ], + [ + 4.4890825219856785, + 4.152444874363066, + 4.8257201696082905 + ], + [ + 4.877536332152857, + 3.2800298263079624, + 6.475042837997752 + ], + [ + 2.445704527107977, + 2.2346946403638728, + 2.656714413852081 + ], + [ + 2.960545253168435, + 1.3878963265008688, + 4.533194179836001 + ], + [ + 4.518883831762273, + 4.12683605693786, + 4.910931606586686 + ], + [ + 5.832929739688542, + 4.134282135555508, + 7.531577343821575 + ], + [ + 3.215650901037371, + 1.1701980202746514, + 5.261103781800091 + ], + [ + 3.748249304238769, + 1.8390834195714885, + 5.657415188906049 + ], + [ + 4.550028225912053, + 4.335234738292735, + 4.76482171353137 + ], + [ + 5.299453902693578, + 4.300572400073051, + 6.298335405314106 + ], + [ + 3.0825644087302373, + 2.3028657162255484, + 3.862263101234926 + ], + [ + 2.910429313240043, + 2.0766505629260323, + 3.7442080635540536 + ], + [ + 3.392157689843637, + 1.2010469742170216, + 5.583268405470252 + ], + [ + 4.677089826379281, + 4.512056405607261, + 4.842123247151301 + ], + [ + 5.9976020507804835, + 4.040157378960876, + 7.955046722600091 + ], + [ + 2.747255007425944, + 2.5988074480044987, + 2.895702566847389 + ], + [ + 2.900963475347522, + 2.5293105745099913, + 3.272616376185053 + ], + [ + 4.1700622704832915, + 2.511256989025219, + 5.828867551941364 + ], + [ + 5.663513379706557, + 4.265155092604856, + 7.0618716668082575 + ], + [ + 3.677859879617825, + 1.66026350585711, + 5.69545625337854 + ], + [ + 2.8881311011453596, + 2.7592000982873452, + 3.017062104003374 + ], + [ + 3.389466598126431, + 2.375265065720546, + 4.403668130532316 + ], + [ + 4.040298297015457, + 2.7722103000108884, + 5.308386294020025 + ], + [ + 5.497495980522469, + 4.458996138285237, + 6.535995822759701 + ], + [ + 2.9089261551659082, + 2.755275187894545, + 3.0625771224372715 + ], + [ + 2.981400807698568, + 2.840536349406377, + 3.122265265990759 + ], + [ + 4.92450218559179, + 4.780640465150873, + 5.068363906032707 + ], + [ + 6.147788534976926, + 4.494617467501447, + 7.800959602452405 + ], + [ + 3.7055615017958314, + 1.466009772019985, + 5.945113231571678 + ], + [ + 3.742458892981117, + 1.5594109143448285, + 5.925506871617406 + ], + [ + 4.386352770646319, + 2.3858747982647266, + 6.386830743027911 + ], + [ + 4.993643189103536, + 1.6807984377410277, + 8.306487940466045 + ], + [ + 3.7424792380332, + 1.5594671656295973, + 5.9254913104368026 + ], + [ + 3.767938209692543, + 1.6287945544702476, + 5.907081864914838 + ], + [ + 3.7150301785591693, + 1.689455533748542, + 5.740604823369797 + ], + [ + 4.369531149042372, + 0.2626117672341328, + 8.47645053085061 + ], + [ + 3.0721192212227435, + 2.9686082830563505, + 3.1756301593891365 + ], + [ + 5.041917868568048, + 1.5238692299171643, + 8.559966507218933 + ], + [ + 5.04913001600733, + 5.014584802086932, + 5.083675229927727 + ], + [ + 6.256223700971149, + 5.934835503120727, + 6.577611898821571 + ], + [ + 3.134291795567412, + 3.1339768927233256, + 3.1346066984114986 + ], + [ + 3.2924720617032244, + 3.03200929526352, + 3.552934828142929 + ], + [ + 4.976089357712095, + 4.054146942875622, + 5.898031772548567 + ], + [ + 5.029463974786952, + 4.384388544843729, + 5.674539404730176 + ], + [ + 4.477094785561155, + 1.4978011492058894, + 7.4563884219164205 + ], + [ + 3.2360158957946132, + 3.1552993569973347, + 3.316732434591892 + ] + ] + }, + "raw_series": [ + { + "t": [ + 0.00011979600003542146, + 0.5855214789999081, + 1.1695778729999802, + 1.75359693000064, + 2.337629429000117, + 2.9217026720007198, + 3.5057288560001325, + 4.0898730910003, + 4.6738849640005355, + 5.258018550000088, + 5.842096479000247, + 6.42609800199989, + 7.010105657000167, + 7.5941637160003665, + 8.178292246000638, + 8.76232950800022, + 9.346448567000152, + 9.930578103000698, + 10.514701392000461, + 11.098863975000313, + 11.68294413700005, + 12.267040311000528, + 12.851209265000762, + 13.43537322100019, + 14.01952543400057, + 14.603629137000098, + 15.187671190999936, + 15.771932849000223, + 16.356125280000015, + 16.940295833000164, + 17.5246204820005, + 18.108998702000463, + 18.693213893000575, + 19.277591396999924, + 19.862012543000674, + 20.446728335000444, + 21.031049129000166, + 21.615335623000647, + 22.199789293999856, + 22.784214255000734, + 23.368582424000124, + 23.952840717000072, + 24.537121369000488, + 25.121312893999857, + 25.70540384800006, + 26.289537493999887, + 26.873869403000754, + 27.458185415000116, + 28.042440684000212, + 28.626727903000756, + 29.2111268510007, + 29.795431567999913, + 30.37974593099989, + 30.964247145000627, + 31.54882495700076, + 32.133352277000085, + 32.71771724000064, + 33.30234234100044, + 33.88684935499987, + 34.47119847100021, + 35.05547907300024, + 35.63977841199994, + 36.22393055200064, + 36.808253429000615, + 37.39243784200062, + 37.976876221000566, + 38.56132476000039, + 39.145701847000055, + 39.73004393000065, + 40.314558258000034, + 40.89898313499998, + 41.483390846000475, + 42.067953976000354, + 42.65261062300033, + 43.23707419099992, + 43.82168687000012, + 44.40630427399992, + 44.99074074600048, + 45.57533193600011, + 46.1596997659999, + 46.74409288100014, + 47.328443876000165, + 47.9126347750007, + 48.49704182500045, + 49.08152448200053, + 49.66600882200055, + 50.250430662000326, + 50.834879996999916, + 51.419442430000345, + 52.00390176400015, + 52.58836349400008, + 53.17306566000025, + 53.75771255900054, + 54.34223320199999, + 54.92670981599986, + 55.511413432000154, + 56.096176392000416, + 56.680769478, + 57.26519231800012, + 57.849446062000425, + 58.43399473200043, + 59.02117812300003, + 59.60578535900004, + 60.1903062880001, + 60.77484156100036, + 61.3594933760005, + 61.94405206600004, + 62.52863516100024, + 63.11333245700007, + 63.698177792000024, + 64.28281017400059, + 64.86767032199987, + 65.45247418600047, + 66.03728809600034, + 66.62179045199991, + 67.20607934200052, + 67.79065532500044, + 68.37506937500075, + 68.95981977500014, + 69.54439542399996, + 70.12901554600012, + 70.71383463000075, + 71.29850407000049, + 71.88316541600034, + 72.46781491100046, + 73.05220056600047, + 73.63696247900043, + 74.22183057300026, + 74.80647398200017, + 75.39120590099992, + 75.97553607400005, + 76.5601954470003, + 77.14466893400004, + 77.72907117400064, + 78.31376466700021, + 78.89841457700004, + 79.4832107960001, + 80.06801222900049, + 80.65274834299998, + 81.23745449600028, + 81.82239040200056, + 82.40721467999992, + 82.9921609030007, + 83.5770565769999, + 84.1616924380005, + 84.74630503300068, + 85.33106687700001, + 85.91596477200073, + 86.50073808300021, + 87.08550025000022, + 87.67044702200019, + 88.25533081600042, + 88.84012912700018, + 89.4251319390005, + 90.01563545600038, + 90.60060092399999, + 91.18539553200026, + 91.77023139199991, + 92.35507827800029, + 92.94008611400022, + 93.52501639599996, + 94.10985729200002, + 94.69470276100037, + 95.27957226800027, + 95.86444264400052, + 96.44930097700035, + 97.03389861699998, + 97.61896139100008, + 98.20396164900012, + 98.78842228200028, + 99.37291520400049, + 99.95783356500033, + 100.54270141300003, + 101.12776066800052, + 101.71276824400047, + 102.29770624499997, + 102.88269376600056, + 103.46776911899997, + 104.05274757799998, + 104.63774298499993, + 105.22297149000042, + 105.80811146100041, + 106.3926018330003, + 106.97726745700038, + 107.56226838600014, + 108.1468524310003, + 108.7318784449999, + 109.31688389700048, + 109.90199573200061, + 110.48702759400021, + 111.07208416600042, + 111.65717815100015, + 112.24235487700025, + 112.82703955300076, + 113.41161511100017, + 113.99683242900028, + 114.58189389200015, + 115.16725596300057, + 115.75242601800073, + 116.33751180000036, + 116.92294380600015, + 117.50796861300023, + 118.09308481100015, + 118.67821210300008, + 119.26342319100058, + 119.84868714500044, + 120.43334279900046, + 121.0180088750003, + 121.6029777900003, + 122.18775040499986, + 122.77291250300004, + 123.35823041500043, + 123.94359101000009, + 124.52883687300073, + 125.11403513200003, + 125.69950550200065, + 126.28485076400011, + 126.87012218100062, + 127.454758846, + 128.0394557440004, + 128.6246244920003, + 129.20978117899995, + 129.7950892530007, + 130.38032340500013, + 130.96591146600076, + 131.55067916000007, + 132.13595893500042, + 132.72127428400017, + 133.30674577800073, + 133.8922939410004, + 134.47700961100054, + 135.06176200000027, + 135.64690626399988, + 136.23248433200024, + 136.81800591699994, + 137.4033416760003, + 137.9888352170001, + 138.5739260090004, + 139.15928294200057, + 139.74465088200031, + 140.33038094699987, + 140.91592358300022, + 141.50150762200064, + 142.08662733300025, + 142.67173980000007, + 143.2573730210006, + 143.84273586100062, + 144.42813901499994, + 145.01396909200048, + 145.59969723199993, + 146.18518315800065, + 146.77074747999995, + 147.3563121699999, + 147.9419071150005, + 148.5267206870003, + 149.1115844120004, + 149.6967425490002, + 150.28196496000055, + 150.86767953400067, + 151.45315365700026, + 152.03882339100073, + 152.62467420600024, + 153.21030258800056, + 153.79583183000068, + 154.3807537720004, + 154.96645398800047, + 155.55146894800055, + 156.1366261990006, + 156.72149951100073, + 157.30647695900007, + 157.89198534000025, + 158.47768491400075, + 159.06325767199996, + 159.6488402060004, + 160.23449107099987, + 160.82042309100052, + 161.40622509900004, + 161.99185469200074, + 162.5778200300001, + 163.1635847540001, + 163.7485524570002, + 164.3335305999999, + 164.91883286900065, + 165.50434342500012, + 166.09027890400012, + 166.67594959400049, + 167.26161482800035, + 167.84772609800075, + 168.43340897400049, + 169.01912717600044, + 169.60489103000054, + 170.19000581399996, + 170.77498299299987, + 171.3600052290003, + 171.94524466800067 + ], + "rss_kb": [ + 59044.0, + 2097164.0, + 4971508.0, + 8048064.0, + 7758760.0, + 5946768.0, + 5863812.0, + 5838176.0, + 5860908.0, + 5854124.0, + 5857228.0, + 5835868.0, + 5842656.0, + 5852268.0, + 5831808.0, + 5839688.0, + 5807860.0, + 5755728.0, + 5735712.0, + 5548664.0, + 5270436.0, + 4542520.0, + 2335800.0, + 997912.0, + 1111692.0, + 1042816.0, + 2799544.0, + 3856084.0, + 4790984.0, + 5324696.0, + 4200740.0, + 4340396.0, + 5411980.0, + 5036072.0, + 1459588.0, + 1364268.0, + 1268028.0, + 1274720.0, + 1283184.0, + 1552280.0, + 1500176.0, + 1425804.0, + 1387864.0, + 1513120.0, + 1330076.0, + 1479740.0, + 3917980.0, + 4483376.0, + 5671812.0, + 5268132.0, + 3971704.0, + 5155960.0, + 5590160.0, + 2400232.0, + 1511888.0, + 1253716.0, + 1257520.0, + 1259612.0, + 1267772.0, + 1517372.0, + 1386244.0, + 1410460.0, + 1466916.0, + 1383792.0, + 1302180.0, + 3593040.0, + 4208688.0, + 5366760.0, + 5801344.0, + 3992952.0, + 4838040.0, + 5517060.0, + 4978280.0, + 1315288.0, + 1286788.0, + 1261696.0, + 1245960.0, + 1261892.0, + 1484788.0, + 1474032.0, + 1405372.0, + 1237012.0, + 1464672.0, + 1590376.0, + 4037180.0, + 4624768.0, + 5741616.0, + 4551096.0, + 4059424.0, + 5261984.0, + 5449528.0, + 3115352.0, + 1407472.0, + 1245380.0, + 1237616.0, + 1247456.0, + 1239996.0, + 1473940.0, + 1445280.0, + 1313008.0, + 1251548.0, + 3068840.0, + 3948420.0, + 5017012.0, + 4937848.0, + 4402756.0, + 4502448.0, + 5429096.0, + 4494704.0, + 1290416.0, + 1256600.0, + 1217692.0, + 1221140.0, + 1208352.0, + 1094960.0, + 1407052.0, + 1363296.0, + 1465368.0, + 4002796.0, + 4571524.0, + 5707584.0, + 4663764.0, + 4097324.0, + 5313208.0, + 4983444.0, + 2526496.0, + 1557720.0, + 1851408.0, + 1747484.0, + 1787656.0, + 1493240.0, + 1370060.0, + 1716524.0, + 3889276.0, + 4520152.0, + 5618952.0, + 5693920.0, + 4141204.0, + 5353040.0, + 5226120.0, + 2184308.0, + 1551412.0, + 1424340.0, + 1627284.0, + 1492220.0, + 1366712.0, + 2712296.0, + 3867452.0, + 4962308.0, + 5558020.0, + 4964200.0, + 4504680.0, + 5540864.0, + 4714584.0, + 1311060.0, + 1500292.0, + 1645076.0, + 1292116.0, + 1336040.0, + 3798416.0, + 4340180.0, + 5566588.0, + 5304164.0, + 3897352.0, + 5062064.0, + 5502724.0, + 1742068.0, + 1252304.0, + 1002192.0, + 1032448.0, + 1383476.0, + 1372304.0, + 2913144.0, + 3869704.0, + 5059384.0, + 5234676.0, + 4764920.0, + 4473828.0, + 5526184.0, + 4111104.0, + 1419024.0, + 1068160.0, + 1348584.0, + 1311092.0, + 3245128.0, + 3910048.0, + 5133132.0, + 5127540.0, + 4231916.0, + 4618964.0, + 5464576.0, + 3660444.0, + 985840.0, + 990048.0, + 1343624.0, + 1458480.0, + 2077980.0, + 3855936.0, + 4687656.0, + 5650640.0, + 5562904.0, + 4132320.0, + 5335232.0, + 3675540.0, + 1853444.0, + 972672.0, + 1315044.0, + 1390048.0, + 3121856.0, + 3963396.0, + 5120224.0, + 5038232.0, + 4393784.0, + 4582672.0, + 5584112.0, + 3430784.0, + 1083408.0, + 943848.0, + 1390312.0, + 1540540.0, + 1823912.0, + 3995916.0, + 4630860.0, + 5664272.0, + 4498168.0, + 4059820.0, + 5256884.0, + 5078292.0, + 1651388.0, + 974820.0, + 1221696.0, + 1484492.0, + 1473940.0, + 3850644.0, + 4358156.0, + 5534224.0, + 5469744.0, + 3837644.0, + 5001312.0, + 5434228.0, + 3560548.0, + 1004916.0, + 1437844.0, + 1428680.0, + 2421248.0, + 3845516.0, + 4828124.0, + 5447300.0, + 4428932.0, + 4192912.0, + 5391756.0, + 5054436.0, + 1664720.0, + 977332.0, + 1038236.0, + 1443748.0, + 1386316.0, + 3562528.0, + 4089168.0, + 5332356.0, + 5043856.0, + 4215200.0, + 4760084.0, + 5552524.0, + 5083344.0, + 1307176.0, + 964884.0, + 947572.0, + 1437668.0, + 1310956.0, + 2945092.0, + 3914392.0, + 5051048.0, + 5656720.0, + 5209008.0, + 4516960.0, + 5404180.0, + 5035232.0, + 976944.0, + 990032.0, + 1351732.0, + 1545428.0, + 1610684.0, + 3979176.0, + 4425592.0, + 5608220.0, + 5938472.0, + 4137824.0, + 4594136.0, + 5586744.0, + 5191444.0, + 998004.0, + 929412.0, + 1463556.0, + 1364280.0 + ], + "disk_bytes": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 41943040.0, + 83886080.0, + 167772160.0, + 209715200.0, + 251658240.0, + 293601280.0, + 377487360.0, + 419430400.0, + 461373440.0, + 503316480.0, + 587202560.0, + 629145600.0, + 675231744.0, + 717174784.0, + 798963712.0, + 843003904.0, + 879055872.0, + 879055872.0, + 879055872.0, + 879055872.0, + 897779712.0, + 897779712.0, + 897779712.0, + 2888624128.0, + 2957328384.0, + 2957328384.0, + 3614023680.0, + 5073667072.0, + 5135056896.0, + 5135056896.0, + 5135056896.0, + 5135056896.0, + 5135056896.0, + 5135056896.0, + 3329587200.0, + 3075508224.0, + 897779712.0, + 979529728.0, + 1021472768.0, + 1115992064.0, + 1115992064.0, + 1115992064.0, + 1233121280.0, + 3179549696.0, + 3179549696.0, + 3179549696.0, + 5187996672.0, + 5353269248.0, + 5353269248.0, + 5353269248.0, + 5353269248.0, + 5353269248.0, + 5353269248.0, + 3549316096.0, + 3289711616.0, + 1651267584.0, + 1201995776.0, + 1201995776.0, + 1350089728.0, + 1350089728.0, + 1350089728.0, + 1350089728.0, + 3415289856.0, + 3415289856.0, + 3415289856.0, + 4560772096.0, + 5587365888.0, + 5587365888.0, + 5587365888.0, + 5587365888.0, + 5587365888.0, + 5587365888.0, + 3778568192.0, + 3522166784.0, + 1350089728.0, + 1435365376.0, + 1477308416.0, + 1583690752.0, + 1583690752.0, + 1583690752.0, + 2273721344.0, + 3647006720.0, + 3647006720.0, + 3647006720.0, + 5626852352.0, + 5820967936.0, + 5820967936.0, + 5820967936.0, + 5820967936.0, + 5820967936.0, + 4269891584.0, + 3471955968.0, + 1665130496.0, + 1665130496.0, + 1811524608.0, + 1811524608.0, + 1811524608.0, + 1811524608.0, + 3826760704.0, + 3873299456.0, + 3873299456.0, + 4755231744.0, + 6048800768.0, + 6048800768.0, + 6048800768.0, + 6048800768.0, + 5008196608.0, + 3987025920.0, + 2077274112.0, + 1884386304.0, + 1926329344.0, + 2025351168.0, + 2025351168.0, + 2025351168.0, + 2623717376.0, + 4088252416.0, + 4088252416.0, + 4104931328.0, + 6198834176.0, + 6262628352.0, + 6262628352.0, + 6262628352.0, + 4199727104.0, + 2295469056.0, + 2085610496.0, + 2127553536.0, + 2217792512.0, + 2217792512.0, + 2217792512.0, + 3098130432.0, + 4284660736.0, + 4284660736.0, + 4363467776.0, + 6407033856.0, + 6455069696.0, + 6455069696.0, + 4388201472.0, + 2217792512.0, + 2262464512.0, + 2304407552.0, + 2384031744.0, + 2384031744.0, + 2384031744.0, + 4397715456.0, + 4453703680.0, + 4453703680.0, + 5132478464.0, + 6621308928.0, + 6621308928.0, + 4277008384.0, + 2415267840.0, + 2415267840.0, + 2526441472.0, + 2526441472.0, + 2526441472.0, + 2631725056.0, + 4600637440.0, + 4600637440.0, + 4600637440.0, + 6551246848.0, + 6763717632.0, + 4950329344.0, + 2790152192.0, + 2526441472.0, + 2546827264.0, + 2588770304.0, + 2648082432.0, + 2648082432.0, + 2648082432.0, + 4688121856.0, + 4714259456.0, + 4714259456.0, + 5606959104.0, + 6885359616.0, + 5850105856.0, + 2648082432.0, + 2663036928.0, + 2746923008.0, + 2758964224.0, + 2758964224.0, + 2758964224.0, + 4822346752.0, + 4822346752.0, + 4822346752.0, + 5943342080.0, + 6996240384.0, + 5449131008.0, + 2758964224.0, + 2767904768.0, + 2767904768.0, + 2857892864.0, + 2857892864.0, + 2857892864.0, + 4203210752.0, + 4938328064.0, + 4938328064.0, + 5080246272.0, + 7069788160.0, + 6838723584.0, + 3142134784.0, + 2862430208.0, + 2862430208.0, + 2948648960.0, + 2948648960.0, + 2948648960.0, + 5022091264.0, + 5022091264.0, + 5022091264.0, + 6212866048.0, + 7185926144.0, + 5628802048.0, + 2948648960.0, + 2950898688.0, + 2950898688.0, + 3035069440.0, + 3035069440.0, + 3035069440.0, + 3853421568.0, + 5106754560.0, + 5106754560.0, + 5124219904.0, + 7235335168.0, + 7272345600.0, + 3570143232.0, + 3035919360.0, + 3035919360.0, + 3118813184.0, + 3118813184.0, + 3118813184.0, + 3481022464.0, + 5189097472.0, + 5189097472.0, + 5189097472.0, + 7201189888.0, + 7356090368.0, + 3920541696.0, + 3119076352.0, + 3119076352.0, + 3201332224.0, + 3201332224.0, + 3201332224.0, + 5103884288.0, + 5273242624.0, + 5273242624.0, + 5536940032.0, + 7426566144.0, + 7438608384.0, + 3486266368.0, + 3201397760.0, + 3201397760.0, + 3283406848.0, + 3283406848.0, + 3283406848.0, + 3283406848.0, + 5343096832.0, + 5343096832.0, + 5343096832.0, + 6969979904.0, + 7520683008.0, + 6216498176.0, + 3551176704.0, + 3283406848.0, + 3283417088.0, + 3283417088.0, + 3365346304.0, + 3365346304.0, + 3365346304.0, + 5387980800.0, + 5431614464.0, + 5431614464.0, + 6268274688.0, + 7602622464.0, + 6308724736.0, + 3365346304.0, + 3365350400.0, + 3365350400.0, + 3447267328.0, + 3447267328.0, + 3447267328.0, + 3493978112.0, + 5654833152.0, + 5654833152.0, + 5654833152.0, + 6809960448.0, + 7662424064.0, + 5009301504.0, + 3701498880.0, + 3447269376.0, + 3447269376.0 + ] + }, + { + "t": [ + 0.00012250100007804576, + 0.585471131000304, + 1.1694318919999205, + 1.7534517149997555, + 2.3377169429995774, + 2.9218756099999155, + 3.505950464000307, + 4.089940511999885, + 4.674048865999794, + 5.2581353559999116, + 5.842242355999588, + 6.426375326999732, + 7.010499666000214, + 7.594581247999486, + 8.178612114000316, + 8.762637893999454, + 9.346800225000152, + 9.93091514400021, + 10.514931886999875, + 11.098937455999476, + 11.682989289999568, + 12.267147673999716, + 12.851194079999914, + 13.43537686199943, + 14.019469576999654, + 14.603724892999708, + 15.187851695000063, + 15.77228332300001, + 16.356512006999765, + 16.940691263999724, + 17.524915756000155, + 18.10924728400005, + 18.69347059699976, + 19.27772533299958, + 19.86209923899969, + 20.44645902100001, + 21.030748686999686, + 21.61531882899999, + 22.199593364000066, + 22.783873747999678, + 23.36834283600001, + 23.95277927999996, + 24.537158353999985, + 25.12144920299943, + 25.705732681999507, + 26.28996962200017, + 26.874076549000165, + 27.458320558000196, + 28.042571330999635, + 28.626832369000113, + 29.211245667000185, + 29.795561713999632, + 30.379924541000037, + 30.964404487000138, + 31.548951154999486, + 32.13343316600003, + 32.717803712000205, + 33.30231235999963, + 33.88662546500018, + 34.47098322999955, + 35.055330938000225, + 35.63977215500017, + 36.22430415100007, + 36.80870854400018, + 37.39294531699943, + 37.977108506999684, + 38.56136309999965, + 39.14575573399998, + 39.730091493000145, + 40.31452792999971, + 40.89901455200015, + 41.48339295699952, + 42.06779701100004, + 42.65227290999974, + 43.23692666199986, + 43.821519740999975, + 44.406103143999644, + 44.99068552799963, + 45.57529232500019, + 46.15994080699966, + 46.74430630699953, + 47.32872414600024, + 47.913247690999924, + 48.49746540399974, + 49.08172055999967, + 49.66617314799987, + 50.25058966799952, + 50.83505602300011, + 51.419572847999916, + 52.00416049599971, + 52.58861044399964, + 53.173109071, + 53.75772264099942, + 54.342220984999585, + 54.9266967880003, + 55.51119721299983, + 56.09581277399957, + 56.68034339699989, + 57.265112969000256, + 57.84953622699959, + 58.434138919999896, + 59.01854798600016, + 59.60306901199965, + 60.1877365499995, + 60.77245673699963, + 61.35697358000016, + 61.9415216819998, + 62.526206468000055, + 63.110825040000236, + 63.69542413199997, + 64.28007747599986, + 64.86492982100026, + 65.44949064799948, + 66.03407405300004, + 66.61861128700002, + 67.20344696699976, + 67.78812494999966, + 68.37284440999974, + 68.95742250300009, + 69.54202936599995, + 70.1267525000003, + 70.71134638999956, + 71.29597225699945, + 71.88081845400029, + 72.4655966549999, + 73.04996269399999, + 73.63460980399941, + 74.21954993399959, + 74.80435078099981, + 75.38912617299957, + 75.97387765700023, + 76.55857940999977, + 77.14305309500014, + 77.72740153900031, + 78.31229047899978, + 78.89708078399963, + 79.48202961100014, + 80.06681190400013, + 80.65149406, + 81.2364000689995, + 81.82129378299942, + 82.4059849260002, + 82.99070040300012, + 83.57568045500011, + 84.16054267599975, + 84.74537032900025, + 85.33019700299974, + 85.91493272600019, + 86.49959044600018, + 87.08427678999942, + 87.66880042899993, + 88.25386880699989, + 88.83863520399973, + 89.42341930400016, + 90.0084605840002, + 90.59342738800024, + 91.17824291499983, + 91.76312640499964, + 92.34815671199976, + 92.93310646099962, + 93.5180292340001, + 94.10278891399958, + 94.6874169519997, + 95.27232780200029, + 95.85697698700005, + 96.44184377500005, + 97.02670625300016, + 97.6118519900001, + 98.19694221499958, + 98.7818220829995, + 99.36673936599982, + 99.95184533100019, + 100.53685554299955, + 101.12183764499969, + 101.70629423500031, + 102.29078250200018, + 102.8760628330001, + 103.46076773999994, + 104.04554357199959, + 104.63061863700023, + 105.21553196199966, + 105.80045622800026, + 106.38564279799994, + 106.97061207299976, + 107.55555477599955, + 108.14020440700006, + 108.72521804600001, + 109.31024237600013, + 109.89482859799955, + 110.47932359799961, + 111.06442465500004, + 111.64912034499957, + 112.23403174400028, + 112.8189644289996, + 113.40396930999941, + 113.98928593900018, + 114.57450612299999, + 115.1595487630002, + 115.74461354199957, + 116.32988156400006, + 116.91513850399951, + 117.49973097299971, + 118.08436039699973, + 118.66994611999962, + 119.25481001600019, + 119.84009323200007, + 120.42480642200007, + 121.01004116599961, + 121.59525591500005, + 122.18052154199995, + 122.76597180199951, + 123.35120609000023, + 123.9364935349995, + 124.52133048999985, + 125.10682305499995, + 125.69224760099951, + 126.2769158609999, + 126.8617215940003, + 127.44658743199943, + 128.03201670199996, + 128.61738499799958, + 129.20262814600028, + 129.78789702499944, + 130.3732148829995, + 130.95867336799984, + 131.54401549399972, + 132.12930813899948, + 132.71478105799997, + 133.30020503099968, + 133.88551346500026, + 134.47019472800002, + 135.05501844399987, + 135.6401431510003, + 136.22567947399966, + 136.8113690170003, + 137.3967148519996, + 137.98207300499962, + 138.56777917599993, + 139.15317745999982, + 139.73852115599948, + 140.32384928200008, + 140.90929790999962, + 141.4948415580002, + 142.07962412899997, + 142.66435207499944, + 143.24911358200006, + 143.8340932680003, + 144.41936464399987, + 145.00478633399962, + 145.5902984459999, + 146.17606717699982, + 146.76177648300018, + 147.3472482420002, + 147.93292810099956, + 148.5177927120003, + 149.10341145300026, + 149.6890253370002, + 150.2738131569995, + 150.85942765599975, + 151.4445364809999, + 152.03032033599993, + 152.6157747899997, + 153.20121219199973, + 153.78663884399975, + 154.37250435900023, + 154.95796081000026, + 155.54339733300003, + 156.1289599869997, + 156.71454341699973, + 157.2999487930001, + 157.88574402099948, + 158.47074081400024, + 159.0564804429996, + 159.6419601179996, + 160.22742294, + 160.81327650599997, + 161.39817201799997, + 161.98370217799948, + 162.56967561199963, + 163.15531993399964, + 163.74106165899957, + 164.3267596149999, + 164.9122679430002, + 165.49717501099985, + 166.0830693400003, + 166.66901154300012, + 167.25476744800017, + 167.84033683899997, + 168.42530299999999, + 169.01095129500027, + 169.5965603149998, + 170.18294708600024, + 170.7688230499998, + 171.35428234600022, + 171.93919114500022, + 172.52413064099983, + 173.10994350199962, + 173.69511779000004, + 174.2801344239997, + 174.86624285400012, + 175.45191650699962, + 176.03761268299968, + 176.62330677199952, + 177.2092888770003, + 177.79512531599994, + 178.38104410399956, + 178.9669776669998, + 179.55296042999998, + 180.13797341400004, + 180.7240088890003, + 181.30998122500023 + ], + "rss_kb": [ + 59396.0, + 2020628.0, + 4813796.0, + 7944248.0, + 8110016.0, + 8510352.0, + 5823044.0, + 5811408.0, + 5782108.0, + 5818144.0, + 5772028.0, + 5753836.0, + 5788908.0, + 5781780.0, + 5801448.0, + 5765376.0, + 5767976.0, + 5697596.0, + 5692852.0, + 5684576.0, + 5387224.0, + 5137024.0, + 3840216.0, + 2273080.0, + 1215444.0, + 1101984.0, + 1488136.0, + 3735784.0, + 4205308.0, + 5206636.0, + 4939144.0, + 3888348.0, + 4952860.0, + 5609388.0, + 4010032.0, + 1396392.0, + 1330488.0, + 1333236.0, + 1321536.0, + 1336816.0, + 1554944.0, + 1465760.0, + 1454848.0, + 1334776.0, + 1366908.0, + 1284896.0, + 3423896.0, + 4245452.0, + 5399348.0, + 5880168.0, + 4272944.0, + 4774480.0, + 5711700.0, + 5124432.0, + 1423284.0, + 1326652.0, + 1300416.0, + 1298724.0, + 1314592.0, + 1575824.0, + 1536436.0, + 1435728.0, + 1449480.0, + 1544856.0, + 1373292.0, + 2889332.0, + 4140216.0, + 5177824.0, + 5897248.0, + 5097116.0, + 4586576.0, + 5704832.0, + 5352128.0, + 1911500.0, + 1335372.0, + 1285144.0, + 1300652.0, + 1314852.0, + 1578260.0, + 1542540.0, + 1441220.0, + 1702524.0, + 1333364.0, + 1351644.0, + 3190784.0, + 4085320.0, + 5193796.0, + 5292572.0, + 5401560.0, + 4563984.0, + 5666788.0, + 4478620.0, + 1803844.0, + 1306224.0, + 1280268.0, + 1275864.0, + 1271156.0, + 1275988.0, + 1486680.0, + 1374340.0, + 1539980.0, + 1454304.0, + 1817180.0, + 3886340.0, + 4455880.0, + 5555460.0, + 5364944.0, + 3913836.0, + 4935160.0, + 5495232.0, + 4148728.0, + 1340364.0, + 1288268.0, + 1278144.0, + 1245328.0, + 1254348.0, + 1313452.0, + 1462344.0, + 1360372.0, + 2241992.0, + 4100052.0, + 4843436.0, + 5762396.0, + 4267784.0, + 4065444.0, + 5212384.0, + 5061332.0, + 2756632.0, + 1515148.0, + 1870612.0, + 1922460.0, + 1978984.0, + 1289924.0, + 1424120.0, + 1407300.0, + 1436292.0, + 3791448.0, + 4309632.0, + 5542596.0, + 4563552.0, + 3834028.0, + 4773312.0, + 5145680.0, + 3425628.0, + 1694696.0, + 1509148.0, + 1677096.0, + 1460084.0, + 1514100.0, + 1381016.0, + 2341744.0, + 3878440.0, + 4748504.0, + 5683976.0, + 5057212.0, + 4126748.0, + 5345660.0, + 5526696.0, + 1754496.0, + 1526196.0, + 1464244.0, + 1677344.0, + 1384080.0, + 2261924.0, + 4045104.0, + 4733364.0, + 5741544.0, + 4999444.0, + 4087652.0, + 5297428.0, + 5394780.0, + 3316004.0, + 1348328.0, + 1174420.0, + 1127412.0, + 1335700.0, + 1328768.0, + 1745736.0, + 3844092.0, + 4399780.0, + 5509960.0, + 5576476.0, + 3879600.0, + 5045672.0, + 5481384.0, + 2927128.0, + 1149204.0, + 993908.0, + 1038440.0, + 1339000.0, + 1337840.0, + 2887236.0, + 3857628.0, + 5001768.0, + 5416868.0, + 4057824.0, + 4337428.0, + 5459336.0, + 4981728.0, + 1082584.0, + 1045820.0, + 940396.0, + 1174848.0, + 1382304.0, + 1179536.0, + 3416468.0, + 3938652.0, + 4995968.0, + 5651188.0, + 4335084.0, + 4020868.0, + 5121528.0, + 5494180.0, + 1652320.0, + 1068996.0, + 932396.0, + 1109504.0, + 1343308.0, + 1192828.0, + 3316236.0, + 3931288.0, + 4991396.0, + 5603892.0, + 4628796.0, + 4201104.0, + 5328660.0, + 5534084.0, + 2214036.0, + 975712.0, + 894732.0, + 1051324.0, + 1353812.0, + 1357088.0, + 3462828.0, + 4036068.0, + 5157340.0, + 5606308.0, + 4745688.0, + 4296572.0, + 5393740.0, + 5063968.0, + 1102460.0, + 917496.0, + 876288.0, + 1357804.0, + 1477604.0, + 1823984.0, + 3876360.0, + 4463816.0, + 5591124.0, + 5273532.0, + 3820288.0, + 4855816.0, + 5571372.0, + 3508964.0, + 1072944.0, + 923648.0, + 1349688.0, + 1434952.0, + 1751232.0, + 3938376.0, + 4517660.0, + 5674648.0, + 5429416.0, + 3951692.0, + 5114932.0, + 5460520.0, + 2092712.0, + 1005976.0, + 1442520.0, + 1493200.0, + 2152576.0, + 4031440.0, + 4670420.0, + 5659516.0, + 5293140.0, + 4091592.0, + 5270136.0, + 4502052.0, + 3926580.0, + 969936.0, + 1379188.0, + 1385864.0, + 1617784.0, + 3792720.0, + 4350136.0, + 5571064.0, + 4203076.0, + 3892896.0, + 4903540.0, + 5543880.0, + 3340200.0, + 1041224.0, + 970552.0, + 936504.0, + 1380992.0, + 1548500.0, + 1817960.0, + 4121564.0, + 4530672.0, + 5687332.0, + 5752608.0, + 3799752.0, + 4307984.0, + 5464020.0, + 4265684.0, + 1007216.0, + 961212.0, + 1389288.0, + 1496040.0, + 1450980.0 + ], + "disk_bytes": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 41943040.0, + 125829120.0, + 167772160.0, + 251658240.0, + 293601280.0, + 335544320.0, + 377487360.0, + 461373440.0, + 503316480.0, + 545259520.0, + 587202560.0, + 629145600.0, + 706666496.0, + 759095296.0, + 801038336.0, + 879043584.0, + 879043584.0, + 957034496.0, + 879043584.0, + 897768448.0, + 897768448.0, + 897768448.0, + 1049910272.0, + 2957158400.0, + 2957158400.0, + 2957158400.0, + 4918387712.0, + 5135045632.0, + 5135045632.0, + 5135045632.0, + 5135045632.0, + 5135045632.0, + 5135045632.0, + 3843568640.0, + 3075655680.0, + 1992357888.0, + 979554304.0, + 979554304.0, + 1116017664.0, + 1116017664.0, + 1116017664.0, + 1116017664.0, + 3185044480.0, + 3185044480.0, + 3185044480.0, + 3924341760.0, + 5353293824.0, + 5353293824.0, + 5353293824.0, + 5353293824.0, + 5353293824.0, + 5353293824.0, + 5092507648.0, + 3284267008.0, + 3284267008.0, + 1202059264.0, + 1202059264.0, + 1327888384.0, + 1350152192.0, + 1350152192.0, + 1350152192.0, + 3325446144.0, + 3416096768.0, + 3416096768.0, + 3942817792.0, + 5587428352.0, + 5587428352.0, + 5587428352.0, + 5587428352.0, + 5587428352.0, + 5587428352.0, + 5072347136.0, + 3521483776.0, + 3250040832.0, + 1435444224.0, + 1435444224.0, + 1583769600.0, + 1583769600.0, + 1583769600.0, + 1583769600.0, + 3588058112.0, + 3648812032.0, + 3648812032.0, + 4229199872.0, + 5802280960.0, + 5821046784.0, + 5821046784.0, + 5821046784.0, + 5821046784.0, + 5821046784.0, + 4010814464.0, + 3480244224.0, + 1665186816.0, + 1665186816.0, + 1707129856.0, + 1811579904.0, + 1811579904.0, + 1811579904.0, + 2304119808.0, + 3873268736.0, + 3873268736.0, + 3873268736.0, + 5644630016.0, + 6048856064.0, + 6048856064.0, + 6048856064.0, + 6048856064.0, + 5273705472.0, + 3987167232.0, + 1884440576.0, + 1884440576.0, + 1926383616.0, + 2025404416.0, + 2025404416.0, + 2025404416.0, + 3557160960.0, + 4095536128.0, + 4095536128.0, + 4133153792.0, + 5979515904.0, + 6262681600.0, + 6262681600.0, + 6262681600.0, + 4449274880.0, + 2292946944.0, + 2025404416.0, + 2085662720.0, + 2127605760.0, + 2217843712.0, + 2217843712.0, + 2217843712.0, + 2235644928.0, + 4288435200.0, + 4288435200.0, + 4288435200.0, + 5889586176.0, + 6455120896.0, + 6455120896.0, + 5672965120.0, + 2481946624.0, + 2217843712.0, + 2262434816.0, + 2304377856.0, + 2384002048.0, + 2384002048.0, + 2384002048.0, + 3991101440.0, + 4458082304.0, + 4458082304.0, + 4579291136.0, + 6564985856.0, + 6621279232.0, + 5318306816.0, + 2653796352.0, + 2415237120.0, + 2457180160.0, + 2526411776.0, + 2526411776.0, + 2526411776.0, + 3870635008.0, + 4591333376.0, + 4591333376.0, + 4622795776.0, + 6629604352.0, + 6763688960.0, + 4944660480.0, + 2794309632.0, + 2526411776.0, + 2546801664.0, + 2588744704.0, + 2648056832.0, + 2648056832.0, + 2648056832.0, + 3167979520.0, + 4718188544.0, + 4718188544.0, + 4718188544.0, + 6599558144.0, + 6885332992.0, + 5057404928.0, + 2912327680.0, + 2663026688.0, + 2663026688.0, + 2731708416.0, + 2758955008.0, + 2758955008.0, + 2758955008.0, + 4753563648.0, + 4823462912.0, + 4823462912.0, + 5365285888.0, + 6967214080.0, + 5959963648.0, + 3561786368.0, + 2758955008.0, + 2767876096.0, + 2767876096.0, + 2857863168.0, + 2857863168.0, + 2857863168.0, + 2857863168.0, + 4740257792.0, + 4927292416.0, + 4927292416.0, + 4927292416.0, + 6842566656.0, + 7095139328.0, + 5282173952.0, + 2857863168.0, + 2862409728.0, + 2862409728.0, + 2948629504.0, + 2948629504.0, + 2948629504.0, + 2948629504.0, + 4937795584.0, + 5015783424.0, + 5015783424.0, + 5225973760.0, + 7131210752.0, + 7185906688.0, + 4021570560.0, + 3218136064.0, + 2950832128.0, + 2950832128.0, + 3035001856.0, + 3035001856.0, + 3035001856.0, + 3035001856.0, + 4551785472.0, + 5111638016.0, + 5111638016.0, + 5450376192.0, + 7189870592.0, + 7272279040.0, + 3568364544.0, + 3035001856.0, + 3035852800.0, + 3035852800.0, + 3118746624.0, + 3118746624.0, + 3118746624.0, + 3304058880.0, + 5190898688.0, + 5190898688.0, + 5190898688.0, + 6934355968.0, + 7356022784.0, + 6061969408.0, + 3389910016.0, + 3119009792.0, + 3119009792.0, + 3201265664.0, + 3201265664.0, + 3201265664.0, + 3663847424.0, + 5275393024.0, + 5275393024.0, + 5275393024.0, + 7174424576.0, + 7438541824.0, + 4272577536.0, + 3201331200.0, + 3201331200.0, + 3283340288.0, + 3283340288.0, + 3283340288.0, + 4456511488.0, + 5354312704.0, + 5354312704.0, + 5401711616.0, + 7307591680.0, + 7520617472.0, + 4090108928.0, + 3283351552.0, + 3283351552.0, + 3365279744.0, + 3365279744.0, + 3365279744.0, + 3527841792.0, + 5435424768.0, + 5435424768.0, + 5435424768.0, + 7262663680.0, + 7602556928.0, + 4683324416.0, + 3629861888.0, + 3365279744.0, + 3365283840.0, + 3365283840.0, + 3447200768.0, + 3447200768.0, + 3447200768.0, + 3535002624.0, + 5454932992.0, + 5661590528.0, + 5661590528.0, + 5661590528.0, + 7636623360.0, + 7684475904.0, + 3698644992.0, + 3447202816.0, + 3447202816.0, + 3529119744.0 + ] + }, + { + "t": [ + 0.00014752399965800578, + 0.5855665400004, + 1.169682456999908, + 1.7537422670002343, + 2.3383393829999477, + 2.9224132099998315, + 3.506375422000019, + 4.090414670000428, + 4.674431815000389, + 5.258472033000544, + 5.842508144000021, + 6.426538961000006, + 7.010611251000228, + 7.594743075000224, + 8.178853745000197, + 8.762902897000458, + 9.34703009399982, + 9.931162667000535, + 10.515296354999919, + 11.099472312000216, + 11.68361414300034, + 12.267709661000481, + 12.851786367999921, + 13.435849143999803, + 14.019993382999928, + 14.604141189000075, + 15.188218753000001, + 15.77242753399969, + 16.356656040000416, + 16.940906912000173, + 17.525105251999776, + 18.10931214500033, + 18.693670505999762, + 19.27791324700047, + 19.862169586000164, + 20.44660159599971, + 21.031312928999796, + 21.61575506600002, + 22.2000490420005, + 22.784426987000188, + 23.368704268999863, + 23.95307434300048, + 24.53741356899991, + 25.1217122449998, + 25.706058939000286, + 26.2903881430002, + 26.87470813999971, + 27.459002720999706, + 28.04326724299972, + 28.62761336099993, + 29.21192565599995, + 29.796350550999705, + 30.380716200999814, + 30.965114329000244, + 31.549509569999827, + 32.133861750000506, + 32.71829117000016, + 33.30267102800008, + 33.8870063710001, + 34.47140377800042, + 35.055848814000456, + 35.64020676000018, + 36.22461108199968, + 36.80914119499994, + 37.39353260400003, + 37.97784004799996, + 38.562213864000114, + 39.14644598900031, + 39.730737331000455, + 40.315188687000045, + 40.89956687599988, + 41.483927029999904, + 42.06828735500039, + 42.6526936729997, + 43.237105033999796, + 43.82165735400031, + 44.405910135999875, + 44.99033661500016, + 45.57494842000051, + 46.15967515099965, + 46.74410221400012, + 47.328606568000396, + 47.91313603300023, + 48.49767647200042, + 49.08204079300049, + 49.66634241799966, + 50.250782537000305, + 50.835283989000345, + 51.4197964949999, + 52.004295585000364, + 52.588928946000124, + 53.1735661190005, + 53.758213754999815, + 54.34270520800055, + 54.92716752999968, + 55.511854547999974, + 56.09631651499967, + 56.68106617800004, + 57.26566645300045, + 57.85023356200054, + 58.434683354999834, + 59.01919354999973, + 59.60376162900047, + 60.18804483799977, + 60.77250465999987, + 61.35679233100018, + 61.94106185800047, + 62.52566609600035, + 63.11013420299969, + 63.694668830999944, + 64.27941448199999, + 64.86410433000037, + 65.44871672299996, + 66.0334393840003, + 66.61806128300032, + 67.20266800700028, + 67.78722685000048, + 68.37200028700045, + 68.95667008200053, + 69.54138298700036, + 70.12566024199987, + 70.71003727800053, + 71.29464122799982, + 71.87939078900035, + 72.46399556899996, + 73.04860499400002, + 73.63343409299978, + 74.21821189599996, + 74.80286534300012, + 75.38751118500022, + 75.97197916500045, + 76.55683166400013, + 77.14165860899993, + 77.72644217600009, + 78.31111489900013, + 78.8957975860003, + 79.48016809500041, + 80.06467748500017, + 80.649160682, + 81.23398973300027, + 81.81867840999985, + 82.40335316599976, + 82.98830235500009, + 83.57322591100001, + 84.15795780400003, + 84.7426568890005, + 85.32710558899998, + 85.91166129700014, + 86.49651399400045, + 87.08097456700034, + 87.66565032299968, + 88.24998634599979, + 88.83447712900033, + 89.41929557799995, + 90.00424338599987, + 90.58900901099969, + 91.17378641899995, + 91.75881071799995, + 92.34380022900041, + 92.92860400800055, + 93.5135230650003, + 94.09801958499975, + 94.68294122200041, + 95.26782645500043, + 95.85226876500019, + 96.43671248300052, + 97.02145642100004, + 97.60635369600004, + 98.19123957800002, + 98.77608400100053, + 99.36093232500025, + 99.94586210899979, + 100.53091837500051, + 101.11581560200011, + 101.70066887400026, + 102.28567128000032, + 102.87066460900041, + 103.45606965299976, + 104.04053381100039, + 104.6249962439997, + 105.20953108499998, + 105.79464855100014, + 106.37974830799976, + 106.96468444499988, + 107.54965336900023, + 108.13486306800041, + 108.7197972720005, + 109.30475100300009, + 109.88966806900044, + 110.47467918700022, + 111.05974443800005, + 111.6443179300004, + 112.2294622569998, + 112.8152662700004, + 113.40008493500045, + 113.98495063199971, + 114.57000771700041, + 115.15501336699981, + 115.74003397900015, + 116.32515236099971, + 116.91048085400053, + 117.49563564100026, + 118.08080280099966, + 118.66729542200028, + 119.25251183900036, + 119.83745090699995, + 120.42259949199979, + 121.00765232600043, + 121.59236067500024, + 122.17772746999981, + 122.76301212399994, + 123.34828106300029, + 123.93378862200007, + 124.51914556500014, + 125.10436666900023, + 125.68959636700038, + 126.27491897500022, + 126.86027543599994, + 127.44555550099994, + 128.0301886140005, + 128.61482051700023, + 129.19952346799982, + 129.78426655899966, + 130.36988587799988, + 130.95518979999997, + 131.54051591500047, + 132.12612854800045, + 132.7114808690003, + 133.29681195800003, + 133.88212188099988, + 134.46793706599965, + 135.05376672700004, + 135.6392329400005, + 136.22393971699967, + 136.80952062300003, + 137.394510395, + 137.9799735839997, + 138.56547301299997, + 139.15082729799997, + 139.73613034000027, + 140.32090305899965, + 140.9062787820003, + 141.49168482799996, + 142.077296296, + 142.66279165800006, + 143.24829098200007, + 143.83301682599995, + 144.41774452899972, + 145.00319027800015, + 145.5881427989998, + 146.17318675600018, + 146.75882628700037, + 147.3441830390002, + 147.9295617710004, + 148.51526551999996, + 149.10072544600007, + 149.68625414300004, + 150.2716764300003, + 150.8572595710002, + 151.44222738700046, + 152.02729248200012, + 152.6120536520002, + 153.19746621099966, + 153.7828684900005, + 154.36840635499993, + 154.95381426200038, + 155.53929495800003, + 156.1251770300005, + 156.71088711999982, + 157.29642520700054, + 157.88199516999975, + 158.46763472200018, + 159.05321866699978, + 159.63804536800035, + 160.2237081809999, + 160.8093495180001, + 161.39518264300023, + 161.9806800490005, + 162.5662282559997, + 163.1519614990002, + 163.7377761529997, + 164.32354147299975, + 164.90953881400037, + 165.49516633300027, + 166.08094864099985, + 166.66613275100008, + 167.2513383610003, + 167.83619701299995, + 168.42130335399997, + 169.00698295599977, + 169.59271376000015, + 170.17827579300047, + 170.76389451999967, + 171.34992712599978, + 171.93580604399995, + 172.5214785879998, + 173.10712901700026, + 173.69308121500035, + 174.278887941, + 174.8638307199999, + 175.4487390129998, + 176.03370406500017, + 176.61916096599998, + 177.20525624400034, + 177.7912660459997, + 178.3770630099998, + 178.96286018800038, + 179.5489564139998, + 180.13506197700008, + 180.72085511099976, + 181.30685731799986, + 181.89188836799985, + 182.47776129399972, + 183.06270169799973, + 183.64765810300014, + 184.23264334099986, + 184.81854411400036 + ], + "rss_kb": [ + 59268.0, + 1902724.0, + 4598356.0, + 7890156.0, + 7896816.0, + 8153180.0, + 5840584.0, + 5815268.0, + 5853464.0, + 5819200.0, + 5846508.0, + 5835780.0, + 5819060.0, + 5855488.0, + 5833388.0, + 5845784.0, + 5845180.0, + 5828460.0, + 5762320.0, + 5704224.0, + 5521704.0, + 5182884.0, + 4654316.0, + 2633236.0, + 1433280.0, + 1173168.0, + 974792.0, + 1905524.0, + 3854096.0, + 4329188.0, + 5291648.0, + 5460920.0, + 3869196.0, + 4906608.0, + 5232836.0, + 3803960.0, + 1435004.0, + 1345452.0, + 1338900.0, + 1342816.0, + 1343572.0, + 1592808.0, + 1520804.0, + 1471356.0, + 1327424.0, + 1628980.0, + 1360008.0, + 1357264.0, + 2485648.0, + 4098020.0, + 4814680.0, + 5882292.0, + 5727048.0, + 4199076.0, + 5073736.0, + 5715204.0, + 3621860.0, + 1422132.0, + 1337744.0, + 1325400.0, + 1327316.0, + 1311968.0, + 1617264.0, + 1484032.0, + 1456692.0, + 1423896.0, + 1703116.0, + 1368660.0, + 2003964.0, + 4151856.0, + 4694036.0, + 5805164.0, + 4674552.0, + 4108396.0, + 5207600.0, + 5692104.0, + 2089440.0, + 1606252.0, + 1333368.0, + 1330832.0, + 1327556.0, + 1313400.0, + 1615952.0, + 1479388.0, + 1411172.0, + 1614076.0, + 1439644.0, + 1560264.0, + 3969472.0, + 4478488.0, + 5642344.0, + 5241432.0, + 4036424.0, + 4996448.0, + 5562140.0, + 3381492.0, + 1440436.0, + 1336780.0, + 1347040.0, + 1320144.0, + 1333940.0, + 1593904.0, + 1441096.0, + 1765764.0, + 1438276.0, + 1416008.0, + 3762748.0, + 4262648.0, + 5476400.0, + 5543264.0, + 4567412.0, + 4819400.0, + 5699252.0, + 3770556.0, + 1536976.0, + 1306460.0, + 1303596.0, + 1283052.0, + 1298272.0, + 1395280.0, + 1637252.0, + 1399952.0, + 2027696.0, + 4041088.0, + 4717212.0, + 5731040.0, + 5223020.0, + 4082240.0, + 5303532.0, + 5413204.0, + 3191384.0, + 1666468.0, + 1798148.0, + 1944492.0, + 1967600.0, + 1524500.0, + 1581572.0, + 1390916.0, + 2136372.0, + 4046808.0, + 4753156.0, + 5747940.0, + 5104884.0, + 4148128.0, + 5368532.0, + 5043448.0, + 2400196.0, + 1673984.0, + 1530308.0, + 1634712.0, + 1281724.0, + 1572324.0, + 1410000.0, + 1846688.0, + 4021620.0, + 4603740.0, + 5749016.0, + 5311276.0, + 4039940.0, + 5222592.0, + 5215736.0, + 3238748.0, + 1443372.0, + 1616504.0, + 1300064.0, + 1413004.0, + 1430796.0, + 2271792.0, + 3977100.0, + 4820092.0, + 5633592.0, + 5196248.0, + 4178216.0, + 5389388.0, + 4980564.0, + 3290544.0, + 1262580.0, + 1135536.0, + 1065856.0, + 1416380.0, + 1336368.0, + 2246160.0, + 4005256.0, + 4724460.0, + 5654556.0, + 5264068.0, + 4054660.0, + 5239780.0, + 5571292.0, + 2113116.0, + 1204004.0, + 1028688.0, + 1074108.0, + 1393488.0, + 1351700.0, + 2774196.0, + 3947468.0, + 5014108.0, + 5459716.0, + 5292564.0, + 4271620.0, + 5390168.0, + 5224344.0, + 1896048.0, + 1074660.0, + 1409896.0, + 1516220.0, + 1394844.0, + 3725428.0, + 4179180.0, + 5269312.0, + 5301928.0, + 4147492.0, + 4293800.0, + 5422284.0, + 4990404.0, + 1477332.0, + 975536.0, + 965652.0, + 963836.0, + 1388060.0, + 1311788.0, + 2389776.0, + 3856076.0, + 4557712.0, + 5582340.0, + 4924720.0, + 3844612.0, + 4903024.0, + 5518632.0, + 1030668.0, + 1064572.0, + 944832.0, + 1383028.0, + 1406636.0, + 1845132.0, + 3988588.0, + 4454144.0, + 5585716.0, + 5088008.0, + 3924120.0, + 4639164.0, + 5495064.0, + 1616344.0, + 1007624.0, + 918060.0, + 911720.0, + 1385164.0, + 1542628.0, + 1518960.0, + 3911172.0, + 4358688.0, + 5518040.0, + 5771232.0, + 4376156.0, + 4826812.0, + 5368120.0, + 4818916.0, + 1002900.0, + 948088.0, + 948388.0, + 1476348.0, + 1416312.0, + 2640316.0, + 3934556.0, + 4967928.0, + 5483172.0, + 5188016.0, + 4355724.0, + 5488700.0, + 5599744.0, + 1322620.0, + 993524.0, + 1493388.0, + 1441168.0, + 3158228.0, + 3950732.0, + 5108300.0, + 5714580.0, + 4510180.0, + 4245572.0, + 5364980.0, + 5172128.0, + 2087596.0, + 959736.0, + 931220.0, + 930276.0, + 1455480.0, + 1381904.0, + 3162568.0, + 3884572.0, + 5058088.0, + 4583636.0, + 4356728.0, + 4343200.0, + 5418476.0, + 4098212.0, + 1203256.0, + 978276.0, + 948728.0, + 1197432.0, + 1448256.0, + 1449900.0, + 3829228.0, + 4232824.0, + 5319768.0, + 5999796.0, + 4413040.0, + 3943836.0, + 5089304.0, + 5585784.0, + 2652392.0, + 1035156.0, + 937220.0, + 923912.0, + 1449196.0, + 1538864.0 + ], + "disk_bytes": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 41943040.0, + 83886080.0, + 125829120.0, + 209715200.0, + 251658240.0, + 293601280.0, + 335544320.0, + 377487360.0, + 461373440.0, + 503316480.0, + 545259520.0, + 587202560.0, + 629145600.0, + 675237888.0, + 717180928.0, + 801067008.0, + 843010048.0, + 879054848.0, + 879054848.0, + 879054848.0, + 879054848.0, + 897778688.0, + 897778688.0, + 897778688.0, + 1114477568.0, + 2962135040.0, + 2962135040.0, + 2962135040.0, + 4483012608.0, + 5135055872.0, + 5135055872.0, + 5135055872.0, + 5135055872.0, + 5135055872.0, + 5135055872.0, + 4880347136.0, + 3330083840.0, + 3330083840.0, + 1439598592.0, + 979530752.0, + 979530752.0, + 1021473792.0, + 1115993088.0, + 1115993088.0, + 1115993088.0, + 1510679552.0, + 3180712960.0, + 3180712960.0, + 3180712960.0, + 4531551232.0, + 5353269248.0, + 5353269248.0, + 5353269248.0, + 5353269248.0, + 5353269248.0, + 5353269248.0, + 5353269248.0, + 3288549376.0, + 3288549376.0, + 1202059264.0, + 1202059264.0, + 1244002304.0, + 1350153216.0, + 1350153216.0, + 1350153216.0, + 1976999936.0, + 3406726144.0, + 3406726144.0, + 3406726144.0, + 5375920128.0, + 5587429376.0, + 5587429376.0, + 5587429376.0, + 5587429376.0, + 5587429376.0, + 5587429376.0, + 4300721152.0, + 3530856448.0, + 1350153216.0, + 1435559936.0, + 1477502976.0, + 1583886336.0, + 1583886336.0, + 1583886336.0, + 1682493440.0, + 3640743936.0, + 3640743936.0, + 3640743936.0, + 5180012544.0, + 5821162496.0, + 5821162496.0, + 5821162496.0, + 5821162496.0, + 5821162496.0, + 5048475648.0, + 3764304896.0, + 2126316544.0, + 1665305600.0, + 1707248640.0, + 1811697664.0, + 1811697664.0, + 1811697664.0, + 1811697664.0, + 3876958208.0, + 3876958208.0, + 3876958208.0, + 4981874688.0, + 6048974848.0, + 6048974848.0, + 6048974848.0, + 6048974848.0, + 5789203456.0, + 3983713280.0, + 1862029312.0, + 1884486656.0, + 1926429696.0, + 2025450496.0, + 2025450496.0, + 2025450496.0, + 3062676480.0, + 4100428800.0, + 4100428800.0, + 4100428800.0, + 6076694528.0, + 6262727680.0, + 6262727680.0, + 6262727680.0, + 4704943104.0, + 3085483008.0, + 2067393536.0, + 2085829632.0, + 2127772672.0, + 2218011648.0, + 2218011648.0, + 2218011648.0, + 3426783232.0, + 4288819200.0, + 4288819200.0, + 4310149120.0, + 6393247744.0, + 6455287808.0, + 6455287808.0, + 4639264768.0, + 2486552576.0, + 2218011648.0, + 2262696960.0, + 2304640000.0, + 2384263168.0, + 2384263168.0, + 2384263168.0, + 2884405248.0, + 4454297600.0, + 4454297600.0, + 4454297600.0, + 6428060672.0, + 6621540352.0, + 5845720064.0, + 2917676032.0, + 2384263168.0, + 2415513600.0, + 2457456640.0, + 2526687232.0, + 2526687232.0, + 2526687232.0, + 4200035328.0, + 4605487104.0, + 4605487104.0, + 4640616448.0, + 6763964416.0, + 6763964416.0, + 4685164544.0, + 2791948288.0, + 2526687232.0, + 2547053568.0, + 2588996608.0, + 2648308736.0, + 2648308736.0, + 2648308736.0, + 3505740800.0, + 4721460224.0, + 4721460224.0, + 4721460224.0, + 6786375680.0, + 6885585920.0, + 3987426304.0, + 2913801216.0, + 2648308736.0, + 2663217152.0, + 2705160192.0, + 2759144448.0, + 2759144448.0, + 2759144448.0, + 4578544640.0, + 4828618752.0, + 4828618752.0, + 4984119296.0, + 6937564160.0, + 6996421632.0, + 3566731264.0, + 2768141312.0, + 2768141312.0, + 2858129408.0, + 2858129408.0, + 2858129408.0, + 2858129408.0, + 4929744896.0, + 4929744896.0, + 4929744896.0, + 5023625216.0, + 7053816832.0, + 7095406592.0, + 3942072320.0, + 3126817792.0, + 2858129408.0, + 2862707712.0, + 2862707712.0, + 2948927488.0, + 2948927488.0, + 2948927488.0, + 3523542016.0, + 5018554368.0, + 5018554368.0, + 5018554368.0, + 6799480832.0, + 7186204672.0, + 5889300480.0, + 3214241792.0, + 2951198720.0, + 2951198720.0, + 3035369472.0, + 3035369472.0, + 3035369472.0, + 3193882624.0, + 5101946880.0, + 5101946880.0, + 5101946880.0, + 5845169152.0, + 7272645632.0, + 5982323712.0, + 3306186752.0, + 3035369472.0, + 3036198912.0, + 3036198912.0, + 3119092736.0, + 3119092736.0, + 3119092736.0, + 3195622400.0, + 5190376448.0, + 5190376448.0, + 5190376448.0, + 6452847616.0, + 7356368896.0, + 5798365184.0, + 3389732864.0, + 3119092736.0, + 3119354880.0, + 3119354880.0, + 3201610752.0, + 3201610752.0, + 3201610752.0, + 5137193984.0, + 5271835648.0, + 5271835648.0, + 5590724608.0, + 7369998336.0, + 6661242880.0, + 3466940416.0, + 3201677312.0, + 3201677312.0, + 3283686400.0, + 3283686400.0, + 3283686400.0, + 5334781952.0, + 5354159104.0, + 5354159104.0, + 5503601664.0, + 7429731328.0, + 7520962560.0, + 4376008704.0, + 3554798592.0, + 3283686400.0, + 3283696640.0, + 3325639680.0, + 3365624832.0, + 3365624832.0, + 3365624832.0, + 5430649856.0, + 5430649856.0, + 5430649856.0, + 6014040064.0, + 7602902016.0, + 6569742336.0, + 3635362816.0, + 3365624832.0, + 3365628928.0, + 3365628928.0, + 3447546880.0, + 3447546880.0, + 3447546880.0, + 3447546880.0, + 5508371456.0, + 5652988928.0, + 5652988928.0, + 5652988928.0, + 7451029504.0, + 7684820992.0, + 3966630912.0, + 3715161088.0, + 3447546880.0, + 3447548928.0, + 3447548928.0 + ] + } + ], + "environment": { + "timestamp": "2026-09-28T14:14:24.524748+00:00", + "platform": "Linux-7.0.0-1006-aws-x86_64-with-glibc2.43", + "python": "3.12.14", + "cpu_count": 16, + "gnuplot": true, + "package:pyspark": "4.0.1", + "package:sail-nutmeg": "0.1.0", + "package:gfrs-poc": "0.1.0", + "git_commit": "2fbc6c50ac1815371e4813e3f49e687b7639ae94" + } +} \ No newline at end of file diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/disk.dat b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/disk.dat new file mode 100644 index 00000000..25d3ad99 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/disk.dat @@ -0,0 +1,101 @@ +# fraction_pct mean ci_low ci_high +0.000000 0.000000 0.000000 0.000000 +1.010101 0.000000 0.000000 0.000000 +2.020202 0.033892 0.000000 0.074388 +3.030303 0.199385 0.169202 0.229568 +4.040404 0.339928 0.329823 0.350032 +5.050505 0.488534 0.447276 0.529793 +6.060606 0.634036 0.613197 0.654876 +7.070707 0.810335 0.789665 0.831005 +8.080808 0.824967 0.807170 0.842763 +9.090909 1.479982 0.000000 3.480252 +10.101010 3.431722 1.282798 5.580646 +11.111111 4.175321 2.243633 6.107010 +12.121212 3.561408 0.000000 7.446569 +13.131313 4.132894 2.385494 5.880294 +14.141414 3.423279 0.000000 7.422808 +15.151515 3.465642 0.000000 7.330528 +16.161616 4.107953 2.281642 5.934264 +17.171717 4.781066 4.404006 5.158126 +18.181818 4.651205 3.226051 6.076358 +19.191919 3.184222 0.000000 6.721184 +20.202020 1.140923 0.906710 1.375136 +21.212121 1.555030 0.235235 2.874825 +22.222222 3.400454 0.000000 6.926371 +23.232323 5.182403 4.722894 5.641913 +24.242424 5.148461 4.884954 5.411968 +25.252525 4.815580 3.812970 5.818189 +26.262626 1.983445 0.255144 3.711746 +27.272727 2.062959 0.517218 3.608700 +28.282828 3.862391 2.618081 5.106701 +29.292929 4.354383 2.644596 6.064169 +30.303030 5.482885 5.242132 5.723638 +31.313131 4.275177 2.491793 6.058561 +32.323232 1.744438 1.442966 2.045910 +33.333333 1.753565 1.542455 1.964675 +34.343434 3.432051 2.536883 4.327219 +35.353535 5.262368 3.937109 6.587628 +36.363636 5.194364 3.797059 6.591668 +37.373737 3.157518 0.870636 5.444399 +38.383838 1.896286 1.765248 2.027325 +39.393939 2.647570 1.362449 3.932691 +40.404040 4.088720 3.482058 4.695382 +41.414141 5.887426 5.712964 6.061888 +42.424242 2.496134 1.674830 3.317437 +43.434343 3.407642 0.000000 7.797206 +44.444444 3.017407 0.925442 5.109373 +45.454545 4.102382 3.812321 4.392442 +46.464646 5.853131 5.501846 6.204417 +47.474747 2.169299 1.866220 2.472378 +48.484848 2.302337 2.041602 2.563073 +49.494949 3.922148 3.064548 4.779747 +50.505051 5.498608 5.414600 5.582617 +51.515152 2.807271 2.269370 3.345173 +52.525253 2.404285 2.136831 2.671739 +53.535354 3.646153 2.091452 5.200854 +54.545455 4.489083 4.152445 4.825720 +55.555556 4.877536 3.280030 6.475043 +56.565657 2.445705 2.234695 2.656714 +57.575758 2.960545 1.387896 4.533194 +58.585859 4.518884 4.126836 4.910932 +59.595960 5.832930 4.134282 7.531577 +60.606061 3.215651 1.170198 5.261104 +61.616162 3.748249 1.839083 5.657415 +62.626263 4.550028 4.335235 4.764822 +63.636364 5.299454 4.300572 6.298335 +64.646465 3.082564 2.302866 3.862263 +65.656566 2.910429 2.076651 3.744208 +66.666667 3.392158 1.201047 5.583268 +67.676768 4.677090 4.512056 4.842123 +68.686869 5.997602 4.040157 7.955047 +69.696970 2.747255 2.598807 2.895703 +70.707071 2.900963 2.529311 3.272616 +71.717172 4.170062 2.511257 5.828868 +72.727273 5.663513 4.265155 7.061872 +73.737374 3.677860 1.660264 5.695456 +74.747475 2.888131 2.759200 3.017062 +75.757576 3.389467 2.375265 4.403668 +76.767677 4.040298 2.772210 5.308386 +77.777778 5.497496 4.458996 6.535996 +78.787879 2.908926 2.755275 3.062577 +79.797980 2.981401 2.840536 3.122265 +80.808081 4.924502 4.780640 5.068364 +81.818182 6.147789 4.494617 7.800960 +82.828283 3.705562 1.466010 5.945113 +83.838384 3.742459 1.559411 5.925507 +84.848485 4.386353 2.385875 6.386831 +85.858586 4.993643 1.680798 8.306488 +86.868687 3.742479 1.559467 5.925491 +87.878788 3.767938 1.628795 5.907082 +88.888889 3.715030 1.689456 5.740605 +89.898990 4.369531 0.262612 8.476451 +90.909091 3.072119 2.968608 3.175630 +91.919192 5.041918 1.523869 8.559967 +92.929293 5.049130 5.014585 5.083675 +93.939394 6.256224 5.934836 6.577612 +94.949495 3.134292 3.133977 3.134607 +95.959596 3.292472 3.032009 3.552935 +96.969697 4.976089 4.054147 5.898032 +97.979798 5.029464 4.384389 5.674539 +98.989899 4.477095 1.497801 7.456388 +100.000000 3.236016 3.155299 3.316732 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/disk.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/disk.gnuplot new file mode 100644 index 00000000..e9d94598 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/disk.gnuplot @@ -0,0 +1,10 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/disk.png' +set title "pregel pagerank / graph500-24 (M) — max_mem_24G_smj_parts_8 — disk usage" +set xlabel 'fraction of run (%)' +set ylabel 'disk consumed (GiB)' +set grid +set key top left +set yrange [0:*] +plot '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/disk.dat' using 1:3:4 with filledcurves lc rgb '#cccccc' title '95% CI', \ + '' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'mean' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/disk.png b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/disk.png new file mode 100644 index 00000000..5463005a Binary files /dev/null and b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/disk.png differ diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/rss.dat b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/rss.dat new file mode 100644 index 00000000..15afa393 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/rss.dat @@ -0,0 +1,101 @@ +# fraction_pct mean ci_low ci_high +0.000000 0.056492 0.056180 0.056804 +1.010101 7.571379 7.498735 7.644024 +2.020202 5.569146 5.524586 5.613706 +3.030303 5.559722 5.510700 5.608745 +4.040404 5.555005 5.494442 5.615569 +5.050505 5.547510 5.471648 5.623372 +6.060606 5.435158 5.373668 5.496648 +7.070707 3.099774 1.104194 5.095354 +8.080808 1.842570 0.000000 4.377030 +9.090909 4.176849 3.918685 4.435012 +10.101010 3.012157 0.141958 5.882356 +11.111111 3.619586 1.401789 5.837383 +12.121212 1.302624 1.202382 1.402865 +13.131313 2.594151 0.000000 6.559857 +14.141414 2.554569 0.000000 6.581194 +15.151515 3.478878 0.000000 7.101595 +16.161616 3.504459 0.000000 7.149262 +17.171717 3.408774 0.000000 6.979779 +18.181818 1.313680 1.045451 1.581909 +19.191919 1.407799 1.178999 1.636599 +20.202020 1.407251 1.232540 1.581961 +21.212121 3.761480 1.050004 6.472955 +22.222222 3.934304 0.000000 8.142819 +23.232323 3.245439 0.000000 6.494037 +24.242424 1.224420 1.162824 1.286016 +25.252525 1.312403 1.018778 1.606027 +26.262626 1.403150 1.325120 1.481181 +27.272727 3.708283 2.219034 5.197532 +28.282828 3.737433 0.000000 7.494748 +29.292929 4.833542 4.097463 5.569621 +30.303030 1.226616 1.170767 1.282465 +31.313131 1.220553 1.112913 1.328192 +32.323232 1.398311 1.248322 1.548301 +33.333333 3.512187 1.565020 5.459354 +34.343434 4.531799 3.324983 5.738615 +35.353535 4.155203 1.886757 6.423648 +36.363636 1.384656 0.902410 1.866902 +37.373737 1.398053 0.937643 1.858464 +38.383838 1.733533 0.814541 2.652526 +39.393939 4.798825 3.760233 5.837416 +40.404040 4.704022 4.193630 5.214413 +41.414141 2.090798 0.589394 3.592202 +42.424242 1.590229 1.246103 1.934354 +43.434343 2.441608 0.000000 5.532186 +44.444444 4.795523 3.817793 5.773252 +45.454545 4.520733 3.930933 5.110533 +46.464646 1.569819 1.418956 1.720681 +47.474747 1.256800 0.979767 1.533833 +48.484848 2.781613 2.183558 3.379668 +49.494949 5.074491 4.697161 5.451820 +50.505051 5.033019 4.738812 5.327226 +51.515152 1.338361 0.916242 1.760480 +52.525253 2.255698 0.597139 3.914256 +53.535354 4.995932 4.302636 5.689228 +54.545455 4.782044 4.286807 5.277281 +55.555556 2.679774 0.000000 6.355924 +56.565657 1.307348 1.237260 1.377436 +57.575758 4.406395 2.845911 5.966879 +58.585859 4.650118 3.805372 5.494863 +59.595960 4.029806 2.262297 5.797315 +60.606061 2.245762 0.000000 5.778975 +61.616162 4.239830 2.033146 6.446515 +62.626263 4.927762 4.612367 5.243157 +63.636364 5.127685 4.955697 5.299674 +64.646465 1.083610 0.619261 1.547959 +65.656566 2.565417 0.000000 6.761072 +66.666667 4.435221 3.763279 5.107162 +67.676768 4.189174 3.300972 5.077377 +68.686869 2.562474 0.000000 6.038821 +69.696970 1.211050 1.000779 1.421321 +70.707071 4.055222 2.594755 5.515689 +71.717172 4.729648 4.083603 5.375693 +72.727273 4.111592 1.865001 6.358183 +73.737374 1.226363 0.106742 2.345985 +74.747475 1.582029 1.022322 2.141735 +75.757576 5.027910 4.559430 5.496389 +76.767677 4.799471 3.716456 5.882487 +77.777778 3.470389 0.000000 7.378303 +78.787879 1.109146 0.755252 1.463040 +79.797980 4.351462 3.632320 5.070604 +80.808081 4.263433 4.128493 4.398372 +81.818182 2.905401 0.093937 5.716866 +82.828283 1.136871 0.976493 1.297250 +83.838384 2.626476 0.204452 5.048500 +84.848485 3.085918 0.000000 6.674405 +85.858586 2.905797 0.000000 6.007278 +86.868687 1.865865 0.000000 3.777758 +87.878788 2.779255 0.000189 5.558322 +88.888889 3.234765 1.308560 5.160971 +89.898990 3.079481 1.601216 4.557745 +90.909091 2.221684 0.621674 3.821695 +91.919192 4.274354 2.512861 6.035847 +92.929293 4.488127 3.116486 5.859767 +93.939394 3.084620 0.000000 6.438519 +94.949495 1.204638 0.863925 1.545351 +95.959596 3.982497 1.601234 6.363761 +96.969697 4.989573 4.045815 5.933332 +97.979798 3.648429 0.000000 7.943769 +98.989899 2.456987 0.000000 6.751919 +100.000000 1.256433 0.972475 1.540391 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/rss.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/rss.gnuplot new file mode 100644 index 00000000..9143f81c --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/rss.gnuplot @@ -0,0 +1,10 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/rss.png' +set title "pregel pagerank / graph500-24 (M) — max_mem_24G_smj_parts_8 — RSS" +set xlabel 'fraction of run (%)' +set ylabel 'RSS (GiB)' +set grid +set key top left +set yrange [0:*] +plot '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/rss.dat' using 1:3:4 with filledcurves lc rgb '#cccccc' title '95% CI', \ + '' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'mean' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/rss.png b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/rss.png new file mode 100644 index 00000000..550ffccf Binary files /dev/null and b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/rss.png differ diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.dat b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.dat new file mode 100644 index 00000000..7d6dceca --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.dat @@ -0,0 +1,257 @@ +# time_s density +155.636367 1.08462832e-05 +155.816207 1.29069156e-05 +155.996046 1.53297045e-05 +156.175886 1.81725085e-05 +156.355725 2.15013523e-05 +156.535565 2.53913895e-05 +156.715404 2.992795e-05 +156.895244 3.52076702e-05 +157.075083 4.13397105e-05 +157.254923 4.84470581e-05 +157.434762 5.66679153e-05 +157.614602 6.61571704e-05 +157.794441 7.7087947e-05 +157.974281 8.96532267e-05 +158.15412 0.000104067537 +158.33396 0.000120568691 +158.513799 0.000139419577 +158.693639 0.000160909964 +158.873478 0.000185358328 +159.053318 0.000213113658 +159.233157 0.000244557231 +159.412997 0.000280104323 +159.592836 0.000320205823 +159.772676 0.000365349731 +159.952515 0.000416062481 +160.132355 0.000472910068 +160.312194 0.000536498932 +160.492034 0.00060747655 +160.671873 0.000686531696 +160.851713 0.000774394315 +161.031552 0.000871834973 +161.211392 0.000979663822 +161.391231 0.00109872903 +161.571071 0.00122991468 +161.75091 0.00137413795 +161.93075 0.00153234578 +162.110589 0.00170551073 +162.290429 0.00189462612 +162.470268 0.00210070053 +162.650108 0.00232475137 +162.829947 0.00256779786 +163.009787 0.0028308531 +163.189626 0.00311491546 +163.369466 0.00342095927 +163.549305 0.00374992478 +163.729145 0.00410270754 +163.908984 0.0044801472 +164.088824 0.00488301591 +164.268664 0.00531200625 +164.448503 0.00576771904 +164.628343 0.00625065093 +164.808182 0.00676118208 +164.988022 0.007299564 +165.167861 0.00786590778 +165.347701 0.00846017278 +165.52754 0.00908215614 +165.70738 0.00973148309 +165.887219 0.0104075984 +166.067059 0.0111097593 +166.246898 0.0118370294 +166.426738 0.0125882748 +166.606577 0.0133621619 +166.786417 0.0141571569 +166.966256 0.0149715277 +167.146096 0.0158033483 +167.325935 0.0166505047 +167.505775 0.0175107043 +167.685614 0.0183814868 +167.865454 0.0192602383 +168.045293 0.0201442071 +168.225133 0.0210305228 +168.404972 0.0219162166 +168.584812 0.0227982446 +168.764651 0.0236735123 +168.944491 0.0245389016 +169.12433 0.0253912989 +169.30417 0.0262276237 +169.484009 0.0270448599 +169.663849 0.0278400854 +169.843688 0.0286105037 +170.023528 0.0293534745 +170.203367 0.0300665434 +170.383207 0.0307474718 +170.563046 0.0313942639 +170.742886 0.0320051931 +170.922725 0.0325788257 +171.102565 0.0331140422 +171.282404 0.0336100556 +171.462244 0.034066427 +171.642083 0.0344830766 +171.821923 0.0348602926 +172.001762 0.0351987345 +172.181602 0.0354994339 +172.361441 0.0357637899 +172.541281 0.0359935607 +172.72112 0.0361908516 +172.90096 0.0363580982 +173.080799 0.0364980453 +173.260639 0.0366137232 +173.440478 0.0367084191 +173.620318 0.036785646 +173.800157 0.0368491081 +173.979997 0.0369026642 +174.159836 0.0369502883 +174.339676 0.0369960287 +174.519515 0.0370439657 +174.699355 0.0370981683 +174.879195 0.0371626514 +175.059034 0.0372413319 +175.238874 0.0373379864 +175.418713 0.0374562095 +175.598553 0.0375993744 +175.778392 0.0377705948 +175.958232 0.0379726898 +176.138071 0.0382081513 +176.317911 0.0384791155 +176.49775 0.0387873366 +176.67759 0.0391341656 +176.857429 0.0395205324 +177.037269 0.0399469325 +177.217108 0.0404134178 +177.396948 0.0409195917 +177.576787 0.0414646091 +177.756627 0.0420471801 +177.936466 0.0426655785 +178.116306 0.0433176543 +178.296145 0.04400085 +178.475985 0.0447122207 +178.655824 0.045448458 +178.835664 0.0462059166 +179.015503 0.0469806444 +179.195343 0.0477684144 +179.375182 0.0485647598 +179.555022 0.0493650096 +179.734861 0.0501643271 +179.914701 0.0509577486 +180.09454 0.051740223 +180.27438 0.0525066516 +180.454219 0.0532519282 +180.634059 0.0539709787 +180.813898 0.0546587998 +180.993738 0.0553104966 +181.173577 0.0559213194 +181.353417 0.0564866982 +181.533256 0.0570022758 +181.713096 0.0574639385 +181.892935 0.0578678449 +182.072775 0.0582104515 +182.252614 0.0584885367 +182.432454 0.0586992208 +182.612293 0.0588399846 +182.792133 0.0589086836 +182.971972 0.0589035603 +183.151812 0.0588232529 +183.331651 0.0586668012 +183.511491 0.05843365 +183.69133 0.0581236483 +183.87117 0.0577370469 +184.051009 0.0572744924 +184.230849 0.0567370192 +184.410688 0.0561260379 +184.590528 0.0554433222 +184.770367 0.0546909927 +184.950207 0.0538714995 +185.130046 0.0529876015 +185.309886 0.0520423452 +185.489726 0.0510390408 +185.669565 0.0499812378 +185.849405 0.0488726986 +186.029244 0.0477173716 +186.209084 0.0465193637 +186.388923 0.0452829113 +186.568763 0.0440123524 +186.748602 0.0427120972 +186.928442 0.0413866002 +187.108281 0.0400403314 +187.288121 0.0386777489 +187.46796 0.0373032723 +187.6478 0.0359212563 +187.827639 0.0345359667 +188.007479 0.0331515567 +188.187318 0.0317720449 +188.367158 0.0304012958 +188.546997 0.0290430009 +188.726837 0.0277006626 +188.906676 0.0263775794 +189.086516 0.0250768338 +189.266355 0.0238012815 +189.446195 0.0225535435 +189.626034 0.021336 +189.805874 0.0201507859 +189.985713 0.018999789 +190.165553 0.0178846499 +190.345392 0.0168067638 +190.525232 0.015767284 +190.705071 0.0147671274 +190.884911 0.013806981 +191.06475 0.0128873107 +191.24459 0.01200837 +191.424429 0.0111702115 +191.604269 0.0103726979 +191.784108 0.00961551489 +191.963948 0.00889818362 +192.143787 0.00822007473 +192.323627 0.00758042198 +192.503466 0.00697833629 +192.683306 0.00641281982 +192.863145 0.00588277988 +193.042985 0.00538704267 +193.222824 0.00492436666 +193.402664 0.00449345547 +193.582503 0.0040929703 +193.762343 0.00372154165 +193.942182 0.00337778042 +194.122022 0.00306028827 +194.301861 0.00276766714 +194.481701 0.00249852803 +194.66154 0.00225149894 +194.84138 0.00202523195 +195.021219 0.00181840952 +195.201059 0.00162974995 +195.380898 0.00145801201 +195.560738 0.00130199888 +195.740577 0.00116056132 +195.920417 0.00103260013 +196.100257 0.000917067985 +196.280096 0.000812970667 +196.459936 0.000719367751 +196.639775 0.000635372763 +196.819615 0.000560152915 +196.999454 0.00049292842 +197.179294 0.00043297147 +197.359133 0.000379604904 +197.538973 0.000332200625 +197.718812 0.000290177805 +197.898652 0.000253000923 +198.078491 0.00022017767 +198.258331 0.000191256767 +198.43817 0.00016582571 +198.61801 0.000143508498 +198.797849 0.000123963341 +198.977689 0.000106880399 +199.157528 9.19795461e-05 +199.337368 7.90081963e-05 +199.517207 6.77391959e-05 +199.697047 5.79687947e-05 +199.876886 4.95147069e-05 +200.056726 4.22142666e-05 +200.236565 3.59226849e-05 +200.416405 3.0511409e-05 +200.596244 2.58665868e-05 +200.776084 2.18876355e-05 +200.955923 1.84859136e-05 +201.135763 1.55834946e-05 +201.315602 1.31120374e-05 +201.495442 1.10117526e-05 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.gnuplot new file mode 100644 index 00000000..44dd3945 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.gnuplot @@ -0,0 +1,21 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.png' +set title "pregel pagerank / graph500-24 (M) — max_mem_24G_smj_parts_8\nmedian=181.193s mean=179.442s std=6.653s min=172.089s max=185.043s p90=184.273s p95=184.658s runs=3" +set xlabel 'wall time (s)' +set ylabel 'probability density (1/s)' +set tmargin 5 +set yrange [0:0.0765813] +set xrange [155.636367:201.495442] +set grid y +set key top right +set arrow from 181.193367,0 to 181.193367,0.0765813 nohead lc rgb 'red' lw 2 +set label 'median 181.193s' at 181.193367,0.0765813 offset char 0,1 tc rgb 'red' +set arrow from 184.273187,0 to 184.273187,0.0765813 nohead lc rgb 'orange' lw 1 dt 2 +set label 'p90 184.273s' at 184.273187,0.0765813 offset char 0,1 tc rgb 'orange' +set arrow from 184.658164,0 to 184.658164,0.0765813 nohead lc rgb 'orange' lw 1 dt 3 +set label 'p95 184.658s' at 184.658164,0.0765813 offset char 0,1 tc rgb 'orange' +set arrow from 172.088667,0 to 172.088667,0.00235635 nohead lc rgb '#666666' lw 1 +set arrow from 181.193367,0 to 181.193367,0.00235635 nohead lc rgb '#666666' lw 1 +set arrow from 185.043142,0 to 185.043142,0.00235635 nohead lc rgb '#666666' lw 1 +plot '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.dat' using 1:2 with filledcurves y=0 lc rgb '#4682b4' fs transparent solid 0.25 title 'kernel density', \ + '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.dat' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'KDE (runs)' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.png b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.png new file mode 100644 index 00000000..058b4674 Binary files /dev/null and b/examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.png differ diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/benchmark.json b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/benchmark.json new file mode 100644 index 00000000..1626b776 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/benchmark.json @@ -0,0 +1,3850 @@ +{ + "algorithm": "pagerank", + "engine": "pregel", + "dataset": "cit-Patents", + "size_class": "XS", + "params": { + "max_memory": "24G", + "use_smj": true, + "join": "smj", + "partitions": 8, + "threads": 8, + "tol": 1e-05, + "damping": 0.85, + "max_iter": 0, + "nutmeg_kernel": null, + "nutmeg_memory": null, + "sail_binary": "/home/ubuntu/sail/target/release/sail", + "work_dir": "/home/ubuntu/nvm/wd/pregel_cit-Patents", + "runs": 3, + "warmup": 1, + "target_samples": 300, + "align": "dtw", + "disk_mode": "du" + }, + "graph": { + "vertices": 3000000, + "edges": 16000000, + "nodes_str": "3M", + "edges_str": "16M" + }, + "warmup": { + "wall_time_s": 15.042398806000165, + "sampling_interval_s": null + }, + "runs": [ + { + "index": 0, + "wall_time_s": 14.729314647000137, + "peak_rss_kb": 1339196.0, + "peak_disk_bytes": 828781568.0, + "n_samples": 293, + "details": { + "iterations": 15, + "active_counts": [ + 3258983, + 2781192, + 2418960, + 2017792, + 1531785, + 1031933, + 605358, + 310112, + 142132, + 59052, + 20481, + 5271, + 811, + 56, + 0 + ], + "wall_time_s": 14.729314647000137, + "result": "/home/ubuntu/nvm/wd/pregel_cit-Patents/run_0/result" + } + }, + { + "index": 1, + "wall_time_s": 14.673384642999736, + "peak_rss_kb": 1331332.0, + "peak_disk_bytes": 800498688.0, + "n_samples": 291, + "details": { + "iterations": 15, + "active_counts": [ + 3258983, + 2781192, + 2418960, + 2017792, + 1531785, + 1031933, + 605358, + 310112, + 142132, + 59052, + 20481, + 5271, + 811, + 56, + 0 + ], + "wall_time_s": 14.673384642999736, + "result": "/home/ubuntu/nvm/wd/pregel_cit-Patents/run_1/result" + } + }, + { + "index": 2, + "wall_time_s": 14.997924194000007, + "peak_rss_kb": 1365832.0, + "peak_disk_bytes": 800479232.0, + "n_samples": 298, + "details": { + "iterations": 15, + "active_counts": [ + 3258983, + 2781192, + 2418960, + 2017792, + 1531785, + 1031933, + 605358, + 310112, + 142132, + 59052, + 20481, + 5271, + 811, + 56, + 0 + ], + "wall_time_s": 14.997924194000007, + "result": "/home/ubuntu/nvm/wd/pregel_cit-Patents/run_2/result" + } + } + ], + "stats": { + "wall_time_s": { + "n": 3, + "median": 14.729314647000137, + "mean": 14.80020782799996, + "std": 0.1734960010348064, + "min": 14.673384642999736, + "max": 14.997924194000007, + "p90": 14.944202284600033, + "p95": 14.971063239300019 + }, + "peak_rss_kb": { + "n": 3, + "median": 1339196.0, + "mean": 1345453.3333333333, + "std": 18081.154977858394, + "min": 1331332.0, + "max": 1365832.0, + "p90": 1360504.8, + "p95": 1363168.4 + }, + "peak_disk_bytes": { + "n": 3, + "median": 800498688.0, + "mean": 809919829.3333334, + "std": 16334747.741584666, + "min": 800479232.0, + "max": 828781568.0, + "p90": 823124992.0, + "p95": 825953280.0 + }, + "medges_per_sec": 1.0862691430968012 + }, + "series": { + "alignment": "dtw", + "ref_run": 0, + "band_frac": 0.25, + "grid_size": 100, + "rss_bands_gib": [ + [ + 0.056461334228515625, + 0.05608970720738527, + 0.05683296124964598 + ], + [ + 0.09391675339682587, + 0.09249021534952867, + 0.09534329144412307 + ], + [ + 0.6292415823083143, + 0.6164329598808054, + 0.6420502047358232 + ], + [ + 0.931099432682882, + 0.914486658902272, + 0.947712206463492 + ], + [ + 0.9368563537963812, + 0.91704288577403, + 0.9566698218187324 + ], + [ + 0.9651781574604118, + 0.9338390902637682, + 0.9965172246570554 + ], + [ + 0.8817731553085685, + 0.5717950037221055, + 1.1917513068950316 + ], + [ + 0.7866822692201022, + 0.4763417346203283, + 1.0970228038198762 + ], + [ + 0.7245721474795407, + 0.6614770749619253, + 0.787667219997156 + ], + [ + 0.7817749038853504, + 0.6706618160339094, + 0.8928879917367915 + ], + [ + 0.9227994834506776, + 0.6267047090543139, + 1.2188942578470414 + ], + [ + 1.200309476005011, + 1.1772368380555518, + 1.2233821139544703 + ], + [ + 1.1675495011684685, + 0.9831276873272463, + 1.3519713150096906 + ], + [ + 1.1068804032280217, + 0.7259052895385198, + 1.4878555169175236 + ], + [ + 0.964151667964138, + 0.5461490178537751, + 1.3821543180745008 + ], + [ + 1.05181535467433, + 0.7765202949644141, + 1.327110414384246 + ], + [ + 1.0713931953502123, + 0.8281375930427379, + 1.3146487976576866 + ], + [ + 1.0223476323091654, + 0.7000216426886464, + 1.3446736219296844 + ], + [ + 0.9865412584100725, + 0.6010669996406531, + 1.3720155171794919 + ], + [ + 1.1960336986557636, + 1.145574974462351, + 1.2464924228491763 + ], + [ + 1.0760416175284317, + 0.959206250616602, + 1.1928769844402614 + ], + [ + 1.1334479014111551, + 1.0062140662321342, + 1.2606817365901761 + ], + [ + 1.104074022405342, + 1.0887658907336464, + 1.1193821540770377 + ], + [ + 1.1245299140813065, + 1.1054691068366689, + 1.1435907213259442 + ], + [ + 1.1302017868271417, + 1.0966313142809827, + 1.1637722593733006 + ], + [ + 1.138021882662424, + 1.1184054542879285, + 1.1576383110369195 + ], + [ + 1.0853969641733678, + 0.9276681607924864, + 1.2431257675542493 + ], + [ + 1.121782570817141, + 1.07873935215914, + 1.164825789475142 + ], + [ + 1.1366927846523325, + 1.1239961525846278, + 1.1493894167200371 + ], + [ + 1.1000072453354839, + 0.9912374626832022, + 1.2087770279877654 + ], + [ + 1.1959527040269478, + 1.118043004280122, + 1.2738624037737736 + ], + [ + 1.0767054022384555, + 0.6985805312860434, + 1.4548302731908676 + ], + [ + 1.2131025940778397, + 1.1514325283762712, + 1.2747726597794082 + ], + [ + 1.2096858540393056, + 1.1019169367506636, + 1.3174547713279476 + ], + [ + 1.2292960112929794, + 1.1395272604296194, + 1.3190647621563394 + ], + [ + 1.2374340042506742, + 1.1602014756965162, + 1.3146665328048321 + ], + [ + 1.245440443485255, + 1.1536890475073447, + 1.3371918394631654 + ], + [ + 1.2318987155857613, + 1.1845323221931967, + 1.2792651089783258 + ], + [ + 1.2372574118310398, + 1.185403014302475, + 1.2891118093596046 + ], + [ + 1.2445647238426105, + 1.1740655101126232, + 1.3150639375725979 + ], + [ + 1.1959419924496997, + 1.0242582899103578, + 1.3676256949890415 + ], + [ + 1.2414060016881645, + 1.169935455769649, + 1.31287654760668 + ], + [ + 1.2419854112589712, + 1.1707982497096703, + 1.3131725728082722 + ], + [ + 1.2443239413025577, + 1.1738006321118901, + 1.3148472504932254 + ], + [ + 1.2524789012340574, + 1.168741023997248, + 1.3362167784708667 + ], + [ + 1.2553871727165469, + 1.1680782379326935, + 1.3426961075004002 + ], + [ + 1.2444768604512084, + 1.1716537598218852, + 1.3172999610805316 + ], + [ + 1.2490192199852406, + 1.1996877979457439, + 1.2983506420247373 + ], + [ + 1.1165275499386214, + 0.9528140895460595, + 1.2802410103311832 + ], + [ + 1.1163941597172364, + 0.9547642704074668, + 1.278024049027006 + ], + [ + 1.1223409379268336, + 0.9662007017660548, + 1.2784811740876125 + ], + [ + 1.14132711036431, + 0.9536735578391997, + 1.32898066288942 + ], + [ + 1.048815138861553, + 0.9458444490506285, + 1.1517858286724774 + ], + [ + 1.0938037040750503, + 0.8706408158039058, + 1.3169665923461948 + ], + [ + 1.0925726113861127, + 0.9137238463932381, + 1.2714213763789872 + ], + [ + 0.9828893845362924, + 0.9077814675285028, + 1.057997301544082 + ], + [ + 0.9869138151097813, + 0.9243292951347635, + 1.049498335084799 + ], + [ + 0.9873971788415711, + 0.9230620177178264, + 1.0517323399653158 + ], + [ + 1.0761674719231074, + 0.8588279398281506, + 1.293507004018064 + ], + [ + 1.1636895478949907, + 0.9003753355521011, + 1.4270037602378802 + ], + [ + 1.0125088730665122, + 0.9896006002816305, + 1.0354171458513937 + ], + [ + 1.0222639781306333, + 0.9602896350681923, + 1.0842383211930742 + ], + [ + 1.0271229124444883, + 0.9617883732591066, + 1.09245745162987 + ], + [ + 1.0574155761815422, + 0.9631924915774759, + 1.1516386607856086 + ], + [ + 1.1575641003167523, + 0.9113422011807104, + 1.4037859994527941 + ], + [ + 0.9777814394534016, + 0.7688383277414421, + 1.186724551165361 + ], + [ + 1.1002884917005191, + 0.9261902294042714, + 1.2743867539967668 + ], + [ + 1.0207326935525833, + 0.6253011888137237, + 1.416164198291443 + ], + [ + 1.037539435398309, + 0.692491865296769, + 1.382587005499849 + ], + [ + 1.0806486972976768, + 0.8756352814476869, + 1.2856621131476667 + ], + [ + 0.9938333394401994, + 0.7004976633631677, + 1.287169015517231 + ], + [ + 1.138101623809508, + 0.9773392232002502, + 1.298864024418766 + ], + [ + 1.2053653957656911, + 1.1689249430082211, + 1.2418058485231611 + ], + [ + 1.1673710485928843, + 1.0776897307889914, + 1.2570523663967772 + ], + [ + 1.092474070120381, + 0.8975879889154349, + 1.287360151325327 + ], + [ + 1.1737757967606615, + 0.9718981398219445, + 1.3756534536993783 + ], + [ + 1.1545465578959684, + 0.9298825231486602, + 1.3792105926432767 + ], + [ + 1.1629397948362679, + 0.9484931421913577, + 1.3773864474811781 + ], + [ + 1.0822838912402666, + 0.8158375823603413, + 1.3487302001201917 + ], + [ + 1.0283455363100582, + 0.977942675333361, + 1.0787483972867553 + ], + [ + 1.1481925017634165, + 0.9734205718333595, + 1.3229644316934734 + ], + [ + 0.9269352703595327, + 0.6492399155553945, + 1.204630625163671 + ], + [ + 1.166491956509466, + 1.0795408722546351, + 1.253443040764297 + ], + [ + 1.1031522981864175, + 0.804997397881059, + 1.401307198491776 + ], + [ + 1.1220489139305745, + 0.8829920806868179, + 1.361105747174331 + ], + [ + 1.2162176227228665, + 1.134121063164595, + 1.298314182281138 + ], + [ + 1.2185487417052092, + 1.130402984807289, + 1.3066944986031295 + ], + [ + 1.078603381038099, + 0.8463921858894408, + 1.3108145761867573 + ], + [ + 1.0814343462892844, + 0.8521538495650879, + 1.3107148430134807 + ], + [ + 1.140087022755499, + 0.9548608385401174, + 1.3253132069708804 + ], + [ + 1.2462718384843396, + 1.207645880268687, + 1.2848977966999924 + ], + [ + 1.1918289599710539, + 1.0242162640294592, + 1.3594416559126485 + ], + [ + 1.0961316300610642, + 0.8945150498025589, + 1.2977482103195694 + ], + [ + 1.0950004455956368, + 0.8912938524816062, + 1.2987070387096673 + ], + [ + 1.05286666170783, + 0.7503652129387257, + 1.3553681104769342 + ], + [ + 1.1289944839224602, + 0.8017025825588844, + 1.456286385286036 + ], + [ + 1.2367603029103986, + 1.2157577736478655, + 1.2577628321729317 + ], + [ + 1.2436299067138898, + 1.2118218496029203, + 1.2754379638248594 + ], + [ + 1.2442366147557573, + 1.2114141495797202, + 1.2770590799317945 + ], + [ + 1.1504440307617188, + 0.8275810678623359, + 1.4733069936611016 + ] + ], + "disk_bands_gib": [ + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.0, + 0.0, + 0.0 + ], + [ + 0.04625070796019435, + 0.009972082590821246, + 0.08252933332956745 + ], + [ + 0.057401987005636555, + 0.02799028543186764, + 0.08681368857940547 + ], + [ + 0.05874443054199219, + 0.02743047904968262, + 0.09005838203430175 + ], + [ + 0.06858444213867188, + 0.06858140754699707, + 0.06858747673034668 + ], + [ + 0.07055123647054036, + 0.06429137905904267, + 0.07681109388203805 + ], + [ + 0.07448482513427734, + 0.07448179054260254, + 0.07448785972595215 + ], + [ + 0.07448482513427734, + 0.07448179054260254, + 0.07448785972595215 + ], + [ + 0.07448482513427734, + 0.07448179054260254, + 0.07448785972595215 + ], + [ + 0.08258851369222005, + 0.05680561129252115, + 0.10837141609191894 + ], + [ + 0.08779478929627334, + 0.06516574683427145, + 0.11042383175827522 + ], + [ + 0.09068934122721355, + 0.06490947288337912, + 0.11646920957104798 + ], + [ + 0.09068934122721355, + 0.06490947288337912, + 0.11646920957104798 + ], + [ + 0.09068934122721355, + 0.06490947288337912, + 0.11646920957104798 + ], + [ + 0.11209901173909505, + 0.0522563576273135, + 0.17194166585087658 + ], + [ + 0.11209901173909505, + 0.0522563576273135, + 0.17194166585087658 + ], + [ + 0.12020492553710938, + 0.0861552887371924, + 0.15425456233702634 + ], + [ + 0.13583791523056746, + 0.12015247618419513, + 0.15152335427693978 + ], + [ + 0.15891234079996744, + 0.15887591165354328, + 0.1589487699463916 + ], + [ + 0.15891234079996744, + 0.15887591165354328, + 0.1589487699463916 + ], + [ + 0.15891234079996744, + 0.15887591165354328, + 0.1589487699463916 + ], + [ + 0.1639545808776662, + 0.14788688329437621, + 0.1800222784609562 + ], + [ + 0.17432943979899088, + 0.12524895757590576, + 0.223409922022076 + ], + [ + 0.17432943979899088, + 0.12524895757590576, + 0.223409922022076 + ], + [ + 0.17432943979899088, + 0.12524895757590576, + 0.223409922022076 + ], + [ + 0.20681708911646143, + 0.20153096347434882, + 0.21210321475857405 + ], + [ + 0.22226651509602866, + 0.19506544002634332, + 0.249467590165714 + ], + [ + 0.25268996668981153, + 0.21030335076673673, + 0.29507658261288633 + ], + [ + 0.2690693537394206, + 0.20472791343300945, + 0.33341079404583174 + ], + [ + 0.30562909444173175, + 0.21394547972226116, + 0.3973127091612023 + ], + [ + 0.3322299321492513, + 0.19064692781751338, + 0.4738129364809892 + ], + [ + 0.3322299321492513, + 0.19064692781751338, + 0.4738129364809892 + ], + [ + 0.3392886387564141, + 0.21048428446761644, + 0.4680929930452117 + ], + [ + 0.36107540130615234, + 0.2502398879026797, + 0.471910914709625 + ], + [ + 0.3750740687052409, + 0.2542857144700324, + 0.4958624229404494 + ], + [ + 0.38007322947184247, + 0.25210952740062675, + 0.5080369315430582 + ], + [ + 0.39483992258707684, + 0.3138638212983506, + 0.4758160238758031 + ], + [ + 0.39483992258707684, + 0.3138638212983506, + 0.4758160238758031 + ], + [ + 0.39483992258707684, + 0.3138638212983506, + 0.4758160238758031 + ], + [ + 0.4013032913208008, + 0.3408936138497193, + 0.4617129687918823 + ], + [ + 0.4013032913208008, + 0.3408936138497193, + 0.4617129687918823 + ], + [ + 0.4013032913208008, + 0.3408936138497193, + 0.4617129687918823 + ], + [ + 0.42825476328531903, + 0.3771614184040501, + 0.47934810816658796 + ], + [ + 0.42825476328531903, + 0.3771614184040501, + 0.47934810816658796 + ], + [ + 0.42825476328531903, + 0.3771614184040501, + 0.47934810816658796 + ], + [ + 0.4462035497029622, + 0.4050189935468746, + 0.48738810585904985 + ], + [ + 0.4462035497029622, + 0.4050189935468746, + 0.48738810585904985 + ], + [ + 0.4496787389119466, + 0.40197640736622336, + 0.4973810704576698 + ], + [ + 0.4626315434773763, + 0.45151460174581004, + 0.4737484852089425 + ], + [ + 0.4779307047526042, + 0.433731040452629, + 0.5221303690525794 + ], + [ + 0.48357073465983075, + 0.43915128873396614, + 0.5279901805856954 + ], + [ + 0.48357073465983075, + 0.43915128873396614, + 0.5279901805856954 + ], + [ + 0.48357073465983075, + 0.43915128873396614, + 0.5279901805856954 + ], + [ + 0.4841904670583834, + 0.44071966519340117, + 0.5276612689233656 + ], + [ + 0.5061442057291666, + 0.43795552460926335, + 0.5743328868490699 + ], + [ + 0.5061442057291666, + 0.43795552460926335, + 0.5743328868490699 + ], + [ + 0.5092811584472656, + 0.43824699235971837, + 0.5803153245348129 + ], + [ + 0.5092811584472656, + 0.43824699235971837, + 0.5803153245348129 + ], + [ + 0.5092811584472656, + 0.43824699235971837, + 0.5803153245348129 + ], + [ + 0.5290043952374922, + 0.4288133025595555, + 0.6291954879154289 + ], + [ + 0.5386847382756249, + 0.46369120873884906, + 0.6136782678124008 + ], + [ + 0.5449654708624041, + 0.4837009762611191, + 0.6062299654636891 + ], + [ + 0.5572710037231445, + 0.5241528597472765, + 0.5903891476990125 + ], + [ + 0.5572710037231445, + 0.5241528597472765, + 0.5903891476990125 + ], + [ + 0.5607488702316564, + 0.5315163428690884, + 0.5899813975942244 + ], + [ + 0.5672473907470703, + 0.5347161998528522, + 0.5997785816412884 + ], + [ + 0.5768817835301344, + 0.521854765048326, + 0.6319088020119429 + ], + [ + 0.5878721872965494, + 0.5570111436809524, + 0.6187332309121465 + ], + [ + 0.5975996653238932, + 0.5668020956839874, + 0.628397234963799 + ], + [ + 0.6166272257105719, + 0.5571718487749496, + 0.6760826026461942 + ], + [ + 0.630828963198727, + 0.5902532140017185, + 0.6714047123957356 + ], + [ + 0.630828963198727, + 0.5902532140017185, + 0.6714047123957356 + ], + [ + 0.6352259318033854, + 0.5841597352691645, + 0.6862921283376062 + ], + [ + 0.6352383295694987, + 0.5841379702607692, + 0.6863386888782281 + ], + [ + 0.6352383295694987, + 0.5841379702607692, + 0.6863386888782281 + ], + [ + 0.653779665629069, + 0.5952631196218854, + 0.7122962116362526 + ], + [ + 0.653779665629069, + 0.5952631196218854, + 0.7122962116362526 + ], + [ + 0.663049062093099, + 0.6125084701695666, + 0.7135896540166314 + ], + [ + 0.6722192764282227, + 0.5950581552001982, + 0.7493803976562471 + ], + [ + 0.6722192764282227, + 0.5950581552001982, + 0.7493803976562471 + ], + [ + 0.6814289093017578, + 0.6231813667739836, + 0.739676451829532 + ], + [ + 0.6814303850471629, + 0.6231851838632723, + 0.7396755862310536 + ], + [ + 0.6814413070678711, + 0.6232134253698525, + 0.7396691887658897 + ], + [ + 0.6814413070678711, + 0.6232134253698525, + 0.7396691887658897 + ], + [ + 0.6814413070678711, + 0.6232134253698525, + 0.7396691887658897 + ], + [ + 0.6997772852579752, + 0.6707218076676958, + 0.7288327628482546 + ], + [ + 0.6997772852579752, + 0.6707218076676958, + 0.7288327628482546 + ], + [ + 0.6997817357381185, + 0.6707333387949983, + 0.7288301326812388 + ], + [ + 0.6997817357381185, + 0.6707333387949983, + 0.7288301326812388 + ], + [ + 0.6997817357381185, + 0.6707333387949983, + 0.7288301326812388 + ], + [ + 0.7089382807413737, + 0.6797365786366769, + 0.7381399828460704 + ], + [ + 0.7184792883398798, + 0.7173369452120018, + 0.7196216314677579 + ], + [ + 0.7184815135799515, + 0.7173427857913244, + 0.7196202413685786 + ], + [ + 0.7184815135799515, + 0.7173427857913244, + 0.7196202413685786 + ], + [ + 0.7195467175199154, + 0.7164347363460204, + 0.7226586986938104 + ], + [ + 0.754296620686849, + 0.7263485321710272, + 0.7822447092026708 + ] + ] + }, + "raw_series": [ + { + "t": [ + 0.00011186299980181502, + 0.051896281999688654, + 0.10281573599968397, + 0.15319220699984726, + 0.20356445900051767, + 0.2540534959998695, + 0.30450790200029587, + 0.35495956799968553, + 0.4055378519997248, + 0.4560885769997185, + 0.5065914380002141, + 0.5571371530004399, + 0.6076690979998602, + 0.6581489310001416, + 0.7086590899998555, + 0.7592134710002938, + 0.8098322550004013, + 0.8603703830003724, + 0.9109659759997157, + 0.9615946880003321, + 1.0122701110003618, + 1.0629964360005033, + 1.1136145190002935, + 1.1642162640000606, + 1.2148378379997666, + 1.2653527410002425, + 1.315957306999735, + 1.3665483699996912, + 1.4170891929998106, + 1.4687741220004682, + 1.519483238000248, + 1.5701905089999855, + 1.62090993899983, + 1.671555879999687, + 1.7222557940003753, + 1.7728735720002078, + 1.8235175709996838, + 1.8742188000005626, + 1.9248572920005245, + 1.9754870180004218, + 2.026004899000327, + 2.076553640000384, + 2.127790477000417, + 2.1785512799997377, + 2.2293203139997786, + 2.280034643000363, + 2.330736963000163, + 2.381323278000309, + 2.4319880350003586, + 2.4825926379999146, + 2.5333022940003502, + 2.5838817390003896, + 2.6345580060005886, + 2.6852587660005156, + 2.7358655329999237, + 2.7864491970003655, + 2.8373877680005535, + 2.8882168320005803, + 2.9389571689998775, + 2.98965538199991, + 3.040426497000226, + 3.0912011050004367, + 3.141983008999887, + 3.192681549000554, + 3.2433889180001643, + 3.2939942359998895, + 3.3446605529998124, + 3.395290250000471, + 3.4461059220002426, + 3.4966999569996915, + 3.5474410520000674, + 3.5982830359998843, + 3.6491233389997433, + 3.6997104050005873, + 3.7503825860003417, + 3.800988464000511, + 3.8515741769997476, + 3.902478039000016, + 3.95312888799981, + 4.003760159999729, + 4.054446189999908, + 4.1054423430005045, + 4.156350209000266, + 4.207180915000208, + 4.258211963000576, + 4.309014747000219, + 4.35981619300037, + 4.410614485000224, + 4.461593672000163, + 4.5125814660004835, + 4.563482473000477, + 4.614494459000525, + 4.66525030000048, + 4.716016096999738, + 4.766850985000019, + 4.817577374000393, + 4.868345795000096, + 4.9190484079999806, + 4.969682568999815, + 5.020709514999908, + 5.071735165000064, + 5.122707700000319, + 5.173616381000102, + 5.224481143000048, + 5.275337365000269, + 5.326234481000029, + 5.377205132000199, + 5.428039250000438, + 5.478739019999921, + 5.529786875999889, + 5.580779552999957, + 5.631855679000182, + 5.682717202000276, + 5.733520581999983, + 5.784334095999839, + 5.8352133010002945, + 5.885988007999913, + 5.936724232000415, + 5.987542577000568, + 6.038263379000455, + 6.08899497099992, + 6.139787238999816, + 6.19086124200021, + 6.241854185000193, + 6.292906380999739, + 6.343844668999736, + 6.394591629000388, + 6.445829797000442, + 6.496940318999805, + 6.548055594000289, + 6.59931636500005, + 6.650165987000037, + 6.701047133000429, + 6.751925245999701, + 6.802784807000535, + 6.85367255500023, + 6.9046678490003615, + 6.955442933000086, + 7.006635616000494, + 7.057846482000059, + 7.109006262000548, + 7.159928852000121, + 7.21100090300024, + 7.262068584999724, + 7.31320500000038, + 7.364486516999932, + 7.41566990299998, + 7.466877042000306, + 7.518010996000157, + 7.569084218999706, + 7.620198552000147, + 7.671127169000101, + 7.722075128000142, + 7.773037222000312, + 7.823833051999827, + 7.87512367599993, + 7.926484016999893, + 7.977771937000398, + 8.028948600999684, + 8.080038820000482, + 8.130816413000503, + 8.18166232600015, + 8.232982024000194, + 8.284383813999739, + 8.335480839999946, + 8.386709109000549, + 8.437854218999746, + 8.488899832999778, + 8.540116056000443, + 8.591058228000293, + 8.641933730999881, + 8.692838904999917, + 8.744246920000478, + 8.795578543000374, + 8.846846411000115, + 8.898050001000229, + 8.948948254999777, + 9.000396221999836, + 9.051447650000227, + 9.102436436000062, + 9.153575319000083, + 9.204690904000017, + 9.255979646000014, + 9.307096933000139, + 9.358176648000153, + 9.409221937000439, + 9.460275154000556, + 9.5112189270003, + 9.562170074000278, + 9.613158357999964, + 9.664585901999999, + 9.715879260000293, + 9.767185243999847, + 9.818498170000566, + 9.870098976000008, + 9.921635874000458, + 9.972934731999885, + 10.023998613000003, + 10.07494901300015, + 10.126064363000296, + 10.177188581000337, + 10.228271218999907, + 10.279296415000317, + 10.330914608000057, + 10.382592750000185, + 10.434574228999736, + 10.486117155000102, + 10.537473557999874, + 10.588463474000491, + 10.63948031200016, + 10.690364856000087, + 10.741478447999725, + 10.79267099200024, + 10.843830820000221, + 10.894987597999716, + 10.946138123999845, + 10.997620547999759, + 11.049093180000455, + 11.100306369999998, + 11.151951272000588, + 11.203653988000042, + 11.255879764999918, + 11.307450305000202, + 11.35889777400007, + 11.410075812000287, + 11.461847024000235, + 11.513446472000396, + 11.564539267999862, + 11.615782183999727, + 11.667290815000342, + 11.718474868999692, + 11.76958489899971, + 11.821058381000512, + 11.87216117800017, + 11.923902436999924, + 11.97560711799997, + 12.026736443000118, + 12.078397516999757, + 12.129924646999825, + 12.181015238999862, + 12.23283826199986, + 12.284599853000145, + 12.336088275000293, + 12.387580935000187, + 12.438872319999973, + 12.490367125000375, + 12.541563499999938, + 12.594025907000287, + 12.645529419000013, + 12.697275112999705, + 12.749614690000271, + 12.801423701999738, + 12.853091463000055, + 12.904262695999932, + 12.956133874000443, + 13.008068400999946, + 13.059685320000426, + 13.110905608000394, + 13.162201289000222, + 13.213478128000133, + 13.264728979999745, + 13.316388784000083, + 13.367543418000423, + 13.418717589999687, + 13.46989715700056, + 13.521124400999724, + 13.57283452899992, + 13.624503181999899, + 13.675922565000292, + 13.727818455000488, + 13.779100051000569, + 13.830555559000459, + 13.882011708000391, + 13.933330087000286, + 13.984882376999849, + 14.036440988999857, + 14.089300476000062, + 14.140982928000085, + 14.192614348000461, + 14.24385674000041, + 14.295810749999873, + 14.347579103000498, + 14.398967478000486, + 14.451389771000322, + 14.502672411000276, + 14.554447462000098, + 14.605873162000535, + 14.657534974000555, + 14.709017348000089, + 14.760359462999986, + 14.812099057000523, + 14.865200213000207, + 14.91705663599987 + ], + "rss_kb": [ + 59436.0, + 76764.0, + 92192.0, + 98324.0, + 249672.0, + 498048.0, + 661980.0, + 951152.0, + 963316.0, + 967740.0, + 971868.0, + 968748.0, + 969440.0, + 997164.0, + 999228.0, + 1014896.0, + 1017824.0, + 1025764.0, + 1023804.0, + 1023996.0, + 698668.0, + 730048.0, + 735248.0, + 758524.0, + 758780.0, + 758948.0, + 759636.0, + 760108.0, + 758400.0, + 805260.0, + 871184.0, + 1247336.0, + 1252840.0, + 1274068.0, + 1286396.0, + 1286452.0, + 1286580.0, + 1286676.0, + 1288788.0, + 1288872.0, + 754908.0, + 819560.0, + 851144.0, + 961036.0, + 996924.0, + 998096.0, + 1017164.0, + 1030116.0, + 1039944.0, + 1057740.0, + 1065988.0, + 856484.0, + 858912.0, + 855272.0, + 876404.0, + 947564.0, + 1221576.0, + 1230320.0, + 1235144.0, + 1239584.0, + 1133168.0, + 1134772.0, + 1135400.0, + 1137820.0, + 1144428.0, + 1146044.0, + 1154012.0, + 1179860.0, + 1181164.0, + 1196720.0, + 1204524.0, + 1204688.0, + 1205552.0, + 1206356.0, + 1207260.0, + 1201964.0, + 1026896.0, + 1029544.0, + 1045904.0, + 1269548.0, + 1133452.0, + 1190332.0, + 1192728.0, + 1194820.0, + 1199040.0, + 1199128.0, + 1203260.0, + 1207112.0, + 1209108.0, + 1209336.0, + 1211744.0, + 1227844.0, + 1236628.0, + 1236856.0, + 1237880.0, + 1238980.0, + 1239480.0, + 1228936.0, + 1235840.0, + 954204.0, + 1242040.0, + 1253800.0, + 1259316.0, + 1259472.0, + 1280096.0, + 1282876.0, + 1284180.0, + 1287596.0, + 1289192.0, + 1289840.0, + 1290468.0, + 1297908.0, + 1302800.0, + 1302860.0, + 1302968.0, + 1303156.0, + 1303964.0, + 1287344.0, + 1287840.0, + 1112172.0, + 963788.0, + 1290948.0, + 1294884.0, + 1295104.0, + 1295656.0, + 1295716.0, + 1301028.0, + 1301324.0, + 1303980.0, + 1304048.0, + 1311492.0, + 1314956.0, + 1317632.0, + 1318564.0, + 1318848.0, + 1319100.0, + 1300356.0, + 1301816.0, + 1304212.0, + 1339196.0, + 1313840.0, + 1130928.0, + 1131348.0, + 1134736.0, + 1133440.0, + 1133964.0, + 1134088.0, + 1144868.0, + 1151996.0, + 1154316.0, + 1154432.0, + 1154892.0, + 1155120.0, + 1135992.0, + 1136584.0, + 1136840.0, + 1302440.0, + 1302904.0, + 1196012.0, + 1182340.0, + 1187380.0, + 977256.0, + 978676.0, + 981592.0, + 989576.0, + 993352.0, + 994700.0, + 994824.0, + 995572.0, + 994228.0, + 998804.0, + 1003560.0, + 1299776.0, + 1299996.0, + 1302228.0, + 1302228.0, + 1306740.0, + 1306960.0, + 1002844.0, + 998944.0, + 1043872.0, + 1061160.0, + 1064836.0, + 1065460.0, + 1065680.0, + 1071332.0, + 1106436.0, + 1119476.0, + 1155116.0, + 1298812.0, + 1307728.0, + 1310128.0, + 1058300.0, + 1061320.0, + 1064220.0, + 1069480.0, + 1077448.0, + 846544.0, + 822532.0, + 823208.0, + 834396.0, + 872728.0, + 881172.0, + 916156.0, + 1047652.0, + 1217612.0, + 1220616.0, + 1220632.0, + 1222596.0, + 1225520.0, + 1225900.0, + 1232356.0, + 1238232.0, + 1239912.0, + 1240364.0, + 1240404.0, + 1240748.0, + 909664.0, + 988072.0, + 1068688.0, + 1158928.0, + 1286984.0, + 1287992.0, + 1288072.0, + 1061896.0, + 1065696.0, + 1071500.0, + 1079228.0, + 1079536.0, + 1080300.0, + 1081108.0, + 1082208.0, + 1073316.0, + 1074996.0, + 1081948.0, + 1290764.0, + 1293276.0, + 1116512.0, + 1116532.0, + 1127600.0, + 1160180.0, + 1165472.0, + 1172184.0, + 1172680.0, + 959332.0, + 962388.0, + 964140.0, + 979524.0, + 981080.0, + 1169060.0, + 1318568.0, + 1318568.0, + 1318864.0, + 1324812.0, + 1325700.0, + 1331496.0, + 1335112.0, + 1068252.0, + 1069424.0, + 1069936.0, + 1089404.0, + 1126328.0, + 1154304.0, + 1241512.0, + 1311712.0, + 1315552.0, + 1315552.0, + 1316460.0, + 1320492.0, + 1061360.0, + 1071348.0, + 1072948.0, + 1073044.0, + 1074040.0, + 1074576.0, + 1065172.0, + 911316.0, + 886072.0, + 1001764.0, + 1296924.0, + 1300068.0, + 1300072.0, + 1301736.0, + 1304048.0, + 1308000.0, + 1313704.0, + 1313828.0, + 1314324.0, + 1314932.0, + 1315376.0, + 1305972.0, + 1312744.0, + 1311080.0 + ], + "disk_bytes": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 37748736.0, + 41943040.0, + 41943040.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 106073088.0, + 106073088.0, + 106073088.0, + 106073088.0, + 106073088.0, + 106073088.0, + 106073088.0, + 106073088.0, + 106073088.0, + 106073088.0, + 106073088.0, + 140554240.0, + 140554240.0, + 140554240.0, + 140554240.0, + 140554240.0, + 140554240.0, + 140554240.0, + 140554240.0, + 140554240.0, + 140554240.0, + 140554240.0, + 149991424.0, + 170646528.0, + 170646528.0, + 170646528.0, + 170646528.0, + 170646528.0, + 170646528.0, + 170646528.0, + 170646528.0, + 170646528.0, + 170646528.0, + 220308480.0, + 220308480.0, + 220308480.0, + 220308480.0, + 220308480.0, + 220308480.0, + 220308480.0, + 220308480.0, + 220308480.0, + 220308480.0, + 220308480.0, + 220308480.0, + 247846912.0, + 247846912.0, + 247846912.0, + 247846912.0, + 247846912.0, + 247846912.0, + 247846912.0, + 247846912.0, + 247846912.0, + 247846912.0, + 297240576.0, + 297240576.0, + 297240576.0, + 297240576.0, + 297240576.0, + 297240576.0, + 297240576.0, + 297240576.0, + 297240576.0, + 297240576.0, + 321739776.0, + 321739776.0, + 321739776.0, + 321739776.0, + 321739776.0, + 321739776.0, + 321739776.0, + 321739776.0, + 321739776.0, + 321739776.0, + 369306624.0, + 369306624.0, + 369306624.0, + 369306624.0, + 369306624.0, + 369306624.0, + 369306624.0, + 369306624.0, + 369306624.0, + 376646656.0, + 390126592.0, + 390126592.0, + 390126592.0, + 390126592.0, + 390126592.0, + 390126592.0, + 390126592.0, + 390126592.0, + 390126592.0, + 435219456.0, + 435219456.0, + 435219456.0, + 435219456.0, + 435219456.0, + 435219456.0, + 435219456.0, + 435219456.0, + 451312640.0, + 451312640.0, + 451312640.0, + 451312640.0, + 451312640.0, + 451312640.0, + 451312640.0, + 451312640.0, + 451312640.0, + 493036544.0, + 493036544.0, + 493036544.0, + 493036544.0, + 493036544.0, + 493036544.0, + 493036544.0, + 504297472.0, + 504297472.0, + 504297472.0, + 504297472.0, + 504297472.0, + 504297472.0, + 504297472.0, + 504297472.0, + 504297472.0, + 506394624.0, + 542350336.0, + 542350336.0, + 542350336.0, + 542350336.0, + 542350336.0, + 542350336.0, + 549207040.0, + 549207040.0, + 549207040.0, + 549207040.0, + 549207040.0, + 549207040.0, + 549207040.0, + 549207040.0, + 549207040.0, + 549207040.0, + 574901248.0, + 583868416.0, + 583868416.0, + 583868416.0, + 583868416.0, + 583868416.0, + 583868416.0, + 587243520.0, + 587243520.0, + 587243520.0, + 587243520.0, + 587243520.0, + 587243520.0, + 587243520.0, + 587243520.0, + 587243520.0, + 619379712.0, + 619379712.0, + 619379712.0, + 619379712.0, + 619379712.0, + 619379712.0, + 620882944.0, + 620882944.0, + 620882944.0, + 620882944.0, + 620882944.0, + 620882944.0, + 620882944.0, + 620882944.0, + 620882944.0, + 651623424.0, + 651623424.0, + 651623424.0, + 651623424.0, + 651623424.0, + 651623424.0, + 651623424.0, + 652217344.0, + 652217344.0, + 652217344.0, + 652217344.0, + 652217344.0, + 652217344.0, + 652217344.0, + 652217344.0, + 682225664.0, + 682225664.0, + 682225664.0, + 682225664.0, + 682225664.0, + 682225664.0, + 682225664.0, + 682411008.0, + 682411008.0, + 682411008.0, + 682411008.0, + 682411008.0, + 682411008.0, + 682411008.0, + 682411008.0, + 712077312.0, + 712077312.0, + 712077312.0, + 712077312.0, + 712077312.0, + 712117248.0, + 712117248.0, + 712117248.0, + 712117248.0, + 712117248.0, + 712117248.0, + 712117248.0, + 712117248.0, + 712117248.0, + 741649408.0, + 741649408.0, + 741649408.0, + 741649408.0, + 741649408.0, + 741649408.0, + 741656576.0, + 741656576.0, + 741656576.0, + 741656576.0, + 741656576.0, + 741656576.0, + 741656576.0, + 741656576.0, + 741656576.0, + 771151872.0, + 771151872.0, + 771151872.0, + 771151872.0, + 771151872.0, + 771151872.0, + 771154944.0, + 771154944.0, + 771154944.0, + 771154944.0, + 771154944.0, + 771154944.0, + 771154944.0, + 771154944.0, + 800646144.0, + 800646144.0, + 828781568.0 + ] + }, + { + "t": [ + 0.00011783300033130217, + 0.05190166299962584, + 0.10268514200015488, + 0.1530643220003185, + 0.20341943099992932, + 0.2538836590001665, + 0.3043387289999373, + 0.3548206069999651, + 0.4053521460000411, + 0.45586735300003056, + 0.5063883419998092, + 0.5568818709998595, + 0.6074122740001258, + 0.6579511139998431, + 0.7084875109994755, + 0.7590235199995732, + 0.8095630709995021, + 0.8602134279999518, + 0.9106580970001232, + 0.9611453360002997, + 1.0117077009999775, + 1.062338933999854, + 1.1130008740001358, + 1.1636231490001592, + 1.2142597499996555, + 1.2648642419999305, + 1.3154629869995915, + 1.3660813770002278, + 1.416671203000078, + 1.4671984529995825, + 1.5177367599999343, + 1.5684393860001364, + 1.6191937009998583, + 1.6698555559996748, + 1.7206035050003265, + 1.771324069000002, + 1.8224273119994905, + 1.8730919729996458, + 1.9237169689995426, + 1.974404788999891, + 2.025087996000366, + 2.075703335000071, + 2.1263441620003505, + 2.1771373390001827, + 2.227730339000118, + 2.2784318860003623, + 2.329172472999744, + 2.3798784600003273, + 2.430589010999938, + 2.481315629999699, + 2.5320580830002655, + 2.582775144000152, + 2.6334789880002063, + 2.684060204999696, + 2.734856131000015, + 2.785696189999726, + 2.836469533000127, + 2.8872578680002334, + 2.938016799000252, + 2.9887584689995492, + 3.0394526370000676, + 3.0902921070000957, + 3.14105202599967, + 3.1917629950003175, + 3.2439719180001703, + 3.294815567999649, + 3.3455925859998388, + 3.396448804999636, + 3.4472869800001718, + 3.4981126379998386, + 3.548989805999554, + 3.5997830830001476, + 3.650585602999854, + 3.701386902000195, + 3.751980648999961, + 3.802694412999699, + 3.8535286059995997, + 3.904622005999954, + 3.955547693999506, + 4.00631731500016, + 4.057176346000233, + 4.107934655999998, + 4.158706973000335, + 4.209478011000101, + 4.260162878999836, + 4.31081206700037, + 4.361473345000377, + 4.412107936999746, + 4.462713981999514, + 4.5137058219997925, + 4.564399097000205, + 4.615177447999486, + 4.665873070000089, + 4.716685247999521, + 4.767385442999512, + 4.818032033999771, + 4.8686545009995825, + 4.91934882500027, + 4.970059178000156, + 5.021345789999941, + 5.072223248999762, + 5.123166129999845, + 5.174019619999854, + 5.225023814999986, + 5.275841329000286, + 5.326740763000089, + 5.378061577000153, + 5.4288234949999605, + 5.479761906999556, + 5.530747984999834, + 5.581711761999941, + 5.63257424800031, + 5.683544012000311, + 5.7344408970002405, + 5.785202508999646, + 5.836126252000213, + 5.887221132000377, + 5.938014340000336, + 5.988841995999792, + 6.039931442999659, + 6.09100011999999, + 6.142008115999488, + 6.193093060999672, + 6.244075929000246, + 6.295021375000033, + 6.346025615000144, + 6.397008844999618, + 6.448179668999728, + 6.499265360000209, + 6.550122517999625, + 6.600980262000121, + 6.652059686999564, + 6.7030445159998635, + 6.754118793000089, + 6.80516311700012, + 6.855952867999804, + 6.906809199000236, + 6.958013425999525, + 7.00927576399954, + 7.0604705819996525, + 7.111710612999559, + 7.162862965999921, + 7.214002296999752, + 7.264805851000347, + 7.315795692999927, + 7.366965942000206, + 7.418100969999614, + 7.469300730999748, + 7.520424424999874, + 7.571555522000381, + 7.6225451179998345, + 7.673691355000301, + 7.724723864000225, + 7.775688286999866, + 7.82701199100029, + 7.877870049000194, + 7.929158863999874, + 7.980526147000091, + 8.03180015199996, + 8.08304190600029, + 8.134183762999783, + 8.185291245000371, + 8.236537214999771, + 8.287808007999956, + 8.339056017000075, + 8.390124245000152, + 8.441103975999795, + 8.49209953799982, + 8.543230897000285, + 8.594459709000148, + 8.645512911999504, + 8.696391554999536, + 8.74729497899989, + 8.798684964999666, + 8.850085754999782, + 8.90132454400009, + 8.952542156999698, + 9.003719389999787, + 9.054725154999687, + 9.105633764000231, + 9.15698615600013, + 9.207884903000377, + 9.258985284000119, + 9.310124276000352, + 9.361149076999936, + 9.412456228999872, + 9.463757542000167, + 9.514769471000363, + 9.565652661000058, + 9.61711460100014, + 9.668240906999927, + 9.719649896000192, + 9.770935423000083, + 9.82223251799951, + 9.87364808700022, + 9.925075621999895, + 9.976540687999659, + 10.028009687000122, + 10.079464868999821, + 10.130934152000009, + 10.182390060000216, + 10.233842306000042, + 10.285263363000013, + 10.33620547999999, + 10.387778608999724, + 10.439351076999628, + 10.490863676000117, + 10.542237951000061, + 10.59359829799996, + 10.644614646000264, + 10.696131456999865, + 10.747534399999495, + 10.798997910000253, + 10.850139571, + 10.901341052999669, + 10.95246497900007, + 11.003809849999925, + 11.05497680299959, + 11.105965351999657, + 11.15764671099987, + 11.20917927299979, + 11.26076934699995, + 11.312215850999564, + 11.363684470999942, + 11.415224933999525, + 11.466986010000255, + 11.518514638999477, + 11.57006460499997, + 11.621549853999568, + 11.67277586399996, + 11.724307571000281, + 11.775531541999953, + 11.827871227999822, + 11.879617044999577, + 11.931003734000114, + 11.982696137999483, + 12.034220030000142, + 12.085714159999952, + 12.136699321999913, + 12.187777651000033, + 12.238788841000314, + 12.289746114000081, + 12.340681181999571, + 12.391611521999948, + 12.442542683999818, + 12.493480027999794, + 12.544464403000347, + 12.59554132500034, + 12.647381152999515, + 12.698538691999602, + 12.75034062099985, + 12.801961502999802, + 12.853579053999965, + 12.905510632999722, + 12.957342062999487, + 13.008712498999557, + 13.060093344999586, + 13.111460830999931, + 13.163060564000261, + 13.214292495000336, + 13.265780622999955, + 13.31800850899981, + 13.369970146999549, + 13.42182302099991, + 13.473715651999555, + 13.525397165999493, + 13.577078448000066, + 13.628401623000173, + 13.680270959000154, + 13.732070205999662, + 13.783542172000125, + 13.834992008999507, + 13.88653585999964, + 13.937854982999852, + 13.989519470000232, + 14.040712383000027, + 14.092372109999815, + 14.144332728000336, + 14.196284450999883, + 14.248050467000212, + 14.299802354999883, + 14.351241864000258, + 14.403299487000368, + 14.455386051999994, + 14.507189109999672, + 14.558628210000279, + 14.610113001000173, + 14.661780335000003, + 14.713375440000164, + 14.764875812000355, + 14.816131087999565 + ], + "rss_kb": [ + 59020.0, + 76848.0, + 92204.0, + 98420.0, + 238776.0, + 479636.0, + 686584.0, + 971676.0, + 982892.0, + 986804.0, + 984060.0, + 987404.0, + 987800.0, + 989452.0, + 989460.0, + 989908.0, + 990396.0, + 993564.0, + 993724.0, + 993916.0, + 642796.0, + 692936.0, + 702548.0, + 720240.0, + 720380.0, + 723720.0, + 723888.0, + 724528.0, + 729108.0, + 821408.0, + 933032.0, + 1237344.0, + 1240264.0, + 1246496.0, + 1256816.0, + 1283460.0, + 1283588.0, + 1285844.0, + 1286016.0, + 1286408.0, + 910284.0, + 947756.0, + 1014820.0, + 1036320.0, + 1036996.0, + 1047036.0, + 1059580.0, + 1075104.0, + 1083408.0, + 1112752.0, + 1114236.0, + 921440.0, + 908112.0, + 911940.0, + 951696.0, + 1258424.0, + 1262368.0, + 1263660.0, + 1263940.0, + 1283948.0, + 1140164.0, + 1140448.0, + 1144176.0, + 1144380.0, + 1146260.0, + 1147540.0, + 1147772.0, + 1169432.0, + 1176360.0, + 1182452.0, + 1182904.0, + 1183668.0, + 1184356.0, + 1166900.0, + 1173552.0, + 981140.0, + 1066996.0, + 1296388.0, + 1319532.0, + 1217400.0, + 1229836.0, + 1234624.0, + 1234904.0, + 1234936.0, + 1242304.0, + 1242760.0, + 1243408.0, + 1243428.0, + 1254416.0, + 1262736.0, + 1269812.0, + 1269924.0, + 1270232.0, + 1270480.0, + 1271288.0, + 1267888.0, + 1270416.0, + 1022728.0, + 1174776.0, + 1219968.0, + 1180564.0, + 1214128.0, + 1214476.0, + 1218912.0, + 1231600.0, + 1244312.0, + 1246516.0, + 1257364.0, + 1258132.0, + 1267200.0, + 1273372.0, + 1276472.0, + 1276760.0, + 1278236.0, + 1278908.0, + 1281296.0, + 1290652.0, + 1292488.0, + 1313516.0, + 1169504.0, + 1219708.0, + 1225840.0, + 1226372.0, + 1226768.0, + 1226800.0, + 1232476.0, + 1239680.0, + 1243392.0, + 1244060.0, + 1254388.0, + 1260784.0, + 1261492.0, + 1262092.0, + 1262672.0, + 1263060.0, + 1264708.0, + 1266064.0, + 1305456.0, + 1260860.0, + 1222656.0, + 1243984.0, + 1244484.0, + 1244680.0, + 1246260.0, + 1252628.0, + 1255712.0, + 1256556.0, + 1263576.0, + 1270436.0, + 1274044.0, + 1277156.0, + 1277472.0, + 1278532.0, + 1275500.0, + 1276004.0, + 1277404.0, + 1317836.0, + 1329956.0, + 1031384.0, + 1032004.0, + 1033940.0, + 1035088.0, + 1035868.0, + 1035944.0, + 1042280.0, + 1047756.0, + 1050792.0, + 1051376.0, + 1052572.0, + 1052836.0, + 1051608.0, + 1051996.0, + 1053984.0, + 1301752.0, + 1302988.0, + 1304132.0, + 1304224.0, + 1188440.0, + 733876.0, + 835436.0, + 842360.0, + 870124.0, + 892096.0, + 893256.0, + 900160.0, + 903052.0, + 906156.0, + 896952.0, + 907736.0, + 973796.0, + 1253544.0, + 1258652.0, + 1258652.0, + 1262216.0, + 1264692.0, + 1265288.0, + 1273392.0, + 1011372.0, + 1016700.0, + 1017436.0, + 1017580.0, + 1021160.0, + 1036272.0, + 1062884.0, + 1150896.0, + 1281960.0, + 1289608.0, + 1289680.0, + 1291228.0, + 1292300.0, + 1089024.0, + 1095592.0, + 1096156.0, + 1098108.0, + 1098776.0, + 1098952.0, + 1100056.0, + 853900.0, + 907464.0, + 984928.0, + 1249428.0, + 1257852.0, + 1257852.0, + 1259448.0, + 1265868.0, + 1269800.0, + 1277072.0, + 1279420.0, + 1280184.0, + 1280684.0, + 1281740.0, + 1271004.0, + 1272788.0, + 1273408.0, + 1304140.0, + 1306880.0, + 1084484.0, + 1085000.0, + 1115112.0, + 1116656.0, + 908348.0, + 914716.0, + 914956.0, + 916216.0, + 919664.0, + 929012.0, + 941180.0, + 946496.0, + 976080.0, + 1264116.0, + 1265784.0, + 1265784.0, + 1269468.0, + 1269620.0, + 1275880.0, + 1283408.0, + 1025452.0, + 1031072.0, + 1032320.0, + 1035216.0, + 1045944.0, + 1074700.0, + 1169992.0, + 1315344.0, + 1323888.0, + 1323888.0, + 1324428.0, + 1325476.0, + 1331332.0, + 1093300.0, + 1093428.0, + 1093836.0, + 1093952.0, + 1094448.0, + 1081284.0, + 984260.0, + 953968.0, + 1292860.0, + 1299568.0, + 1299568.0, + 1300000.0, + 1302052.0, + 1302944.0, + 1310672.0, + 1315108.0, + 1315124.0, + 1316104.0, + 1316580.0, + 1317460.0, + 1306896.0, + 1314356.0 + ], + "disk_bytes": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 41943040.0, + 41943040.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 73643008.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 79978496.0, + 106089472.0, + 106089472.0, + 106089472.0, + 106089472.0, + 106089472.0, + 106089472.0, + 106089472.0, + 106089472.0, + 106089472.0, + 106089472.0, + 106089472.0, + 140569600.0, + 140569600.0, + 140569600.0, + 140569600.0, + 140569600.0, + 140569600.0, + 140569600.0, + 140569600.0, + 140569600.0, + 140569600.0, + 140569600.0, + 170639360.0, + 170639360.0, + 170639360.0, + 170639360.0, + 170639360.0, + 170639360.0, + 170639360.0, + 170639360.0, + 170639360.0, + 170639360.0, + 220299264.0, + 220299264.0, + 220299264.0, + 220299264.0, + 220299264.0, + 220299264.0, + 220299264.0, + 220299264.0, + 220299264.0, + 220299264.0, + 220299264.0, + 229212160.0, + 247777280.0, + 247777280.0, + 247777280.0, + 247777280.0, + 247777280.0, + 247777280.0, + 247777280.0, + 247777280.0, + 247777280.0, + 247777280.0, + 297168896.0, + 297168896.0, + 297168896.0, + 297168896.0, + 297168896.0, + 297168896.0, + 297168896.0, + 297168896.0, + 297168896.0, + 297168896.0, + 297168896.0, + 321669120.0, + 321669120.0, + 321669120.0, + 321669120.0, + 321669120.0, + 321669120.0, + 321669120.0, + 321669120.0, + 321669120.0, + 369236992.0, + 369236992.0, + 369236992.0, + 369236992.0, + 369236992.0, + 369236992.0, + 369236992.0, + 369236992.0, + 369236992.0, + 369236992.0, + 390042624.0, + 390042624.0, + 390042624.0, + 390042624.0, + 390042624.0, + 390042624.0, + 390042624.0, + 390042624.0, + 390042624.0, + 390042624.0, + 435135488.0, + 435135488.0, + 435135488.0, + 435135488.0, + 435135488.0, + 435135488.0, + 435135488.0, + 435135488.0, + 435135488.0, + 451230720.0, + 451230720.0, + 451230720.0, + 451230720.0, + 451230720.0, + 451230720.0, + 451230720.0, + 451230720.0, + 451230720.0, + 492954624.0, + 492954624.0, + 492954624.0, + 492954624.0, + 492954624.0, + 492954624.0, + 492954624.0, + 492954624.0, + 504184832.0, + 504184832.0, + 504184832.0, + 504184832.0, + 504184832.0, + 504184832.0, + 504184832.0, + 504184832.0, + 504184832.0, + 510476288.0, + 542236672.0, + 542236672.0, + 542236672.0, + 542236672.0, + 542236672.0, + 542236672.0, + 549106688.0, + 549106688.0, + 549106688.0, + 549106688.0, + 549106688.0, + 549106688.0, + 549106688.0, + 549106688.0, + 549106688.0, + 549106688.0, + 583768064.0, + 583768064.0, + 583768064.0, + 583768064.0, + 583768064.0, + 583768064.0, + 587136000.0, + 587136000.0, + 587136000.0, + 587136000.0, + 587136000.0, + 587136000.0, + 587136000.0, + 587136000.0, + 587136000.0, + 619272192.0, + 619272192.0, + 619272192.0, + 619272192.0, + 619272192.0, + 619272192.0, + 620735488.0, + 620735488.0, + 620735488.0, + 620735488.0, + 620735488.0, + 620735488.0, + 620735488.0, + 620735488.0, + 620735488.0, + 651476992.0, + 651476992.0, + 651476992.0, + 651476992.0, + 651476992.0, + 651476992.0, + 652069888.0, + 652069888.0, + 652069888.0, + 652069888.0, + 652069888.0, + 652069888.0, + 652069888.0, + 652069888.0, + 682078208.0, + 682078208.0, + 682078208.0, + 682078208.0, + 682078208.0, + 682078208.0, + 682263552.0, + 682263552.0, + 682263552.0, + 682263552.0, + 682263552.0, + 682263552.0, + 682263552.0, + 682263552.0, + 682263552.0, + 711929856.0, + 711929856.0, + 711929856.0, + 711929856.0, + 711929856.0, + 711929856.0, + 711969792.0, + 711969792.0, + 711969792.0, + 711969792.0, + 711969792.0, + 711969792.0, + 711969792.0, + 711969792.0, + 738257920.0, + 741501952.0, + 741501952.0, + 741501952.0, + 741501952.0, + 741501952.0, + 741509120.0, + 741509120.0, + 741509120.0, + 741509120.0, + 741509120.0, + 741509120.0, + 741509120.0, + 741509120.0, + 771004416.0, + 771004416.0, + 771004416.0, + 771004416.0, + 771004416.0, + 771004416.0, + 771008512.0, + 771008512.0, + 771008512.0, + 771008512.0, + 771008512.0, + 771008512.0, + 771008512.0, + 771008512.0, + 771008512.0, + 800498688.0, + 800498688.0 + ] + }, + { + "t": [ + 0.0001030570001603337, + 0.05186237400084792, + 0.102558279000732, + 0.15295472200068616, + 0.20332413200048904, + 0.25383290800073155, + 0.30437921400061896, + 0.35486597700037237, + 0.40540690000034374, + 0.45593649800048297, + 0.5064403660007883, + 0.5569828229999985, + 0.6074356730005093, + 0.6579756880000787, + 0.7084770370001934, + 0.7589745970008153, + 0.809589082000457, + 0.860197464000521, + 0.9109220340005777, + 0.961558495000645, + 1.0122034170008192, + 1.06282252300025, + 1.1134549420003168, + 1.164049334000083, + 1.214666588, + 1.2652860150001288, + 1.3158977510001932, + 1.3665024090005318, + 1.4171234390005338, + 1.4677504070004943, + 1.51848168000015, + 1.5690820750005514, + 1.619639188000292, + 1.6703600170003483, + 1.7211037500001112, + 1.771818988000632, + 1.8227687520002291, + 1.873462223000388, + 1.9242158900005961, + 1.974964903, + 2.025595842000257, + 2.076125905000481, + 2.1266556610007683, + 2.1773989170005734, + 2.2281064860007973, + 2.2788630490003925, + 2.329575271000067, + 2.380132642000717, + 2.4306876980008383, + 2.48127435600054, + 2.5318878020007105, + 2.582585882000785, + 2.6332780200000343, + 2.683869849000075, + 2.7346558410008583, + 2.7854425820005417, + 2.8362619840008847, + 2.887048335000145, + 2.9377720830007092, + 2.988544897000793, + 3.039320184000644, + 3.090137152000352, + 3.1408423030006816, + 3.1916289490000054, + 3.242321535000883, + 3.292987185000129, + 3.343864004000352, + 3.3946812170006524, + 3.4454712030001247, + 3.4961855660003494, + 3.5469392300001346, + 3.5976635410006566, + 3.6483650030004355, + 3.699069575000067, + 3.7496979480001755, + 3.8003379220008355, + 3.851041918000192, + 3.901941349000481, + 3.952854244000264, + 4.003741966000234, + 4.054571561000557, + 4.105338324000513, + 4.156271394000214, + 4.207152937000501, + 4.2579113380006675, + 4.308563254000546, + 4.359393543000806, + 4.410389409000345, + 4.46106444400084, + 4.511714280000888, + 4.562322592000783, + 4.613478934000341, + 4.6641940819999945, + 4.714965484999993, + 4.765862045000176, + 4.816522157000691, + 4.8672635810007705, + 4.918185688000449, + 4.968821301000389, + 5.019971926000835, + 5.0709648120000566, + 5.121930240000438, + 5.172956097000679, + 5.223895648000507, + 5.274879272000362, + 5.325697372000832, + 5.376571529000103, + 5.4273160100001405, + 5.478237434000221, + 5.529063310000311, + 5.580032425000354, + 5.630989213000248, + 5.681754528000056, + 5.73266526900079, + 5.783620393000092, + 5.834357953000108, + 5.885203558000285, + 5.936014801000056, + 5.987486091000392, + 6.0386027570002625, + 6.089335241000299, + 6.140446001000782, + 6.191241796000213, + 6.242378254000869, + 6.293393973000093, + 6.344484575000024, + 6.395307548000346, + 6.446266208000452, + 6.4969847210004446, + 6.547724637000101, + 6.598905461000868, + 6.650144324000394, + 6.701330701000188, + 6.7524452680008835, + 6.803342618000897, + 6.854212160000316, + 6.905067472000155, + 6.955942627000695, + 7.006789709000259, + 7.057519536000655, + 7.10830103400076, + 7.159490450000703, + 7.210694015000627, + 7.261928060000173, + 7.3131184740004755, + 7.364242617000855, + 7.415233403000457, + 7.466274324000551, + 7.517434946000321, + 7.568567388000702, + 7.619843145000232, + 7.670951137000884, + 7.722132702000636, + 7.773276340000848, + 7.824210407999999, + 7.8750915130003705, + 7.926157196000531, + 7.977331871000388, + 8.028824491000705, + 8.07960445000026, + 8.130419977000201, + 8.181198273000518, + 8.232363710000755, + 8.283480315000816, + 8.334325319000527, + 8.385163225000724, + 8.435981904000073, + 8.4868364870008, + 8.537668646000384, + 8.588401684000019, + 8.639123104000646, + 8.689841471000364, + 8.740549951000503, + 8.79124462800064, + 8.841975602000275, + 8.893356865000897, + 8.944600467000782, + 8.995971585000007, + 9.047339317000478, + 9.09857775600085, + 9.149782217000393, + 9.200626061000548, + 9.251387993000208, + 9.302441758000896, + 9.353911401000005, + 9.404849467000531, + 9.455916741000692, + 9.507185687000856, + 9.558162245000858, + 9.609339781000017, + 9.660671493000336, + 9.712147099000504, + 9.765880396000284, + 9.816850655000053, + 9.868338114000835, + 9.919766232000256, + 9.971191595000164, + 10.022458554000877, + 10.07334531900051, + 10.124372917000073, + 10.175920734000101, + 10.226892141000462, + 10.278168544000437, + 10.329429515000811, + 10.380553419000535, + 10.431568556000457, + 10.482723660000374, + 10.53386904600029, + 10.58541240500017, + 10.637039601000652, + 10.688553048000358, + 10.739924289000555, + 10.791273611000179, + 10.842304841000441, + 10.893443674000082, + 10.945058638000773, + 10.996202822000669, + 11.047395671000231, + 11.098418036000112, + 11.14957795600003, + 11.20071800400001, + 11.251927212000737, + 11.302923955000551, + 11.354587118000381, + 11.405718411000635, + 11.457340982999995, + 11.508793906000392, + 11.560247737000282, + 11.611989886000629, + 11.66364067900031, + 11.715088462000494, + 11.766491733000294, + 11.817834498000593, + 11.869064187000731, + 11.920288158000403, + 11.971505312000772, + 12.022606698000345, + 12.074366569000631, + 12.126171528000668, + 12.177886201000547, + 12.22941260100015, + 12.280943046000175, + 12.332032714000889, + 12.383858181000505, + 12.435606701000324, + 12.486879450000743, + 12.538167437000084, + 12.589630964000207, + 12.64125767600035, + 12.692649313000402, + 12.743827889000386, + 12.795423895000567, + 12.847312466000403, + 12.899122160000843, + 12.950729172000138, + 13.002318902000297, + 13.05347474700011, + 13.10529011700055, + 13.156598463000591, + 13.20841419700082, + 13.26023025700033, + 13.312073105000309, + 13.36390304500037, + 13.41573557600077, + 13.467524071000298, + 13.519574436000767, + 13.57151704900025, + 13.62348211400058, + 13.675374992000798, + 13.727057692000017, + 13.77871509400029, + 13.830114495000089, + 13.882052306000332, + 13.933391397000378, + 13.985177861000011, + 14.036500970000816, + 14.087932898000872, + 14.139463464000073, + 14.191185581000354, + 14.242468886000097, + 14.294123401000434, + 14.345372673000384, + 14.397426501000155, + 14.449081626000407, + 14.501050247000421, + 14.552836681000372, + 14.604557551000653, + 14.6557392170007, + 14.707729151000422, + 14.759718395000164, + 14.81119345300067, + 14.862611238000682, + 14.91399229900071, + 14.965314685000521, + 15.017132129000856, + 15.06849192900063, + 15.120568464000826, + 15.172547036000651 + ], + "rss_kb": [ + 59156.0, + 77004.0, + 92432.0, + 98528.0, + 246480.0, + 482396.0, + 648424.0, + 962236.0, + 974604.0, + 975228.0, + 976576.0, + 985652.0, + 988684.0, + 1000496.0, + 1001908.0, + 1028592.0, + 1034280.0, + 1027572.0, + 1036924.0, + 1039228.0, + 794700.0, + 793768.0, + 806552.0, + 811724.0, + 811952.0, + 812236.0, + 812628.0, + 812776.0, + 813424.0, + 827820.0, + 875132.0, + 946808.0, + 1217824.0, + 1220240.0, + 1220540.0, + 1261844.0, + 1264080.0, + 1264144.0, + 1268384.0, + 1268592.0, + 785680.0, + 839216.0, + 871440.0, + 973528.0, + 1013804.0, + 1021472.0, + 1036920.0, + 1042228.0, + 1045588.0, + 1058236.0, + 1063728.0, + 1066768.0, + 881368.0, + 891308.0, + 913416.0, + 997960.0, + 1241292.0, + 1249956.0, + 1255996.0, + 1273608.0, + 1133828.0, + 1142404.0, + 1142948.0, + 1153264.0, + 1161444.0, + 1164680.0, + 1166440.0, + 1167036.0, + 1183792.0, + 1187340.0, + 1193504.0, + 1193900.0, + 1195904.0, + 1196720.0, + 1196852.0, + 1199312.0, + 1011640.0, + 1055844.0, + 1323664.0, + 1248520.0, + 1247472.0, + 1247624.0, + 1247796.0, + 1247996.0, + 1248092.0, + 1250052.0, + 1252564.0, + 1252868.0, + 1254256.0, + 1254420.0, + 1254500.0, + 1261272.0, + 1270796.0, + 1271428.0, + 1272856.0, + 1273004.0, + 1274028.0, + 1274556.0, + 1044236.0, + 761412.0, + 923208.0, + 1278832.0, + 1286684.0, + 1316840.0, + 1319568.0, + 1336816.0, + 1338352.0, + 1343760.0, + 1345580.0, + 1348464.0, + 1349064.0, + 1352180.0, + 1359144.0, + 1364148.0, + 1364512.0, + 1365212.0, + 1365480.0, + 1345988.0, + 1346916.0, + 994024.0, + 1129356.0, + 992928.0, + 1282012.0, + 1296636.0, + 1303700.0, + 1303788.0, + 1304048.0, + 1304056.0, + 1311796.0, + 1315304.0, + 1316428.0, + 1316732.0, + 1325032.0, + 1330308.0, + 1332148.0, + 1332396.0, + 1332512.0, + 1332876.0, + 1316708.0, + 953860.0, + 1044592.0, + 1172308.0, + 1283836.0, + 1320304.0, + 1323364.0, + 1323908.0, + 1327132.0, + 1334128.0, + 1347956.0, + 1349028.0, + 1355388.0, + 1362036.0, + 1364120.0, + 1364424.0, + 1365088.0, + 1365832.0, + 1345556.0, + 1348764.0, + 1111760.0, + 1198048.0, + 1347292.0, + 1352404.0, + 1102224.0, + 1102312.0, + 1114856.0, + 1116056.0, + 1117004.0, + 1117348.0, + 1126060.0, + 1131272.0, + 1133216.0, + 1133456.0, + 1133744.0, + 1134544.0, + 1118508.0, + 1119148.0, + 1119964.0, + 1298928.0, + 1184704.0, + 1205092.0, + 1205104.0, + 1205104.0, + 1236516.0, + 1239120.0, + 1049168.0, + 1055576.0, + 1061232.0, + 1063312.0, + 1063900.0, + 1064060.0, + 1065144.0, + 1049472.0, + 1050564.0, + 1070668.0, + 1309704.0, + 1311636.0, + 1311668.0, + 1252160.0, + 1016676.0, + 1083288.0, + 1090492.0, + 1106076.0, + 1113868.0, + 1115140.0, + 1116708.0, + 1119160.0, + 1122624.0, + 1145132.0, + 1163020.0, + 1276560.0, + 1285008.0, + 1285600.0, + 1288688.0, + 1291956.0, + 1071044.0, + 1078552.0, + 1080808.0, + 1027432.0, + 839884.0, + 841672.0, + 857900.0, + 879248.0, + 919732.0, + 994712.0, + 1258020.0, + 1262108.0, + 1262108.0, + 1263432.0, + 1264700.0, + 1265360.0, + 1273892.0, + 1276200.0, + 1276668.0, + 1279404.0, + 1279868.0, + 1271728.0, + 1273060.0, + 1112940.0, + 1296112.0, + 1299528.0, + 1300236.0, + 1300260.0, + 1301976.0, + 1273040.0, + 1096600.0, + 1101068.0, + 1101524.0, + 1103024.0, + 1103608.0, + 1104428.0, + 1092896.0, + 1093792.0, + 1249692.0, + 1271144.0, + 1271144.0, + 1271256.0, + 1273824.0, + 929704.0, + 962904.0, + 1015820.0, + 1016416.0, + 1017524.0, + 1018568.0, + 1020032.0, + 1046164.0, + 1054092.0, + 1126756.0, + 1304120.0, + 1309880.0, + 1309880.0, + 1312448.0, + 1320480.0, + 1087612.0, + 1097872.0, + 1101816.0, + 1101832.0, + 827896.0, + 828924.0, + 829484.0, + 837024.0, + 865608.0, + 907128.0, + 963928.0, + 1257488.0, + 1266396.0, + 1266552.0, + 1266616.0, + 1269356.0, + 1270856.0, + 1277932.0, + 1281680.0, + 1281684.0, + 1282436.0, + 1282568.0, + 1283592.0, + 1271592.0, + 958572.0, + 993548.0 + ], + "disk_bytes": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 41943040.0, + 41943040.0, + 46137344.0, + 73639936.0, + 73639936.0, + 73639936.0, + 73639936.0, + 73639936.0, + 73639936.0, + 73639936.0, + 73639936.0, + 73639936.0, + 73639936.0, + 73639936.0, + 79975424.0, + 79975424.0, + 79975424.0, + 79975424.0, + 79975424.0, + 79975424.0, + 79975424.0, + 79975424.0, + 79975424.0, + 79975424.0, + 79975424.0, + 79975424.0, + 79975424.0, + 106079232.0, + 106079232.0, + 106079232.0, + 106079232.0, + 106079232.0, + 106079232.0, + 106079232.0, + 106079232.0, + 106079232.0, + 106079232.0, + 106079232.0, + 140563456.0, + 140563456.0, + 140563456.0, + 140563456.0, + 140563456.0, + 140563456.0, + 140563456.0, + 140563456.0, + 140563456.0, + 140563456.0, + 140563456.0, + 170606592.0, + 170606592.0, + 170606592.0, + 170606592.0, + 170606592.0, + 170606592.0, + 170606592.0, + 170606592.0, + 170606592.0, + 170606592.0, + 207868928.0, + 220269568.0, + 220269568.0, + 220269568.0, + 220269568.0, + 220269568.0, + 220269568.0, + 220269568.0, + 220269568.0, + 220269568.0, + 220269568.0, + 220269568.0, + 247824384.0, + 247824384.0, + 247824384.0, + 247824384.0, + 247824384.0, + 247824384.0, + 247824384.0, + 247824384.0, + 247824384.0, + 247824384.0, + 247824384.0, + 297217024.0, + 297217024.0, + 297217024.0, + 297217024.0, + 297217024.0, + 297217024.0, + 297217024.0, + 297217024.0, + 297217024.0, + 297217024.0, + 297217024.0, + 321716224.0, + 321716224.0, + 321716224.0, + 321716224.0, + 321716224.0, + 321716224.0, + 321716224.0, + 321716224.0, + 321716224.0, + 321716224.0, + 369283072.0, + 369283072.0, + 369283072.0, + 369283072.0, + 369283072.0, + 369283072.0, + 369283072.0, + 369283072.0, + 369283072.0, + 369283072.0, + 390134784.0, + 390134784.0, + 390134784.0, + 390134784.0, + 390134784.0, + 390134784.0, + 390134784.0, + 390134784.0, + 390134784.0, + 390134784.0, + 435227648.0, + 435227648.0, + 435227648.0, + 435227648.0, + 435227648.0, + 435227648.0, + 435227648.0, + 435227648.0, + 435227648.0, + 451331072.0, + 451331072.0, + 451331072.0, + 451331072.0, + 451331072.0, + 451331072.0, + 451331072.0, + 451331072.0, + 451331072.0, + 493054976.0, + 493054976.0, + 493054976.0, + 493054976.0, + 493054976.0, + 493054976.0, + 493054976.0, + 493054976.0, + 504249344.0, + 504249344.0, + 504249344.0, + 504249344.0, + 504249344.0, + 504249344.0, + 504249344.0, + 504249344.0, + 504249344.0, + 504249344.0, + 542301184.0, + 542301184.0, + 542301184.0, + 542301184.0, + 542301184.0, + 542301184.0, + 542301184.0, + 542301184.0, + 549208064.0, + 549208064.0, + 549208064.0, + 549208064.0, + 549208064.0, + 549208064.0, + 549208064.0, + 549208064.0, + 549208064.0, + 583869440.0, + 583869440.0, + 583869440.0, + 583869440.0, + 583869440.0, + 583869440.0, + 587117568.0, + 587117568.0, + 587117568.0, + 587117568.0, + 587117568.0, + 587117568.0, + 587117568.0, + 587117568.0, + 587117568.0, + 587117568.0, + 619253760.0, + 619253760.0, + 619253760.0, + 619253760.0, + 619253760.0, + 620716032.0, + 620716032.0, + 620716032.0, + 620716032.0, + 620716032.0, + 620716032.0, + 620716032.0, + 620716032.0, + 620716032.0, + 651457536.0, + 651457536.0, + 651457536.0, + 651457536.0, + 651457536.0, + 651457536.0, + 652050432.0, + 652050432.0, + 652050432.0, + 652050432.0, + 652050432.0, + 652050432.0, + 652050432.0, + 652050432.0, + 652050432.0, + 682059776.0, + 682059776.0, + 682059776.0, + 682059776.0, + 682059776.0, + 682059776.0, + 682244096.0, + 682244096.0, + 682244096.0, + 682244096.0, + 682244096.0, + 682244096.0, + 682244096.0, + 682244096.0, + 711910400.0, + 711910400.0, + 711910400.0, + 711910400.0, + 711910400.0, + 711950336.0, + 711950336.0, + 711950336.0, + 711950336.0, + 711950336.0, + 711950336.0, + 711950336.0, + 711950336.0, + 711950336.0, + 741482496.0, + 741482496.0, + 741482496.0, + 741482496.0, + 741482496.0, + 741482496.0, + 741489664.0, + 741489664.0, + 741489664.0, + 741489664.0, + 741489664.0, + 741489664.0, + 741489664.0, + 741489664.0, + 741489664.0, + 741489664.0, + 770984960.0, + 770984960.0, + 770984960.0, + 770984960.0, + 770984960.0, + 770984960.0, + 770989056.0, + 770989056.0, + 770989056.0, + 770989056.0, + 770989056.0, + 770989056.0, + 770989056.0, + 770989056.0, + 770989056.0, + 800479232.0, + 800479232.0, + 800479232.0 + ] + } + ], + "environment": { + "timestamp": "2026-09-28T13:45:32.583176+00:00", + "platform": "Linux-7.0.0-1006-aws-x86_64-with-glibc2.43", + "python": "3.12.14", + "cpu_count": 16, + "gnuplot": false, + "package:pyspark": "4.0.1", + "package:sail-nutmeg": "0.1.0", + "package:gfrs-poc": "0.1.0", + "git_commit": "2fbc6c50ac1815371e4813e3f49e687b7639ae94" + } +} \ No newline at end of file diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/disk.dat b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/disk.dat new file mode 100644 index 00000000..c3b56cba --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/disk.dat @@ -0,0 +1,101 @@ +# fraction_pct mean ci_low ci_high +0.000000 0.000000 0.000000 0.000000 +1.010101 0.000000 0.000000 0.000000 +2.020202 0.000000 0.000000 0.000000 +3.030303 0.000000 0.000000 0.000000 +4.040404 0.000000 0.000000 0.000000 +5.050505 0.046251 0.009972 0.082529 +6.060606 0.057402 0.027990 0.086814 +7.070707 0.058744 0.027430 0.090058 +8.080808 0.068584 0.068581 0.068587 +9.090909 0.070551 0.064291 0.076811 +10.101010 0.074485 0.074482 0.074488 +11.111111 0.074485 0.074482 0.074488 +12.121212 0.074485 0.074482 0.074488 +13.131313 0.082589 0.056806 0.108371 +14.141414 0.087795 0.065166 0.110424 +15.151515 0.090689 0.064909 0.116469 +16.161616 0.090689 0.064909 0.116469 +17.171717 0.090689 0.064909 0.116469 +18.181818 0.112099 0.052256 0.171942 +19.191919 0.112099 0.052256 0.171942 +20.202020 0.120205 0.086155 0.154255 +21.212121 0.135838 0.120152 0.151523 +22.222222 0.158912 0.158876 0.158949 +23.232323 0.158912 0.158876 0.158949 +24.242424 0.158912 0.158876 0.158949 +25.252525 0.163955 0.147887 0.180022 +26.262626 0.174329 0.125249 0.223410 +27.272727 0.174329 0.125249 0.223410 +28.282828 0.174329 0.125249 0.223410 +29.292929 0.206817 0.201531 0.212103 +30.303030 0.222267 0.195065 0.249468 +31.313131 0.252690 0.210303 0.295077 +32.323232 0.269069 0.204728 0.333411 +33.333333 0.305629 0.213945 0.397313 +34.343434 0.332230 0.190647 0.473813 +35.353535 0.332230 0.190647 0.473813 +36.363636 0.339289 0.210484 0.468093 +37.373737 0.361075 0.250240 0.471911 +38.383838 0.375074 0.254286 0.495862 +39.393939 0.380073 0.252110 0.508037 +40.404040 0.394840 0.313864 0.475816 +41.414141 0.394840 0.313864 0.475816 +42.424242 0.394840 0.313864 0.475816 +43.434343 0.401303 0.340894 0.461713 +44.444444 0.401303 0.340894 0.461713 +45.454545 0.401303 0.340894 0.461713 +46.464646 0.428255 0.377161 0.479348 +47.474747 0.428255 0.377161 0.479348 +48.484848 0.428255 0.377161 0.479348 +49.494949 0.446204 0.405019 0.487388 +50.505051 0.446204 0.405019 0.487388 +51.515152 0.449679 0.401976 0.497381 +52.525253 0.462632 0.451515 0.473748 +53.535354 0.477931 0.433731 0.522130 +54.545455 0.483571 0.439151 0.527990 +55.555556 0.483571 0.439151 0.527990 +56.565657 0.483571 0.439151 0.527990 +57.575758 0.484190 0.440720 0.527661 +58.585859 0.506144 0.437956 0.574333 +59.595960 0.506144 0.437956 0.574333 +60.606061 0.509281 0.438247 0.580315 +61.616162 0.509281 0.438247 0.580315 +62.626263 0.509281 0.438247 0.580315 +63.636364 0.529004 0.428813 0.629195 +64.646465 0.538685 0.463691 0.613678 +65.656566 0.544965 0.483701 0.606230 +66.666667 0.557271 0.524153 0.590389 +67.676768 0.557271 0.524153 0.590389 +68.686869 0.560749 0.531516 0.589981 +69.696970 0.567247 0.534716 0.599779 +70.707071 0.576882 0.521855 0.631909 +71.717172 0.587872 0.557011 0.618733 +72.727273 0.597600 0.566802 0.628397 +73.737374 0.616627 0.557172 0.676083 +74.747475 0.630829 0.590253 0.671405 +75.757576 0.630829 0.590253 0.671405 +76.767677 0.635226 0.584160 0.686292 +77.777778 0.635238 0.584138 0.686339 +78.787879 0.635238 0.584138 0.686339 +79.797980 0.653780 0.595263 0.712296 +80.808081 0.653780 0.595263 0.712296 +81.818182 0.663049 0.612508 0.713590 +82.828283 0.672219 0.595058 0.749380 +83.838384 0.672219 0.595058 0.749380 +84.848485 0.681429 0.623181 0.739676 +85.858586 0.681430 0.623185 0.739676 +86.868687 0.681441 0.623213 0.739669 +87.878788 0.681441 0.623213 0.739669 +88.888889 0.681441 0.623213 0.739669 +89.898990 0.699777 0.670722 0.728833 +90.909091 0.699777 0.670722 0.728833 +91.919192 0.699782 0.670733 0.728830 +92.929293 0.699782 0.670733 0.728830 +93.939394 0.699782 0.670733 0.728830 +94.949495 0.708938 0.679737 0.738140 +95.959596 0.718479 0.717337 0.719622 +96.969697 0.718482 0.717343 0.719620 +97.979798 0.718482 0.717343 0.719620 +98.989899 0.719547 0.716435 0.722659 +100.000000 0.754297 0.726349 0.782245 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/disk.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/disk.gnuplot new file mode 100644 index 00000000..72a01032 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/disk.gnuplot @@ -0,0 +1,10 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/disk.png' +set title "pregel pagerank / cit-Patents (XS) — max_mem_24G_smj_parts_8 — disk usage" +set xlabel 'fraction of run (%)' +set ylabel 'disk consumed (GiB)' +set grid +set key top left +set yrange [0:*] +plot '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/disk.dat' using 1:3:4 with filledcurves lc rgb '#cccccc' title '95% CI', \ + '' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'mean' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/disk.png b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/disk.png new file mode 100644 index 00000000..b3aa6ae5 Binary files /dev/null and b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/disk.png differ diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/rss.dat b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/rss.dat new file mode 100644 index 00000000..e1207e72 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/rss.dat @@ -0,0 +1,101 @@ +# fraction_pct mean ci_low ci_high +0.000000 0.056461 0.056090 0.056833 +1.010101 0.093917 0.092490 0.095343 +2.020202 0.629242 0.616433 0.642050 +3.030303 0.931099 0.914487 0.947712 +4.040404 0.936856 0.917043 0.956670 +5.050505 0.965178 0.933839 0.996517 +6.060606 0.881773 0.571795 1.191751 +7.070707 0.786682 0.476342 1.097023 +8.080808 0.724572 0.661477 0.787667 +9.090909 0.781775 0.670662 0.892888 +10.101010 0.922799 0.626705 1.218894 +11.111111 1.200309 1.177237 1.223382 +12.121212 1.167550 0.983128 1.351971 +13.131313 1.106880 0.725905 1.487856 +14.141414 0.964152 0.546149 1.382154 +15.151515 1.051815 0.776520 1.327110 +16.161616 1.071393 0.828138 1.314649 +17.171717 1.022348 0.700022 1.344674 +18.181818 0.986541 0.601067 1.372016 +19.191919 1.196034 1.145575 1.246492 +20.202020 1.076042 0.959206 1.192877 +21.212121 1.133448 1.006214 1.260682 +22.222222 1.104074 1.088766 1.119382 +23.232323 1.124530 1.105469 1.143591 +24.242424 1.130202 1.096631 1.163772 +25.252525 1.138022 1.118405 1.157638 +26.262626 1.085397 0.927668 1.243126 +27.272727 1.121783 1.078739 1.164826 +28.282828 1.136693 1.123996 1.149389 +29.292929 1.100007 0.991237 1.208777 +30.303030 1.195953 1.118043 1.273862 +31.313131 1.076705 0.698581 1.454830 +32.323232 1.213103 1.151433 1.274773 +33.333333 1.209686 1.101917 1.317455 +34.343434 1.229296 1.139527 1.319065 +35.353535 1.237434 1.160201 1.314667 +36.363636 1.245440 1.153689 1.337192 +37.373737 1.231899 1.184532 1.279265 +38.383838 1.237257 1.185403 1.289112 +39.393939 1.244565 1.174066 1.315064 +40.404040 1.195942 1.024258 1.367626 +41.414141 1.241406 1.169935 1.312877 +42.424242 1.241985 1.170798 1.313173 +43.434343 1.244324 1.173801 1.314847 +44.444444 1.252479 1.168741 1.336217 +45.454545 1.255387 1.168078 1.342696 +46.464646 1.244477 1.171654 1.317300 +47.474747 1.249019 1.199688 1.298351 +48.484848 1.116528 0.952814 1.280241 +49.494949 1.116394 0.954764 1.278024 +50.505051 1.122341 0.966201 1.278481 +51.515152 1.141327 0.953674 1.328981 +52.525253 1.048815 0.945844 1.151786 +53.535354 1.093804 0.870641 1.316967 +54.545455 1.092573 0.913724 1.271421 +55.555556 0.982889 0.907781 1.057997 +56.565657 0.986914 0.924329 1.049498 +57.575758 0.987397 0.923062 1.051732 +58.585859 1.076167 0.858828 1.293507 +59.595960 1.163690 0.900375 1.427004 +60.606061 1.012509 0.989601 1.035417 +61.616162 1.022264 0.960290 1.084238 +62.626263 1.027123 0.961788 1.092457 +63.636364 1.057416 0.963192 1.151639 +64.646465 1.157564 0.911342 1.403786 +65.656566 0.977781 0.768838 1.186725 +66.666667 1.100288 0.926190 1.274387 +67.676768 1.020733 0.625301 1.416164 +68.686869 1.037539 0.692492 1.382587 +69.696970 1.080649 0.875635 1.285662 +70.707071 0.993833 0.700498 1.287169 +71.717172 1.138102 0.977339 1.298864 +72.727273 1.205365 1.168925 1.241806 +73.737374 1.167371 1.077690 1.257052 +74.747475 1.092474 0.897588 1.287360 +75.757576 1.173776 0.971898 1.375653 +76.767677 1.154547 0.929883 1.379211 +77.777778 1.162940 0.948493 1.377386 +78.787879 1.082284 0.815838 1.348730 +79.797980 1.028346 0.977943 1.078748 +80.808081 1.148193 0.973421 1.322964 +81.818182 0.926935 0.649240 1.204631 +82.828283 1.166492 1.079541 1.253443 +83.838384 1.103152 0.804997 1.401307 +84.848485 1.122049 0.882992 1.361106 +85.858586 1.216218 1.134121 1.298314 +86.868687 1.218549 1.130403 1.306694 +87.878788 1.078603 0.846392 1.310815 +88.888889 1.081434 0.852154 1.310715 +89.898990 1.140087 0.954861 1.325313 +90.909091 1.246272 1.207646 1.284898 +91.919192 1.191829 1.024216 1.359442 +92.929293 1.096132 0.894515 1.297748 +93.939394 1.095000 0.891294 1.298707 +94.949495 1.052867 0.750365 1.355368 +95.959596 1.128994 0.801703 1.456286 +96.969697 1.236760 1.215758 1.257763 +97.979798 1.243630 1.211822 1.275438 +98.989899 1.244237 1.211414 1.277059 +100.000000 1.150444 0.827581 1.473307 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/rss.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/rss.gnuplot new file mode 100644 index 00000000..a483d94b --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/rss.gnuplot @@ -0,0 +1,10 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/rss.png' +set title "pregel pagerank / cit-Patents (XS) — max_mem_24G_smj_parts_8 — RSS" +set xlabel 'fraction of run (%)' +set ylabel 'RSS (GiB)' +set grid +set key top left +set yrange [0:*] +plot '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/rss.dat' using 1:3:4 with filledcurves lc rgb '#cccccc' title '95% CI', \ + '' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'mean' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/rss.png b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/rss.png new file mode 100644 index 00000000..28f5e61b Binary files /dev/null and b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/rss.png differ diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.dat b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.dat new file mode 100644 index 00000000..c09beb01 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.dat @@ -0,0 +1,257 @@ +# time_s density +14.2612165 0.000475552476 +14.2657219 0.00056711749 +14.2702273 0.000675052745 +14.2747327 0.000802034122 +14.2792381 0.000951127759 +14.2837435 0.00112583864 +14.2882489 0.00133016385 +14.2927542 0.00156865071 +14.2972596 0.00184645999 +14.301765 0.00216943443 +14.3062704 0.00254417258 +14.3107758 0.00297810813 +14.3152812 0.00347959469 +14.3197866 0.004057996 +14.324292 0.00472378134 +14.3287974 0.00548862602 +14.3333028 0.00636551646 +14.3378082 0.00736885953 +14.3423136 0.00851459543 +14.346819 0.00982031347 +14.3513244 0.0113053697 +14.3558298 0.0129910054 +14.3603352 0.0149004657 +14.3648406 0.0170591152 +14.369346 0.019494552 +14.3738514 0.0222367146 +14.3783568 0.0253179835 +14.3828622 0.0287732721 +14.3873676 0.0326401066 +14.391873 0.0369586918 +14.3963783 0.0417719599 +14.4008837 0.0471255998 +14.4053891 0.0530680645 +14.4098945 0.0596505521 +14.4143999 0.0669269596 +14.4189053 0.0749538047 +14.4234107 0.0837901139 +14.4279161 0.093497273 +14.4324215 0.104138839 +14.4369269 0.115780307 +14.4414323 0.128488839 +14.4459377 0.142332938 +14.4504431 0.157382084 +14.4549485 0.173706312 +14.4594539 0.191375749 +14.4639593 0.210460098 +14.4684647 0.231028075 +14.4729701 0.253146802 +14.4774755 0.276881151 +14.4819809 0.302293051 +14.4864863 0.329440758 +14.4909917 0.358378092 +14.4954971 0.389153643 +14.5000024 0.421809966 +14.5045078 0.456382754 +14.5090132 0.492900013 +14.5135186 0.531381236 +14.518024 0.571836589 +14.5225294 0.614266132 +14.5270348 0.658659057 +14.5315402 0.704992983 +14.5360456 0.753233302 +14.540551 0.803332595 +14.5450564 0.855230121 +14.5495618 0.9088514 +14.5540672 0.964107894 +14.5585726 1.0208968 +14.563078 1.07910094 +14.5675834 1.13858883 +14.5720888 1.19921482 +14.5765942 1.26081943 +14.5810996 1.32322975 +14.585605 1.38626011 +14.5901104 1.44971279 +14.5946158 1.51337889 +14.5991211 1.57703944 +14.6036265 1.64046651 +14.6081319 1.70342457 +14.6126373 1.7656719 +14.6171427 1.82696218 +14.6216481 1.88704612 +14.6261535 1.94567323 +14.6306589 2.00259363 +14.6351643 2.05755994 +14.6396697 2.11032923 +14.6441751 2.16066492 +14.6486805 2.20833874 +14.6531859 2.25313269 +14.6576913 2.29484088 +14.6621967 2.3332714 +14.6667021 2.36824804 +14.6712075 2.39961192 +14.6757129 2.42722307 +14.6802183 2.45096176 +14.6847237 2.47072977 +14.6892291 2.48645142 +14.6937345 2.49807448 +14.6982399 2.50557082 +14.7027452 2.50893693 +14.7072506 2.50819413 +14.711756 2.50338866 +14.7162614 2.4945915 +14.7207668 2.48189797 +14.7252722 2.46542713 +14.7297776 2.44532097 +14.734283 2.42174339 +14.7387884 2.39487893 +14.7432938 2.36493146 +14.7477992 2.33212253 +14.7523046 2.29668969 +14.75681 2.25888458 +14.7613154 2.21897101 +14.7658208 2.17722282 +14.7703262 2.13392173 +14.7748316 2.08935513 +14.779337 2.0438138 +14.7838424 1.99758962 +14.7883478 1.95097333 +14.7928532 1.90425223 +14.7973586 1.85770799 +14.801864 1.81161451 +14.8063693 1.76623588 +14.8108747 1.72182436 +14.8153801 1.67861859 +14.8198855 1.63684186 +14.8243909 1.59670055 +14.8288963 1.55838272 +14.8334017 1.52205687 +14.8379071 1.48787088 +14.8424125 1.45595116 +14.8469179 1.42640193 +14.8514233 1.39930473 +14.8559287 1.37471816 +14.8604341 1.35267776 +14.8649395 1.3331961 +14.8694449 1.31626309 +14.8739503 1.30184645 +14.8784557 1.28989236 +14.8829611 1.28032629 +14.8874665 1.27305404 +14.8919719 1.26796283 +14.8964773 1.26492264 +14.9009827 1.26378764 +14.9054881 1.26439769 +14.9099934 1.26658006 +14.9144988 1.27015106 +14.9190042 1.27491795 +14.9235096 1.28068072 +14.928015 1.287234 +14.9325204 1.29436899 +14.9370258 1.30187535 +14.9415312 1.30954312 +14.9460366 1.31716452 +14.950542 1.32453583 +14.9550474 1.3314591 +14.9595528 1.3377438 +14.9640582 1.34320837 +14.9685636 1.34768172 +14.973069 1.35100448 +14.9775744 1.35303024 +14.9820798 1.35362656 +14.9865852 1.35267589 +14.9910906 1.35007626 +14.995596 1.34574185 +15.0001014 1.33960343 +15.0046068 1.33160853 +15.0091121 1.32172151 +15.0136175 1.3099235 +15.0181229 1.29621208 +15.0226283 1.28060092 +15.0271337 1.26311916 +15.0316391 1.24381076 +15.0361445 1.22273368 +15.0406499 1.19995891 +15.0451553 1.17556949 +15.0496607 1.14965935 +15.0541661 1.12233216 +15.0586715 1.09370008 +15.0631769 1.0638825 +15.0676823 1.03300469 +15.0721877 1.00119656 +15.0766931 0.968591316 +15.0811985 0.935324184 +15.0857039 0.901531177 +15.0902093 0.867347883 +15.0947147 0.832908332 +15.0992201 0.798343914 +15.1037255 0.763782392 +15.1082309 0.729346983 +15.1127362 0.695155538 +15.1172416 0.661319822 +15.121747 0.627944878 +15.1262524 0.595128506 +15.1307578 0.562960834 +15.1352632 0.531523995 +15.1397686 0.500891891 +15.144274 0.471130067 +15.1487794 0.442295661 +15.1532848 0.414437445 +15.1577902 0.387595947 +15.1622956 0.361803644 +15.166801 0.337085213 +15.1713064 0.313457855 +15.1758118 0.290931655 +15.1803172 0.269509993 +15.1848226 0.249189985 +15.189328 0.229962955 +15.1938334 0.211814927 +15.1983388 0.194727121 +15.2028442 0.17867647 +15.2073496 0.163636122 +15.211855 0.149575947 +15.2163603 0.136463025 +15.2208657 0.124262126 +15.2253711 0.112936163 +15.2298765 0.102446625 +15.2343819 0.0927539879 +15.2388873 0.0838180923 +15.2433927 0.0755984935 +15.2478981 0.0680547822 +15.2524035 0.0611468724 +15.2569089 0.0548352593 +15.2614143 0.0490812451 +15.2659197 0.0438471355 +15.2704251 0.0390964062 +15.2749305 0.0347938417 +15.2794359 0.0309056467 +15.2839413 0.0273995342 +15.2884467 0.0242447882 +15.2929521 0.0214123071 +15.2974575 0.0188746269 +15.3019629 0.0166059267 +15.3064683 0.0145820196 +15.3109737 0.0127803293 +15.315479 0.011179856 +15.3199844 0.00976113157 +15.3244898 0.00850616706 +15.3289952 0.00739839351 +15.3335006 0.00642259768 +15.338006 0.00556485403 +15.3425114 0.00481245408 +15.3470168 0.0041538344 +15.3515222 0.00357850405 +15.3560276 0.0030769724 +15.360533 0.00264067794 +15.3650384 0.00226191886 +15.3695438 0.00193378572 +15.3740492 0.00165009679 +15.3785546 0.00140533619 +15.38306 0.00119459525 +15.3875654 0.00101351708 +15.3920708 0.000858244633 +15.3965762 0.000725372116 +15.4010816 0.000611899858 +15.405587 0.000515192558 +15.4100924 0.000432940828 diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.gnuplot b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.gnuplot new file mode 100644 index 00000000..ab889ad6 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.gnuplot @@ -0,0 +1,21 @@ +set terminal pngcairo size 1400,700 enhanced font 'Sans,11' +set output '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.png' +set title "pregel pagerank / cit-Patents (XS) — max_mem_24G_smj_parts_8\nmedian=14.729s mean=14.800s std=0.173s min=14.673s max=14.998s p90=14.944s p95=14.971s runs=3" +set xlabel 'wall time (s)' +set ylabel 'probability density (1/s)' +set tmargin 5 +set yrange [0:3.26162] +set xrange [14.261216:15.410092] +set grid y +set key top right +set arrow from 14.729315,0 to 14.729315,3.26162 nohead lc rgb 'red' lw 2 +set label 'median 14.729s' at 14.729315,3.26162 offset char 0,1 tc rgb 'red' +set arrow from 14.944202,0 to 14.944202,3.26162 nohead lc rgb 'orange' lw 1 dt 2 +set label 'p90 14.944s' at 14.944202,3.26162 offset char 0,1 tc rgb 'orange' +set arrow from 14.971063,0 to 14.971063,3.26162 nohead lc rgb 'orange' lw 1 dt 3 +set label 'p95 14.971s' at 14.971063,3.26162 offset char 0,1 tc rgb 'orange' +set arrow from 14.729315,0 to 14.729315,0.100357 nohead lc rgb '#666666' lw 1 +set arrow from 14.673385,0 to 14.673385,0.100357 nohead lc rgb '#666666' lw 1 +set arrow from 14.997924,0 to 14.997924,0.100357 nohead lc rgb '#666666' lw 1 +plot '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.dat' using 1:2 with filledcurves y=0 lc rgb '#4682b4' fs transparent solid 0.25 title 'kernel density', \ + '/home/ubuntu/sail/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.dat' using 1:2 with lines lw 2 lc rgb '#4682b4' title 'KDE (runs)' diff --git a/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.png b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.png new file mode 100644 index 00000000..7c03ba67 Binary files /dev/null and b/examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.png differ diff --git a/examples/extensions/benchmarks/sem_benchmark/runtime.py b/examples/extensions/benchmarks/sem_benchmark/runtime.py new file mode 100644 index 00000000..d64e8ba0 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/runtime.py @@ -0,0 +1,152 @@ +"""Fresh Sail server per benchmark run. + +One helper per run: start ``sail spark server`` with the fair memory pool, NVM +temporary files and (optionally) the SMJ join preference plus the Nutmeg +extension environment, wait for the Spark Connect port, and shut the process +group down afterwards. + +The environment mirrors the Sail configuration reference +(`docs/guide/configuration`): every option is an env var +``SAIL_
__`` with a TOML-style value. +""" + +from __future__ import annotations + +import contextlib +import os +import re +import signal +import socket +import subprocess +import sys +import sysconfig +import time +from pathlib import Path + +_UNITS = {"": 1, "K": 1024, "M": 1024**2, "G": 1024**3, "T": 1024**4} + + +def parse_memory(value: str) -> int: + """Parse "24G" / "512M" / "268435456" into bytes.""" + match = re.fullmatch(r"\s*(\d+(?:\.\d+)?)\s*([KMGT]?)I?B?\s*", value, re.IGNORECASE) + if not match: + raise ValueError(f"invalid memory value: {value!r} (expected e.g. 24G or 512M)") + number, unit = match.groups() + return int(float(number) * _UNITS[unit.upper()]) + + +class SailServer: + """One Sail Spark Connect server in local mode.""" + + def __init__( + self, + binary: Path, + workdir: Path, + *, + max_memory: str, + use_smj: bool, + partitions: int, + threads: int, + log_path: Path, + load_extensions: bool, + nutmeg_memory: str = "8G", + port: int = 0, + ): + self.binary = Path(binary).resolve() + self.workdir = Path(workdir).resolve() + self.log_path = log_path + self.port = port + self.process: subprocess.Popen | None = None + self.endpoint: str | None = None + spill_dir = self.workdir / "spill" + spill_dir.mkdir(parents=True, exist_ok=True) + + env = dict(os.environ) + # Keep worker-related knobs from leaking into local mode. + for name in ( + "SAIL_INTERNAL__RUN_PYTHON", + "SAIL_EXPERIMENTAL_WORKER_COMMAND", + "SAIL_EXPERIMENTAL_WORKER_PYTHONPATH", + ): + env.pop(name, None) + env.update( + SAIL_MODE="local", + # runtime.memory_pool.type = "fair" + SAIL_RUNTIME__MEMORY_POOL__TYPE="fair", + # runtime.memory_pool.fair.max_size, passed from main.py --max-memory + SAIL_RUNTIME__MEMORY_POOL__FAIR__MAX_SIZE=str(parse_memory(max_memory)), + # runtime.temporary_files.paths, passed from main.py --work-dir (fast NVM) + SAIL_RUNTIME__TEMPORARY_FILES__PATHS=f'["{spill_dir}"]', + SAIL_EXECUTION__DEFAULT_PARALLELISM=str(partitions), + TOKIO_WORKER_THREADS=str(threads), + RAYON_NUM_THREADS=str(threads), + RUST_LOG="info", + ) + # optimizer.prefer_hash_join = false when --use-smj is passed; the Sail + # default (hash join preferred) is kept otherwise. + if use_smj: + env["SAIL_OPTIMIZER__PREFER_HASH_JOIN"] = "false" + # The sail binary embeds Python (pyo3); it must see the same venv this + # script runs from, so the interpreter env is always set. + libdir = sysconfig.get_config_var("LIBDIR") or "" + env.update( + PYTHONHOME=sys.base_prefix, + PYTHONPATH=sysconfig.get_paths()["purelib"], + LD_LIBRARY_PATH=libdir, + DYLD_LIBRARY_PATH=libdir, + ) + if load_extensions: + env.update( + SAIL_EXPERIMENTAL_EXTENSIONS="1", + SAIL_NUTMEG_MEMORY_BYTES=str(parse_memory(nutmeg_memory)), + ) + self.env = env + + def start(self, timeout: float = 120.0) -> str: + if self.port == 0: + with socket.socket() as listener: + listener.bind(("127.0.0.1", 0)) + self.port = listener.getsockname()[1] + with self.log_path.open("w") as log: + self.process = subprocess.Popen( + [ + str(self.binary), + "spark", + "server", + "--ip", + "127.0.0.1", + "--port", + str(self.port), + ], + env=self.env, + cwd=str(self.workdir), + stdout=log, + stderr=subprocess.STDOUT, + start_new_session=True, + ) + deadline = time.monotonic() + timeout + while True: + if self.process.poll() is not None: + raise RuntimeError(f"Sail exited during startup; see {self.log_path}") + try: + with socket.create_connection(("127.0.0.1", self.port), timeout=0.2): + break + except OSError: + if time.monotonic() >= deadline: + self.stop() + raise TimeoutError(f"Sail startup exceeded {timeout}s; see {self.log_path}") + time.sleep(0.05) + self.endpoint = f"sc://127.0.0.1:{self.port}" + return self.endpoint + + def stop(self) -> None: + if self.process is None: + return + try: + os.killpg(self.process.pid, signal.SIGINT) + self.process.wait(timeout=15) + except (ProcessLookupError, subprocess.TimeoutExpired): + with contextlib.suppress(ProcessLookupError, subprocess.TimeoutExpired): + os.killpg(self.process.pid, signal.SIGKILL) + self.process.wait(timeout=5) + self.process = None diff --git a/examples/extensions/benchmarks/sem_benchmark/stats.py b/examples/extensions/benchmarks/sem_benchmark/stats.py new file mode 100644 index 00000000..0336423d --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/stats.py @@ -0,0 +1,409 @@ +#!/usr/bin/env python3 +"""Statistical helpers for benchmark post-processing (pure stdlib). + +Everything here is deliberately dependency-free: percentiles, Student-t +confidence intervals, resampling onto a fraction-of-run grid, and dynamic +time warping (DTW) used to align runs whose phases drift in wall time. +""" + +from __future__ import annotations + +import math +import statistics +from bisect import bisect_left + +# -------------------------------------------------------------------------- +# Basic descriptive statistics +# -------------------------------------------------------------------------- + + +def percentile(sorted_values: list[float], p: float) -> float: + """Linear-interpolation percentile (numpy's default method) on sorted data.""" + n = len(sorted_values) + if n == 0: + raise ValueError("percentile of empty data") + if n == 1: + return sorted_values[0] + rank = (p / 100.0) * (n - 1) + lo = int(rank) + hi = lo + 1 + frac = rank - lo + return sorted_values[lo] * (1.0 - frac) + sorted_values[hi] * frac + + +def kde( + values: list[float], + grid_points: int = 256, + bandwidth: float | None = None, +) -> tuple[list[float], list[float]]: + """Gaussian kernel density estimate of `values` on a uniform grid. + + Pure stdlib (no numpy/scipy). Bandwidth defaults to Silverman's rule of + thumb ``h = 1.06 * min(std, IQR/1.34) * n^-1/5``, clamped so degenerate + (all-equal or single-run) samples still render as a narrow spike. + + Returns ``(xs, density)`` with ``density`` a true PDF on the grid + (trapezoidal integral over the returned grid equals 1). + """ + n = len(values) + if n == 0: + raise ValueError("kde of empty data") + xs = sorted(values) + vmin, vmax = xs[0], xs[-1] + spread = vmax - vmin + + if bandwidth is None: + sd = statistics.stdev(xs) if n > 1 else 0.0 + q75, q25 = percentile(xs, 75), percentile(xs, 25) + iqr = q75 - q25 + sigma = min(sd, iqr / 1.34) if iqr > 0 else sd + h = 1.06 * sigma * (n ** -0.2) if sigma > 0 else 0.0 + if h <= 0.0: # degenerate sample (all equal): base the kernel on scale + h = spread * 0.1 if spread > 0 else max(abs(vmin) * 0.1, 1.0) + h = max(h, spread * 1e-6) + else: + h = bandwidth + if h <= 0.0: + h = 1.0 + + pad = 4.0 * h # cover ~4 sigma on each side so the curve falls to ~0 + lo, hi = vmin - pad, vmax + pad + xs_grid = [lo + (hi - lo) * i / (grid_points - 1) for i in range(grid_points)] + + const = 1.0 / (n * h * math.sqrt(2.0 * math.pi)) + inv_h2 = -0.5 / (h * h) + density = [] + for x in xs_grid: + s = 0.0 + for v in xs: + d = x - v + s += math.exp(d * d * inv_h2) + density.append(const * s) + + # renormalize via the trapezoidal rule: integral over the grid == 1 + total = 0.0 + for i in range(grid_points - 1): + total += (density[i] + density[i + 1]) * (xs_grid[i + 1] - xs_grid[i]) / 2.0 + if total > 0.0: + density = [d / total for d in density] + return xs_grid, density + + +def describe(values: list[float]) -> dict: + """Median/mean/std/min/max/p90/p95 of a list of measurements.""" + s = sorted(values) + n = len(s) + return { + "n": n, + "median": percentile(s, 50), + "mean": statistics.fmean(s), + "std": statistics.stdev(s) if n > 1 else 0.0, + "min": s[0], + "max": s[-1], + "p90": percentile(s, 90), + "p95": percentile(s, 95), + } + + +# Two-sided 97.5% critical values of Student's t for df = 1..30. +_T_TABLE = { + 1: 12.706, 2: 4.303, 3: 3.182, 4: 2.776, 5: 2.571, 6: 2.447, 7: 2.365, + 8: 2.306, 9: 2.262, 10: 2.228, 11: 2.201, 12: 2.179, 13: 2.160, + 14: 2.145, 15: 2.131, 16: 2.120, 17: 2.110, 18: 2.101, 19: 2.093, + 20: 2.086, 21: 2.080, 22: 2.074, 23: 2.069, 24: 2.064, 25: 2.060, + 26: 2.056, 27: 2.052, 28: 2.048, 29: 2.045, 30: 2.042, +} + + +def t_critical(n: int) -> float: + """97.5% two-sided t critical value for n samples; 1.96 fallback for n > 30.""" + if n < 2: + return 0.0 + return _T_TABLE.get(n, 1.96) + + +def mean_ci(values: list[float]) -> tuple[float, float, float]: + """(mean, ci_low, ci_high) using mean ± t * SEM.""" + n = len(values) + if n == 0: + return (0.0, 0.0, 0.0) + mean = statistics.fmean(values) + if n < 2: + return (mean, mean, mean) + sem = statistics.stdev(values) / (n ** 0.5) + t = t_critical(n) + return (mean, mean - t * sem, mean + t * sem) + + +# -------------------------------------------------------------------------- +# Resampling and signal processing +# -------------------------------------------------------------------------- + + +def _interp(xs: list[float], ys: list[float], x: float) -> float: + """Piecewise-linear interpolation with endpoint clamping.""" + if x <= xs[0]: + return ys[0] + if x >= xs[-1]: + return ys[-1] + i = bisect_left(xs, x) + x0, x1 = xs[i - 1], xs[i] + y0, y1 = ys[i - 1], ys[i] + if x1 == x0: + return y0 + return y0 + (y1 - y0) * (x - x0) / (x1 - x0) + + +def resample_fraction( + samples: list[tuple[float, float]], grid_size: int +) -> tuple[list[float], list[float]]: + """Map (t, v) samples onto a [0, 1] fraction-of-run grid via linear interpolation. + + Returns (fractions, values) each of length `grid_size`. + """ + ts = [t for t, _ in samples] + vs = [v for _, v in samples] + duration = ts[-1] if ts else 1.0 + if duration <= 0.0: + duration = 1.0 + fracs = [i / (grid_size - 1) for i in range(grid_size)] + vals = [_interp(ts, vs, f * duration) for f in fracs] + return fracs, vals + + +def smooth(values: list[float], window: int = 5) -> list[float]: + """Moving average (window-sized, centered).""" + if window < 2: + return list(values) + half = window // 2 + out = [] + for i in range(len(values)): + lo = max(0, i - half) + hi = min(len(values), i + half + 1) + out.append(sum(values[lo:hi]) / (hi - lo)) + return out + + +def find_peaks(values: list[float], prominence_frac: float = 0.2) -> list[int]: + """Indices of local maxima with prominence >= prominence_frac of the range. + + Adjacent maxima (within 1 index) are merged, keeping the strongest. + """ + if len(values) < 3: + return [] + vmin, vmax = min(values), max(values) + span = vmax - vmin + if span <= 0.0: + return [] + threshold = span * prominence_frac + peaks: list[int] = [] + for i in range(1, len(values) - 1): + if values[i] > values[i - 1] and values[i] >= values[i + 1]: + base = min(values[i - 1], values[i + 1]) + if values[i] - base >= threshold: + peaks.append(i) + merged: list[int] = [] + for p in peaks: + if merged and p - merged[-1] <= 1: + if values[p] > values[merged[-1]]: + merged[-1] = p + else: + merged.append(p) + return merged + + +# -------------------------------------------------------------------------- +# Shape-based time-warping alignment (dynamic time warping) +# -------------------------------------------------------------------------- + + +def _dtw_matrix( + a: list[float], b: list[float], band_frac: float = 0.25 +) -> tuple[float, list[tuple[int, int]]]: + """DTW distance matrix + optimal path between two series (O(n*m) time). + + A Sakoe-Chiba band limits |i - j| to `band_frac` of the series length: it + keeps warps physically plausible (a phase of one run cannot slide more than + ~band_frac of its duration relative to the reference) and cuts the cost. + Pure-python is fast enough: 300x300 cells run in ~10ms, 1000x1000 in ~0.2s. + """ + n, m = len(a), len(b) + band = max(1, int(band_frac * max(n, m))) + INF = float("inf") + D = [[INF] * (m + 1) for _ in range(n + 1)] + D[0][0] = 0.0 + for i in range(1, n + 1): + ai = a[i - 1] + Di, Dip = D[i], D[i - 1] + lo = max(1, i - band) + hi = min(m, i + band) + for j in range(lo, hi + 1): + c = (ai - b[j - 1]) ** 2 + Di[j] = c + min(Dip[j], Di[j - 1], Dip[j - 1]) + path: list[tuple[int, int]] = [] + i, j = n, m + while i > 0 or j > 0: + path.append((i - 1, j - 1)) + if i == 0: + j -= 1 + elif j == 0: + i -= 1 + else: + best = min( + (D[i - 1][j], (i - 1, j)), + (D[i][j - 1], (i, j - 1)), + (D[i - 1][j - 1], (i - 1, j - 1)), + ) + i, j = best[1] + path.reverse() + return D[n][m], path + + +def _dtw_warp( + ref: list[float], run: list[float], band_frac: float = 0.25 +) -> dict[int, float]: + """Map each reference index i to the aligned run index j. + + When the optimal path visits a reference index several times (a plateau or + a steep ramp of the other series), the mean of the matched run indices is + used; the resulting piecewise-constant map is smoothed into a monotone + warp below. + """ + _, path = _dtw_matrix(ref, run, band_frac) + warp: dict[int, list[float]] = {} + for i, j in path: + warp.setdefault(i, []).append(float(j)) + out = {} + for i, js in warp.items(): + out[i] = statistics.fmean(js) + # enforce monotonicity (DTW can emit tiny non-monotone jitter after the + # mean-collapse); a strictly increasing map keeps the resampler well-behaved + prev = -1.0 + for i in sorted(out): + out[i] = max(out[i], prev) + prev = out[i] + return out + + +def _warp_curve( + warp: dict[int, float], + grid: list[float], + ts: list[float], + vs: list[float], +) -> list[float]: + """Resample a raw (t, v) series onto the grid through a DTW warp. + + `warp[i]` is the run index (fraction-of-run grid coordinate) aligned to + grid point i of the reference. The raw series is re-interpolated at the + warped *wall times*, so the result keeps the run's own RSS/disk levels. + """ + dur = ts[-1] if ts else 1.0 + if dur <= 0.0: + dur = 1.0 + idx = list(range(len(grid))) + out = [] + for i, f in enumerate(grid): + j = warp.get(i, i) # identity when the run is the reference + # j is a grid index (possibly fractional): map it back to a fraction + f_run = _interp(idx, grid, j) + out.append(_interp(ts, vs, f_run * dur)) + return out + + +def align_series( + runs: list[list[tuple[float, float, float]]], + grid_size: int = 100, + method: str = "dtw", + band_frac: float = 0.25, + smooth_window: int = 7, +) -> dict: + """Align per-run (t, rss, disk) sample lists onto a common fraction grid. + + `method` is one of "duration" (plain t/T normalization) or "dtw" + (shape-based dynamic-time-warping: each run's RSS curve is z-scored and + DTW-aligned to the median-duration reference run, then the warp is applied + to both RSS and disk; falls back to "duration" when a run has too few + samples for a meaningful warp). + + Returns a dict with: + method -- method actually used + ref_run -- index of the reference run (median duration) + band_frac -- Sakoe-Chiba band used (dtw mode only) + grid -- fraction values on [0, 1] + rss -- list of per-run resampled RSS values (kB on the grid) + disk -- list of per-run resampled disk values (bytes on the grid) + rss_mean/ci -- mean and t-CI across runs per grid point + disk_mean/ci + """ + durations = [samples[-1][0] if samples else 0.0 for samples in runs] + median_dur = statistics.median(durations) + ref_idx = min(range(len(durations)), key=lambda i: abs(durations[i] - median_dur)) + + grid = [i / (grid_size - 1) for i in range(grid_size)] + + # resample every run onto the fraction grid (duration normalization) first; + # the DTW warp then corrects phase differences between runs + def grid_values(samples, warp): + ts = [t for t, _, _ in samples] + rss = [v for _, v, _ in samples] + disk = [v for _, _, v in samples] + if warp is not None: + rss = _warp_curve(warp, grid, ts, rss) + disk = _warp_curve(warp, grid, ts, disk) + else: + _, rss = resample_fraction([(t, v) for t, v, _ in samples], grid_size) + _, disk = resample_fraction([(t, v) for t, _, v in samples], grid_size) + return rss, disk + + use_dtw = method == "dtw" and all(len(s) >= 8 for s in runs) + warps: list = [None] * len(runs) + if use_dtw: + # DTW on z-scored, lightly smoothed shapes so the warp follows the + # *shape* (ramp/plateau phases) and not the absolute RSS levels, which + # legitimately differ between runs (e.g. 1264 vs 1241 MiB plateaus). + _, ref_curve = resample_fraction( + [(t, v) for t, v, _ in runs[ref_idx]], grid_size + ) + ref_shape = smooth( + [(x - statistics.fmean(ref_curve)) / (statistics.stdev(ref_curve) or 1.0) + for x in ref_curve], + smooth_window, + ) + for i, samples in enumerate(runs): + if i == ref_idx: + continue + _, curve = resample_fraction([(t, v) for t, v, _ in samples], grid_size) + shape = smooth( + [(x - statistics.fmean(curve)) / (statistics.stdev(curve) or 1.0) + for x in curve], + smooth_window, + ) + warps[i] = _dtw_warp(ref_shape, shape, band_frac) + + all_rss: list[list[float]] = [] + all_disk: list[list[float]] = [] + for i, samples in enumerate(runs): + rss, disk = grid_values(samples, warps[i]) + all_rss.append(rss) + all_disk.append(disk) + + rss_means = [statistics.fmean(vals) for vals in zip(*all_rss)] if len(all_rss) > 1 else all_rss[0] + disk_means = [statistics.fmean(vals) for vals in zip(*all_disk)] if len(all_disk) > 1 else all_disk[0] + + def bands(cols): + out = [] + for vals in zip(*cols): + m, lo, hi = mean_ci(list(vals)) + out.append((m, lo, hi)) + return out + + return { + "method": "dtw" if use_dtw else "duration", + "ref_run": ref_idx, + "band_frac": band_frac if use_dtw else 0.0, + "grid": grid, + "rss": all_rss, + "disk": all_disk, + "rss_bands": bands(all_rss), + "disk_bands": bands(all_disk), + } diff --git a/examples/extensions/graph-algorithms/gfrs-poc/.gitignore b/examples/extensions/graph-algorithms/gfrs-poc/.gitignore new file mode 100644 index 00000000..4e7a3941 --- /dev/null +++ b/examples/extensions/graph-algorithms/gfrs-poc/.gitignore @@ -0,0 +1,4 @@ +build/ +dist/ +*.egg-info/ +__pycache__/ diff --git a/examples/extensions/graph-algorithms/gfrs-poc/README.md b/examples/extensions/graph-algorithms/gfrs-poc/README.md new file mode 100644 index 00000000..449ed0f8 --- /dev/null +++ b/examples/extensions/graph-algorithms/gfrs-poc/README.md @@ -0,0 +1,68 @@ +# gfrs-poc: graphframes-rs Pregel engine in pure PySpark + +A minimal re-implementation of the [graphframes-rs](../../../../graphframes-rs) +Pregel engine and its delta PageRank, written in 100% pure PySpark (Spark Connect +client code, no custom JVM/JNI/Scala). It is a proof of concept used by the +[`sem_benchmark`](../../../benchmarks/sem_benchmark) harness to compare against +the native Nutmeg kernels on Sail. + +| Rust source | Python source | What is kept | +| --- | --- | --- | +| `src/algorithm/pregel.rs` | `src/gfrs_poc/pregel.py` | Builder API, message structs + union-by-name, participation column, vertex voting, `skip_dest_state`, column prefixing, per-iteration parquet checkpoints | +| `src/memory/parquet_checkpointer.rs` | `src/gfrs_poc/checkpointer.py` | write + read-back checkpoints, hash-repartitioned and sorted writes (`push_pre_sorted`) | +| `src/algorithm/centrality/pagerank.rs` | `src/gfrs_poc/pagerank.py` | GraphX-style deltas, `delta / out_degree` messages, decreasing active frontier, voting convergence, final normalization | + +## Kept optimizations + +- **Parquet checkpointing of the state every iteration** (`state-`): the lazy + lineage stays a short "read parquet -> transform" plan and the working set + lives on disk, not in memory. +- **Edges checkpointed once** before the loop, with the `__pregel_msg_edge_*` + column names used by every later join. +- **Aggregated messages checkpointed** (`aggregated-messages-`) to cut the + memory peak of the aggregation. +- **Pre-sorted checkpoint layout**: state and edges are hash-repartitioned into + `num_partitions` parts and sorted by the join key within partitions before the + write (the pure-PySpark equivalent of the Rust `push_pre_sorted`; PySpark + cannot *declare* the layout back to the optimizer, so the server-side join + strategy is controlled by the Sail `optimizer.prefer_hash_join` setting). +- **GraphX-style truncation**: with `skip_dest_state`, the participation filter + is applied to the source side *before* the join, so the join input shrinks as + the active frontier decreases. + +## Differences from the Rust version (POC scope) + +- **No eviction/purge**: the PySpark Connect API does not expose FS list/delete, + so checkpoints are never removed. Every run writes under + `//`; wipe that directory manually (or keep + `--work-dir` on a large NVM disk). +- **No scoped session**: the Rust engine flips `datafusion.optimizer.prefer_hash_join` + per algorithm; here the flag is a server-level Sail setting + (`SAIL_OPTIMIZER__PREFER_HASH_JOIN`, see the benchmark's `--use-smj`). +- Source vertices only (no personalized PageRank yet). + +## Usage + +```python +from pyspark.sql import functions as F +from gfrs_poc import pagerank, Pregel, MessageDirection, pregel_src, pregel_default_msg + +result = pagerank(edges, vertices, tol=1e-5, max_iter=0, + checkpoint_dir="/mnt/nvm/work/gfrs", num_partitions=8) +result.show() # id, pagerank (normalized to sum 1) + +# The generic engine, e.g. in-degree by counting messages: +in_degree = ( + Pregel(edges, vertices, checkpoint_dir="/mnt/nvm/work/gfrs", num_partitions=8) + .add_vertex_column("in_degree", F.lit(0), + F.col("in_degree") + F.coalesce(pregel_default_msg(), F.lit(0))) + .add_message(F.lit(1), MessageDirection.SRC_TO_DST) + .add_aggregate_expr(F.sum(pregel_default_msg())) + .skip_dest_state() + .max_iterations(1) + .run() +) +``` + +Vertices must expose an `id` column and edges `src` / `dst` columns (int64), +matching the graphframes-rs defaults. diff --git a/examples/extensions/graph-algorithms/gfrs-poc/pyproject.toml b/examples/extensions/graph-algorithms/gfrs-poc/pyproject.toml new file mode 100644 index 00000000..abc9a445 --- /dev/null +++ b/examples/extensions/graph-algorithms/gfrs-poc/pyproject.toml @@ -0,0 +1,13 @@ +[build-system] +requires = ["setuptools>=75"] +build-backend = "setuptools.build_meta" + +[project] +name = "gfrs-poc" +version = "0.1.0" +description = "PySpark port of the graphframes-rs Pregel engine and delta PageRank (proof of concept)" +requires-python = ">=3.10" +dependencies = ["pyspark[connect]>=4.0,<4.2"] + +[tool.setuptools.packages.find] +where = ["src"] diff --git a/examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/__init__.py b/examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/__init__.py new file mode 100644 index 00000000..cd0a3f71 --- /dev/null +++ b/examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/__init__.py @@ -0,0 +1,44 @@ +"""gfrs-poc: PySpark port of the graphframes-rs Pregel engine and delta PageRank. + +This is a proof of concept that re-implements, in 100% pure PySpark, the +DataFusion engine from ``graphframes-rs`` (see the per-module docstrings for the +exact source files and the kept/dropped optimizations). +""" + +from .pagerank import PAGERANK, PAGERANK_DELTA, pagerank +from .pregel import ( + EDGE_DST, + EDGE_SRC, + PREGEL_MSG, + PREGEL_MSG_DST, + PREGEL_MSG_EDGE, + PREGEL_MSG_SRC, + VERTEX_ID, + MessageDirection, + Pregel, + pregel_default_msg, + pregel_dst, + pregel_edge, + pregel_msg, + pregel_src, +) + +__all__ = [ + "EDGE_DST", + "EDGE_SRC", + "PAGERANK", + "PAGERANK_DELTA", + "PREGEL_MSG", + "PREGEL_MSG_DST", + "PREGEL_MSG_EDGE", + "PREGEL_MSG_SRC", + "VERTEX_ID", + "MessageDirection", + "Pregel", + "pagerank", + "pregel_default_msg", + "pregel_dst", + "pregel_edge", + "pregel_msg", + "pregel_src", +] diff --git a/examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/checkpointer.py b/examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/checkpointer.py new file mode 100644 index 00000000..30762ace --- /dev/null +++ b/examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/checkpointer.py @@ -0,0 +1,64 @@ +"""Parquet checkpoint directories. + +Port of the writing/reading half of ``graphframes-rs/src/memory/parquet_checkpointer.rs``. +The PySpark Connect API does not expose the object-store list/delete calls the Rust +version uses for ``evict``/``purge``, so checkpoints are never removed here: every +pushed directory stays on disk until the caller wipes the run directory. Keep the +checkpoint dir on a large local disk (see the sem_benchmark harness). +""" + +from __future__ import annotations + +import logging + +from pyspark.sql import DataFrame, SparkSession +from pyspark.sql import functions as F + +logger = logging.getLogger("gfrs_poc") + + +class ParquetCheckpointer: + """Write DataFrames to parquet under ``base_dir`` and read them straight back. + + Reading back truncates the lazy lineage, exactly like the Rust checkpointer: + every iteration works on a short "read parquet -> transform" plan instead of a + growing expression tree. + """ + + def __init__(self, spark: SparkSession, base_dir: str, num_partitions: int): + self.spark = spark + self.base_dir = base_dir.rstrip("/") + self.num_partitions = num_partitions + self.stored: list[str] = [] + + def push(self, postfix: str, df: DataFrame, key: str | None = None) -> DataFrame: + """Persist ``df`` into ``/`` and return the read-back frame. + + With ``key``, the frame is hash-repartitioned into ``num_partitions`` + partitions and sorted by ``key`` within each partition before the write. + This mirrors the Rust ``push_pre_sorted`` (hash partition + per-partition + sort on disk); PySpark cannot *declare* the partitioning/sortedness back to + the optimizer, but the layout still keeps the sorted-by-key file-per-partition + contract on disk. + """ + path = f"{self.base_dir}/{postfix}" + out = df + if key is not None: + out = out.repartition(self.num_partitions, F.col(key)).sortWithinPartitions( + F.col(key) + ) + out.write.mode("error").parquet(path) + self.stored.append(path) + logger.info("checkpoint %s written%s", path, f" (sorted by {key})" if key else "") + return self._read_back(path, df.schema) + + def _read_back(self, path: str, schema) -> DataFrame: + # An empty frame writes no data files, so schema inference can fail; fall + # back to the writer-side schema (same trick as Pecan's staging). + try: + stored = self.spark.read.parquet(path) + if stored.schema.fields: + return stored + except Exception as exc: # noqa: BLE001 - engine-specific empty-write behavior + logger.debug("plain read of %s failed (%s); reading with the writer schema", path, exc) + return self.spark.read.schema(schema).parquet(path) diff --git a/examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/pagerank.py b/examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/pagerank.py new file mode 100644 index 00000000..b17107f8 --- /dev/null +++ b/examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/pagerank.py @@ -0,0 +1,131 @@ +"""Minimal PySpark port of ``graphframes-rs/src/algorithm/centrality/pagerank.rs``. + +Incremental (GraphX-style) PageRank over the Pregel engine, with a decreasing +active frontier: + +* every vertex carries ``pagerank`` and ``pagerank_delta`` next to ``out_degree``; +* the message a source sends is its *delta* split over its out-edges + (``delta / out_degree``), aggregated with ``sum``; +* ``pagerank += alpha * msg`` and ``pagerank_delta = alpha * msg``, where + ``alpha = 1 - reset_prob`` is kept explicitly: it cannot be folded into the + final normalization because the graph may have sinks; +* only sources whose new delta is still above ``tol`` participate; with + ``skip_dest_state`` the participation filter runs before the join, so the + active frontier shrinks every iteration; +* ``max_iter <= 0`` runs in convergence mode: a voting column stops the loop as + soon as no vertex is active. ``max_iter > 0`` runs a fixed budget instead; +* the final ranks are normalized to sum to 1. +""" + +from __future__ import annotations + +import logging + +from pyspark.sql import DataFrame +from pyspark.sql import functions as F + +from .pregel import ( + EDGE_DST, + EDGE_SRC, + VERTEX_ID, + MessageDirection, + Pregel, + pregel_default_msg, + pregel_src, +) + +logger = logging.getLogger("gfrs_poc") + +#: Column name for pagerank in the PageRank algorithm. +PAGERANK = "pagerank" + +#: Per-iteration pagerank delta; an internal state column, not part of the output. +PAGERANK_DELTA = "pagerank_delta" + + +def _out_degrees(edges: DataFrame, vertices: DataFrame) -> DataFrame: + """Out-degree per vertex, keeping zero-out-degree vertices (sinks) at 0. + + Dropping sinks would silently remove them from the result and lose the rank + mass they should accumulate. + """ + degrees = ( + edges.groupBy(EDGE_SRC) + .agg(F.count(F.col(EDGE_DST)).alias("out_degree")) + .select(F.col(EDGE_SRC).alias(VERTEX_ID), F.col("out_degree")) + ) + return ( + vertices.select(VERTEX_ID) + .join(degrees, how="left", on=VERTEX_ID) + .select(F.col(VERTEX_ID), F.coalesce(F.col("out_degree"), F.lit(0)).alias("out_degree")) + ) + + +def pagerank( + edges: DataFrame, + vertices: DataFrame, + tol: float = 1e-5, + max_iter: int = 0, + reset_prob: float = 0.15, + checkpoint_dir: str = "_gfrs_poc_checkpoints", + num_partitions: int | None = None, + info: dict | None = None, +) -> DataFrame: + """Run delta PageRank and return a DataFrame with ``id`` and normalized ``pagerank``. + + Mirrors ``PageRankBuilder`` defaults: uniform seeding with ``reset_prob``, + damping ``1 - reset_prob``, tolerance-based active frontier. ``max_iter <= 0`` + (default) converges via vertex voting; ``max_iter > 0`` caps the iterations + without voting. When ``info`` is given it is filled with ``iterations`` and + ``active_counts`` for observability. + """ + alpha = 1.0 - reset_prob + + graph_vertices = _out_degrees(edges, vertices) + + # Each vertex sends its *delta* split over its out-edges; the additive constant + # does not matter because the result is normalized at the end, but a non-zero + # initial delta is needed to bootstrap. Seeding both columns with reset_prob + # reproduces the GraphX dynamic PageRank bootstrap. + new_delta = F.lit(alpha) * F.coalesce(pregel_default_msg(), F.lit(0.0)) + + builder = ( + Pregel( + edges, + graph_vertices, + checkpoint_dir=f"{checkpoint_dir.rstrip('/')}/inner_checkpoint", + num_partitions=num_partitions, + ) + .add_vertex_column(PAGERANK, F.lit(reset_prob), F.col(PAGERANK) + new_delta) + .add_vertex_column(PAGERANK_DELTA, F.lit(reset_prob), new_delta) + .add_vertex_column("out_degree", F.col("out_degree"), F.col("out_degree")) + .add_message( + pregel_src(PAGERANK_DELTA) / pregel_src("out_degree"), + MessageDirection.SRC_TO_DST, + ) + .add_aggregate_expr(F.sum(pregel_default_msg())) + # A vertex participates while its (new) delta is still above tol. A + # separate column from the voting flag: participation prunes message + # generation every iteration, voting only decides when to stop. + .with_participation_column("participates", F.lit(True), new_delta > F.lit(tol)) + .skip_dest_state() + ) + + if max_iter > 0: + # Fixed iteration budget: keep the participation filter (cheap tail) but + # do not vote for early termination. + builder = builder.max_iterations(max_iter) + else: + # Convergence mode: stop once no vertex is still active. + builder = builder.with_vertex_voting("active", new_delta > F.lit(tol)) + + result = builder.run() + + if info is not None: + info["iterations"] = builder.iterations + info["active_counts"] = builder.active_counts + + total = result.agg(F.sum(PAGERANK).alias("pagerank_sum")).first()["pagerank_sum"] + if total is None or total == 0: + raise ArithmeticError("pagerank sum is zero; the graph produced no rank mass") + return result.select(F.col(VERTEX_ID), (F.col(PAGERANK) / F.lit(total)).alias(PAGERANK)) diff --git a/examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/pregel.py b/examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/pregel.py new file mode 100644 index 00000000..9f7295db --- /dev/null +++ b/examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/pregel.py @@ -0,0 +1,342 @@ +"""Minimal PySpark port of ``graphframes-rs/src/algorithm/pregel.rs``. + +Same concept, same plan shape, same column names: + +* vertex state and edges live in parquet checkpoints, re-read every iteration; +* edges are checkpointed once with ``__pregel_msg_edge_*`` column names; +* triplets are ``src-state JOIN edges`` (``skip_dest_state`` pushes the + participation filter *before* the join -- the GraphX-style truncation; with the + destination state the triplets keep the ``src_part OR dst_part`` post-join + filter); +* messages are ``struct(target_id, payload)`` projections over the triplets, + unioned by name for multiple messages, then aggregated by ``id``; +* aggregated messages are checkpointed (spill) and left-joined onto the state; +* update expressions produce the next state, checkpointed under ``state-``; +* vertex voting stops the loop when no vertex is active anymore. + +Differences forced by the PySpark API: no purge/eviction (see ``checkpointer.py``) +and no declared pre-partitioning, so the server-side join strategy is controlled +by the Sail ``optimizer.prefer_hash_join`` setting instead of a scoped session. +""" + +from __future__ import annotations + +import logging +from enum import Enum +from uuid import uuid4 + +from pyspark.sql import Column, DataFrame +from pyspark.sql import functions as F + +from .checkpointer import ParquetCheckpointer + +logger = logging.getLogger("gfrs_poc") + +VERTEX_ID = "id" +EDGE_SRC = "src" +EDGE_DST = "dst" + +#: Message column names used in the Pregel algorithm (same as the Rust engine). +PREGEL_MSG = "__pregel_msg" +PREGEL_MSG_SRC = "__pregel_msg_src" +PREGEL_MSG_DST = "__pregel_msg_dst" +PREGEL_MSG_EDGE = "__pregel_msg_edge" + + +class MessageDirection(Enum): + """Direction of message passing in Pregel.""" + + SRC_TO_DST = "src-to-dst" + DST_TO_SRC = "dst-to-src" + BIDIRECTIONAL = "bidirectional" + + +def pregel_src(col_name: str) -> Column: + return F.col(f"{PREGEL_MSG_SRC}_{col_name}") + + +def pregel_dst(col_name: str) -> Column: + return F.col(f"{PREGEL_MSG_DST}_{col_name}") + + +def pregel_edge(col_name: str) -> Column: + return F.col(f"{PREGEL_MSG_EDGE}_{col_name}") + + +def pregel_msg(msg_name: str) -> Column: + return F.col(f"{PREGEL_MSG}_{msg_name}") + + +def pregel_default_msg() -> Column: + return pregel_msg("msg") + + +class _VertexColumn: + def __init__(self, name: str, init_expr: Column, update_expr: Column): + self.name = name + self.init_expr = init_expr + self.update_expr = update_expr + + +class _Message: + def __init__(self, name: str, expr: Column, direction: MessageDirection): + self.name = name + self.expr = expr + self.direction = direction + + +class Pregel: + """Builder-style Pregel engine; ``run`` executes the loop and returns the + final vertex state (``id`` + the declared vertex columns) as a DataFrame. + + The returned frame reads the last ``state-`` checkpoint, so consuming it + does not recompute the loop. + """ + + def __init__( + self, + edges: DataFrame, + vertices: DataFrame, + checkpoint_dir: str = "_gfrs_poc_checkpoints", + num_partitions: int | None = None, + ): + self.edges = edges + self.vertices = vertices + self.spark = vertices.sparkSession + #: iteration budget; ``None`` means unlimited (field named differently from + #: the ``max_iterations`` builder method on purpose: in Python an instance + #: attribute would shadow the method). + self._max_iterations: int | None = None + self.use_vertex_voting = False + self.activity_column: str | None = None + self.voting_condition: Column | None = None + self.vertex_columns: list[_VertexColumn] = [] + self.edge_columns = [EDGE_SRC, EDGE_DST] + self.participation_column: _VertexColumn | None = None + self.messages: list[_Message] = [] + self.aggregate_exprs: list[Column] = [] + self.use_dest_state = True + self.checkpoint_dir = checkpoint_dir + if num_partitions is None: + num_partitions = int(self.spark.conf.get("spark.sql.shuffle.partitions", "200")) + self.num_partitions = num_partitions + #: Filled by ``run``: number of executed iterations and per-iteration + #: active-vertex counts (only with vertex voting). + self.iterations = 0 + self.active_counts: list[int] = [] + + # ------------------------------------------------------------------ builder + + def max_iterations(self, max_iterations: int) -> Pregel: + self._max_iterations = max_iterations + return self + + def skip_dest_state(self) -> Pregel: + self.use_dest_state = False + return self + + def with_vertex_voting(self, activity_column: str, voting_condition: Column) -> Pregel: + self.use_vertex_voting = True + self.activity_column = activity_column + self.voting_condition = voting_condition + return self + + def add_vertex_column(self, name: str, init_expr: Column, update_expr: Column) -> Pregel: + self.vertex_columns.append(_VertexColumn(name, init_expr, update_expr)) + return self + + def with_participation_column( + self, column: str, initial_expr: Column, update_condition: Column + ) -> Pregel: + """A boolean column that decides whether a vertex still sends messages.""" + self.participation_column = _VertexColumn(column, initial_expr, update_condition) + return self + + def add_message(self, expr: Column, direction: MessageDirection) -> Pregel: + self.messages.append(_Message("msg", expr, direction)) + return self + + def add_named_message(self, name: str, expr: Column, direction: MessageDirection) -> Pregel: + self.messages.append(_Message(name, expr, direction)) + return self + + def add_aggregate_expr(self, expr: Column) -> Pregel: + self.aggregate_exprs.append(expr.alias(f"{PREGEL_MSG}_msg")) + return self + + def add_named_aggregate_expr(self, name: str, expr: Column) -> Pregel: + self.aggregate_exprs.append(expr.alias(f"{PREGEL_MSG}_{name}")) + return self + + # --------------------------------------------------------------------- run + + def run(self) -> DataFrame: + if not self.messages: + raise ValueError("No messages defined for Pregel algorithm") + if not self.aggregate_exprs and len(self.messages) > 1: + raise ValueError("Aggregate expression is required when multiple messages are defined") + + run_id = uuid4() + logger.info("start pregel with ID %s", run_id) + run_dir = f"{self.checkpoint_dir.rstrip('/')}/{run_id}" + edges_checkpointer = ParquetCheckpointer(self.spark, run_dir, self.num_partitions) + state_checkpointer = ParquetCheckpointer(self.spark, run_dir, self.num_partitions) + + # Initialize vertices with the initial expressions. + current_vertices = self.vertices + for column in self.vertex_columns: + current_vertices = current_vertices.withColumn(column.name, column.init_expr) + + max_iterations = self._max_iterations if self._max_iterations is not None else 2**63 - 1 + + # Message payloads as struct(target_id, = expr), one select per + # message direction, unioned by name afterwards. + message_structs: list[tuple[str, Column]] = [] + for message in self.messages: + if message.direction == MessageDirection.SRC_TO_DST: + target = pregel_edge(EDGE_DST) + else: # DST_TO_SRC and the src half of BIDIRECTIONAL + target = pregel_edge(EDGE_SRC) + message_structs.append( + (message.name, F.struct(target.alias(VERTEX_ID), message.expr.alias(message.name))) + ) + if message.direction == MessageDirection.BIDIRECTIONAL: + message_structs.append( + ( + message.name, + F.struct( + pregel_edge(EDGE_DST).alias(VERTEX_ID), + message.expr.alias(message.name), + ), + ) + ) + + update_columns = [ + column.update_expr.alias(column.name) for column in self.vertex_columns + ] + + if self.use_vertex_voting: + activity_column = self.activity_column + assert activity_column is not None + current_vertices = current_vertices.withColumn(activity_column, F.lit(True)) + voting_condition = ( + self.voting_condition if self.voting_condition is not None else F.lit(True) + ) + update_columns.append(voting_condition.alias(activity_column)) + + if self.participation_column is not None: + participation_column = self.participation_column + current_vertices = current_vertices.withColumn( + participation_column.name, participation_column.init_expr + ) + update_columns.append( + participation_column.update_expr.alias(participation_column.name) + ) + update_columns.append(F.col(VERTEX_ID).alias(VERTEX_ID)) + + # Prepare and offload edges to disk. + edges_df = self.edges.select( + *[F.col(name).alias(f"{PREGEL_MSG_EDGE}_{name}") for name in self.edge_columns] + ) + edges_struct = edges_checkpointer.push( + "edges", edges_df, key=f"{PREGEL_MSG_EDGE}_{EDGE_SRC}" + ) + + # Offload the prepared state to disk. + current_vertices = state_checkpointer.push("state-0", current_vertices, key=VERTEX_ID) + + participation_name = ( + self.participation_column.name if self.participation_column is not None else None + ) + + iteration = 0 + self.iterations = 0 + self.active_counts = [] + while iteration < max_iterations: + iteration += 1 + field_names = [field.name for field in current_vertices.schema.fields] + src_projection = [ + F.col(name).alias(f"{PREGEL_MSG_SRC}_{name}") for name in field_names + ] + + # When the destination state is not needed we can push the participation + # filter *before* the join: only participating sources ever emit a + # message, so dropping inactive sources up front shrinks the join input. + # With the destination state we must keep both sides and defer to the + # post-join OR filter below. + if not self.use_dest_state: + src_state = current_vertices + if participation_name is not None: + src_state = src_state.filter(F.col(participation_name)) + src_vertices = src_state.select(src_projection) + else: + src_vertices = current_vertices.select(src_projection) + + triplets = src_vertices.join( + edges_struct, + how="inner", + on=(pregel_src(VERTEX_ID) == pregel_edge(EDGE_SRC)), + ) + + if self.use_dest_state: + dst_vertices = current_vertices.select( + *[F.col(name).alias(f"{PREGEL_MSG_DST}_{name}") for name in field_names] + ) + triplets = triplets.join( + dst_vertices, + how="inner", + on=(F.col(f"{PREGEL_MSG_DST}_{VERTEX_ID}") == pregel_edge(EDGE_DST)), + ) + # Drop triplets where *both* endpoints are inactive; keep a triplet + # as long as the source or the destination still participates. + if participation_name is not None: + triplets = triplets.filter( + pregel_src(participation_name) | pregel_dst(participation_name) + ) + + messages_df: DataFrame | None = None + for name, message_struct in message_structs: + part = triplets.select( + message_struct.getField(VERTEX_ID).alias(VERTEX_ID), + message_struct.getField(name).alias(f"{PREGEL_MSG}_{name}"), + ) + messages_df = part if messages_df is None else messages_df.unionByName(part) + + # Spill the aggregation to disk to reduce the memory peak. + if self.aggregate_exprs: + messages_df = messages_df.groupBy(VERTEX_ID).agg(*self.aggregate_exprs) + aggregated = state_checkpointer.push( + f"aggregated-messages-{iteration}", messages_df + ) + + vertices_with_messages = current_vertices.join( + aggregated.withColumnRenamed(VERTEX_ID, "am_vid"), + how="left", + on=(F.col(VERTEX_ID) == F.col("am_vid")), + ).drop("am_vid") + + new_vertices = vertices_with_messages.select(*update_columns) + current_vertices = state_checkpointer.push( + f"state-{iteration}", new_vertices, key=VERTEX_ID + ) + + if self.use_vertex_voting: + active_count = current_vertices.filter( + F.col(self.activity_column) + ).count() + self.active_counts.append(active_count) + logger.info( + "iteration %d, %d vertices are participating in the loop", + iteration, + active_count, + ) + if active_count == 0: + break + else: + logger.info("iteration %d / %d completed", iteration, max_iterations) + + self.iterations = iteration + + # Drop the debug columns: keep id + the declared vertex columns. + required = [F.col(VERTEX_ID)] + [F.col(column.name) for column in self.vertex_columns] + return current_vertices.select(required)