From 2fbc6c50ac1815371e4813e3f49e687b7639ae94 Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 28 Sep 2026 14:35:15 +0200 Subject: [PATCH 1/2] chore: wip --- .../benchmarks/sem_benchmark/.gitignore | 4 + .../benchmarks/sem_benchmark/Makefile | 84 +++ .../benchmarks/sem_benchmark/README.md | 105 ++++ .../benchmarks/sem_benchmark/datasets.py | 152 ++++++ .../benchmarks/sem_benchmark/main.py | 514 ++++++++++++++++++ .../benchmarks/sem_benchmark/monitor.py | 186 +++++++ .../benchmarks/sem_benchmark/plotting.py | 170 ++++++ .../benchmarks/sem_benchmark/runtime.py | 152 ++++++ .../benchmarks/sem_benchmark/stats.py | 409 ++++++++++++++ .../graph-algorithms/gfrs-poc/.gitignore | 4 + .../graph-algorithms/gfrs-poc/README.md | 68 +++ .../graph-algorithms/gfrs-poc/pyproject.toml | 13 + .../gfrs-poc/src/gfrs_poc/__init__.py | 44 ++ .../gfrs-poc/src/gfrs_poc/checkpointer.py | 64 +++ .../gfrs-poc/src/gfrs_poc/pagerank.py | 131 +++++ .../gfrs-poc/src/gfrs_poc/pregel.py | 342 ++++++++++++ 16 files changed, 2442 insertions(+) create mode 100644 examples/extensions/benchmarks/sem_benchmark/.gitignore create mode 100644 examples/extensions/benchmarks/sem_benchmark/Makefile create mode 100644 examples/extensions/benchmarks/sem_benchmark/README.md create mode 100644 examples/extensions/benchmarks/sem_benchmark/datasets.py create mode 100755 examples/extensions/benchmarks/sem_benchmark/main.py create mode 100644 examples/extensions/benchmarks/sem_benchmark/monitor.py create mode 100644 examples/extensions/benchmarks/sem_benchmark/plotting.py create mode 100644 examples/extensions/benchmarks/sem_benchmark/runtime.py create mode 100644 examples/extensions/benchmarks/sem_benchmark/stats.py create mode 100644 examples/extensions/graph-algorithms/gfrs-poc/.gitignore create mode 100644 examples/extensions/graph-algorithms/gfrs-poc/README.md create mode 100644 examples/extensions/graph-algorithms/gfrs-poc/pyproject.toml create mode 100644 examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/__init__.py create mode 100644 examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/checkpointer.py create mode 100644 examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/pagerank.py create mode 100644 examples/extensions/graph-algorithms/gfrs-poc/src/gfrs_poc/pregel.py diff --git a/examples/extensions/benchmarks/sem_benchmark/.gitignore b/examples/extensions/benchmarks/sem_benchmark/.gitignore new file mode 100644 index 00000000..b01b4f04 --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/.gitignore @@ -0,0 +1,4 @@ +results/ +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..b0cca05b --- /dev/null +++ b/examples/extensions/benchmarks/sem_benchmark/main.py @@ -0,0 +1,514 @@ +#!/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 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 = datasets.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() + if args.dataset not in datasets.CATALOG: + raise SystemExit(f"unknown dataset {args.dataset!r}") + 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 = datasets.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/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) From b772a112c842ff6e4406d2774a8f032f54cea399 Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 28 Sep 2026 17:35:21 +0200 Subject: [PATCH 2/2] chore: first results XS & M sized --- .../benchmarks/sem_benchmark/.gitignore | 1 - .../benchmarks/sem_benchmark/main.py | 24 +- .../max_mem_24G_hash_parts_8/benchmark.json | 120 + .../max_mem_24G_hash_parts_8/wall_time.dat | 257 ++ .../wall_time.gnuplot | 19 + .../max_mem_4G_hash_parts_4/benchmark.json | 1201 +++++ .../max_mem_4G_hash_parts_4/disk.dat | 101 + .../max_mem_4G_hash_parts_4/disk.gnuplot | 10 + .../max_mem_4G_hash_parts_4/disk.png | Bin 0 -> 34948 bytes .../max_mem_4G_hash_parts_4/rss.dat | 101 + .../max_mem_4G_hash_parts_4/rss.gnuplot | 10 + .../max_mem_4G_hash_parts_4/rss.png | Bin 0 -> 40508 bytes .../max_mem_4G_hash_parts_4/wall_time.dat | 257 ++ .../max_mem_4G_hash_parts_4/wall_time.gnuplot | 19 + .../max_mem_4G_hash_parts_4/wall_time.png | Bin 0 -> 53032 bytes .../max_mem_24G_hash_parts_8/benchmark.json | 1164 +++++ .../max_mem_24G_hash_parts_8/disk.dat | 101 + .../max_mem_24G_hash_parts_8/disk.gnuplot | 10 + .../max_mem_24G_hash_parts_8/rss.dat | 101 + .../max_mem_24G_hash_parts_8/rss.gnuplot | 10 + .../max_mem_24G_hash_parts_8/wall_time.dat | 257 ++ .../wall_time.gnuplot | 19 + .../max_mem_4G_hash_parts_4/benchmark.json | 1398 ++++++ .../max_mem_4G_hash_parts_4/disk.dat | 101 + .../max_mem_4G_hash_parts_4/disk.gnuplot | 10 + .../max_mem_4G_hash_parts_4/disk.png | Bin 0 -> 48253 bytes .../max_mem_4G_hash_parts_4/rss.dat | 101 + .../max_mem_4G_hash_parts_4/rss.gnuplot | 10 + .../max_mem_4G_hash_parts_4/rss.png | Bin 0 -> 37025 bytes .../max_mem_4G_hash_parts_4/wall_time.dat | 257 ++ .../max_mem_4G_hash_parts_4/wall_time.gnuplot | 19 + .../max_mem_4G_hash_parts_4/wall_time.png | Bin 0 -> 53075 bytes .../max_mem_24G_smj_parts_8/benchmark.json | 3985 +++++++++++++++++ .../max_mem_24G_smj_parts_8/disk.dat | 101 + .../max_mem_24G_smj_parts_8/disk.gnuplot | 10 + .../max_mem_24G_smj_parts_8/disk.png | Bin 0 -> 132536 bytes .../max_mem_24G_smj_parts_8/rss.dat | 101 + .../max_mem_24G_smj_parts_8/rss.gnuplot | 10 + .../max_mem_24G_smj_parts_8/rss.png | Bin 0 -> 134393 bytes .../max_mem_24G_smj_parts_8/wall_time.dat | 257 ++ .../max_mem_24G_smj_parts_8/wall_time.gnuplot | 21 + .../max_mem_24G_smj_parts_8/wall_time.png | Bin 0 -> 61743 bytes .../max_mem_24G_smj_parts_8/benchmark.json | 3850 ++++++++++++++++ .../max_mem_24G_smj_parts_8/disk.dat | 101 + .../max_mem_24G_smj_parts_8/disk.gnuplot | 10 + .../max_mem_24G_smj_parts_8/disk.png | Bin 0 -> 57804 bytes .../max_mem_24G_smj_parts_8/rss.dat | 101 + .../max_mem_24G_smj_parts_8/rss.gnuplot | 10 + .../max_mem_24G_smj_parts_8/rss.png | Bin 0 -> 91006 bytes .../max_mem_24G_smj_parts_8/wall_time.dat | 257 ++ .../max_mem_24G_smj_parts_8/wall_time.gnuplot | 21 + .../max_mem_24G_smj_parts_8/wall_time.png | Bin 0 -> 58340 bytes 52 files changed, 14508 insertions(+), 5 deletions(-) create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/benchmark.json create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/wall_time.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_24G_hash_parts_8/wall_time.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/benchmark.json create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/disk.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/disk.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/disk.png create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/rss.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/rss.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/rss.png create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/nutmeg/-/example-directed/max_mem_4G_hash_parts_4/wall_time.png create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/benchmark.json create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/disk.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/disk.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/rss.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/rss.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/wall_time.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_24G_hash_parts_8/wall_time.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/benchmark.json create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/disk.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/disk.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/disk.png create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/rss.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/rss.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/rss.png create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/-/example-directed/max_mem_4G_hash_parts_4/wall_time.png create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/benchmark.json create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/disk.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/disk.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/disk.png create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/rss.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/rss.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/rss.png create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/M/graph500-24/max_mem_24G_smj_parts_8/wall_time.png create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/benchmark.json create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/disk.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/disk.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/disk.png create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/rss.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/rss.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/rss.png create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.dat create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.gnuplot create mode 100644 examples/extensions/benchmarks/sem_benchmark/results/pregel/XS/cit-Patents/max_mem_24G_smj_parts_8/wall_time.png diff --git a/examples/extensions/benchmarks/sem_benchmark/.gitignore b/examples/extensions/benchmarks/sem_benchmark/.gitignore index b01b4f04..36575bc5 100644 --- a/examples/extensions/benchmarks/sem_benchmark/.gitignore +++ b/examples/extensions/benchmarks/sem_benchmark/.gitignore @@ -1,4 +1,3 @@ -results/ data/ work/ target/ diff --git a/examples/extensions/benchmarks/sem_benchmark/main.py b/examples/extensions/benchmarks/sem_benchmark/main.py index b0cca05b..7a8eb24a 100755 --- a/examples/extensions/benchmarks/sem_benchmark/main.py +++ b/examples/extensions/benchmarks/sem_benchmark/main.py @@ -55,6 +55,24 @@ 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.", @@ -331,7 +349,7 @@ def environment_info() -> dict: def benchmark_engine(engine: str, args: argparse.Namespace) -> None: - ds_info = datasets.info(args.dataset) + 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 @@ -472,8 +490,6 @@ def execute(run_i: str, interval: float) -> dict: def main() -> None: logging.basicConfig(level=logging.INFO, format="%(asctime)s %(name)s %(levelname)s %(message)s") args = parse_args() - if args.dataset not in datasets.CATALOG: - raise SystemExit(f"unknown dataset {args.dataset!r}") engines: list[str] = [] for part in args.engine.split(","): part = part.strip() @@ -499,7 +515,7 @@ def main() -> None: f"--max-memory ({args.max_memory})" ) - info = datasets.info(args.dataset) + 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)) 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 0000000000000000000000000000000000000000..a97842157f3baa4d0e92df0414bebb29176189e5 GIT binary patch literal 34948 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c7e516d094ffa576c0083588e7942e995468df65 GIT binary patch literal 40508 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 z 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 LNkvXXu0mjf*g$3u literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3455ea21b8c9141d3f5ce45d5deb614aa3ee982e GIT binary patch literal 53032 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

4T$Pk;)4^vJPu`b&2@`op~^pR@uHXqqWs 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 d{@*m=zWQ(fmaQtkP>{{yj!gYy6Y literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..961bc38e356723141f784b598b64d8a8250f3ab4 GIT binary patch literal 37025 zcmd43by$>L7d|@bO9)aTAT1$CD=Cd2ARwWXv?5(YH!~n0DkUvl(gM;kz#!cXLwC;r zl0(mV!1s&y`(4+$&N+Xbk!yGyhQ0T*_S);d*S*&8SxrTr0FMd}1OgE#ymOe8VVR{&xrzo9)J{{KhtneLd}?Z-$Ni8cSWr`+YEf? z>BOq7{TQ+G@2$&NDg}y+)Q>2g#MKVR*1p#NLKc_yEAs8_76ZY~Nim+gHv{hf?6l#9 z@8CQRIi|vo?kpsj`wM zJSqB4;7=Nd1-7iQ=R07_#rI3P7S4~~vU=^?2D zUSkJ_5~JfMWH?%ViMH))M3m)=m9*A$7P=}wWML^A61y!`m*ZV;!FZg5H{Q-CPHr+s)rF(e8%+z1i8YlNaBOZqf)GQ#-sOb!*mk(^yxu>-; zC+UMQ7o<5urmzrBdFxGYViogDM?4g@@>}bi;FwKit?{E%B0@4UNsgRiuWV>RUsTGOox!r7fi=YN@!7|| z1)?HB?Mqaci_jgg*TTz*gj(pt9EPsn0sO?i>6>qdDx{C* ze7zhOy|~8it&OEPW@z|UdfZWEYqHt{Y9n2Vn#w@umR$5nI=H-xuF8_AA^VYW-0Dw9 zwbo#}n}4Ce$ZXuB+^iSlR#Lv+QrZs@Sr*-FuoU;^@tUMM>>mn%l*ymOdBs#rKix-T z&VLQ{7`n{~@oO*z5XVM!OPn**jz$NyRSamCsw&=u9Ag*LLV4!mtSp`!XYbDVAB>e> zbYl#moKu<2hgF7ivwHbfsoJbfj*=Y*{@s`QPMq!at&O)cxy5W$XZ8^p)!Rfp>q{I4 zyAdol8$lR@l7)HUs9$g$1OwvGIt9Kv95_|R`MF>g`fyl&=p$jh+iK&3yrHKYxIZ|B zS9W;Ft=lldBV`%d7E~&=KJ!ui(3;(ePb79^JnL2(n6iRnQ11E9ys)m)Y|oMynZAkN z%ei_Dj`6!bBQT)~S00aKeS6obNSUITJL0*_=#}Yj1WJhKDSZ)Q=hWq!67Damu!|_h z;-FSbi&?O~3IAHn=%1QJ89jcRL*=0-bKT*!ip{yNA{`n@gULhPNTfS-ILuw?Fq?G( zZcw2<<#9sjUd#D=63kQ;>R0T?MT9P&YD&yuMrjTx4WhO|MhjA#22P2O>Daf3GQ{_d znZj48Gh?QW>eRfZuf&#*M{B}E=pE*Y+xKi@n-~+nMrrqN44VyP&e=-1F8;11%5fv2 z$2e%D6HDXnFNC+dY`UQ3sl#dJcDH&M-qU-n^&%jjdZGezQ3hmX$@z~TpXCv?9ez7q z=U9361_)zM-cv+v#;82 zWYM>c`X+aej{SzAJ)69BQ!AR-3_s+_c|IdW9W)wO`Ze$8cqIxRk@ZjWUX)n`6E~Hw z^>$Xl>$^GX@*4Jhj72NX>udInVAdVgahJ0-UMn9ceVDf2lpkd(_-`Lu^looK>pazq z-|_5l<{GDJ^E7q834;pfIfaW#zJV?u9~GP5p+P^3t}(H!EVGvMzChYiYD2zvb{4E2 z*pfZ5o!#?k&#XK@>7#vbH2wPW?FU8j*A8#ve7+)MFIf+%#|k2yWILe)Kl>~>Vo{FA zn)91bS2B7~46UGMftYnZg`Nk>VXpsT(d3L3Ze;Id8S@O6fs*|cyf684u4PP-}!$BxnFjkHR8N-4aA7|!(dp1HEx} zlDs+2lyRkWo)ra%Tpm(xXl?0J(}}wm8@ZtVlwy?pmmtxX;CQVbr@b!+UtNY5ot zw_)iyaUp{Rigi%7RVfL97{y4RlcDy5CGxtM>P+lj} z8#L;SFjGDAar~+T!_mr0GD_|>VUISQs9Py9YrCYR%}UIt^9o^U;yQ#DK# zb=#h2;Bpbv4Z=MQ^i} zp`1$lw2qF0)I4!w#@xRjZ%voZIaVQ7H4_W{C2PuTcdZR3RZ^cEpU}!`))l-X%bZ}x z{gL@=N?S#u8Zwp6XX#;+(8w>6PobKb&2+l;xS4oLzb=ZSmh80V&`*Y9=8Gx1ry4I;F3o za^mCVqQXdF_F+nb4{3ydN)9Htn9O9Orp~4%^9R${YL&~p9p;l~XU#!>%fAOs9uDOTL$wJTAaeHX?SC$9EZ680sgPLXR z7=Cb<&!#juPl`N6oAP6QPb}U$39Vo3Uv`A!rl)5VZw+sjH(8ZL+XM@&?)0N|JbS!s z^ko4!uqnZulg_+9{pP5GW)D@zW#A`}n-OMNuIi6ElRWE4!{6u7Aob2xp5r~tYjZ0Mj8{!Czk>KL(xw%h8p1y)-I6CLT@NZgi?7ZIIL_(SkLd*`P)>!7nColpO5d2y4Gb9KmzugfOW0Jo4>S}?Jfhl(C>@01YLQ6Xl)(06;N7qq81TyEA`Z4(4B&Tv&3lj=_zvkWdY~&PVV13A}1&P zERs9{GttB+XuUGJ>N8LE#)aZGccmCHO-)Xa8qQTdk~MyJv2Q}Q^Y=|_Y3~oe>2*A_ zUg(pH z2UVT(+a=P%LuuSsKTRg-ts}o6TwLCL>$b_ubtlsta`U=OrHpW!zbbTVIGWdfe;Gd^?G}0?j-Y7BKRq9p6^>q7 z#+O`4IYK1z@&*Sy5FFr0uGT1I;^KKaQ1RQwJKuo6)@Ca%iCojO8e2>BvF&iI za+ZsOxow8~&~4jbrK*zU3-cv)mtI}Lnz}0A?9PBV$#}Kx4BEUex6(c|w^5zwSFz=} z%|@KAoL8)gorxVCxv7NnJUTV!zd2?^wa2-dQtF*9mC-$V91}tj<@+ z2JgKTFR%-KxMzXk-eRlKJ zwn}w06A_tDH|5UknQge2A!W^4{pGgl*wR>9d$e1MQN?;&C^GZM`_qkrLjeDE`2GI^ zw%HhZ;jNj#89;or{4f<0KkmHTu{T*#Lsa7tva=n&$}OQSa+bu!!6Guq65xf2xTv6p z8@ksWqnf=@Q(!@It&^ex{GQl2?KFHVVvX~MZ&VETmL^e=QP1TAUv;wQn^{1n5J(7( z*IpiyrGX;e>tqU*6UQwv?b0;ftr}erG7LG2!`U`mKAlHHxh_{i`$SWY;T|}6#p3fy z8a|ITpsJpCsv&7d@VU5$6hVxvTqm~bt;)ywRe0!ULSaX=gK(H4o>byV5VV z>9!rU|!eDsFWO?blfD<5 zfN(|E;El>*j9efbvokh>qct6W+!I0+Hc`YG!!5emMUa`1tQJ*XxC3#N9*gUTP`)Q^ zg1DZ2vE9uc+WK1NYCD};Y&-BsL$6c4f`kP$A|}TV@_l`;jGH2%serh|5gx*PJ=Y3lWa5yZq#%1Kquw-!Rj@ND-=@Fk2MqA5VHl z5F*{M`>{wBV}B775XfTcXo?h^=vZfy!*~H*`PLYCji^vCb5AS$NjzHD0GF ziM#}ljr>kc4O<^fkBDQD+*se9F%P+*uWP6%I)3<`K9TQni|i*7bvX}7M_?rBz(h+) zbTgO1Z12`Yj(XW!#B?T7n{HEZ?eH1dY`q3mVE;M{49=#I=1=5xTE_=-iyj__a40-9 zh|jchElBOUo!JDq2y-fu9$w|K<7Q~UyLIMpTWRf%j}XJtI+-am0v{AxP^E3?=#kg% zJ}ki!1>^9}cU}C;H$e`Nm!dOnQ(-2GZyoU%x;)BSn#X}8@mJ?15=&bohQ?p$%b|l+ z8^1R$fbGJP8{VDN`k0qKEWSZXXZX0>NY9NS!2UMWej>d==~CZK43W8F0KOx>Z&8Lh zfY80p+8Gk0+8uDRt<~m_(Z%vR2|cxF??YnrT^PbFN6JF`{oJQrtDLAUWaB-jcc z^<^vtDPN?Xc}&W*)>8?*tAbv7{mP*>4mUYOuBc!5KCCKIPw{FhTRB0-Bz$b9^DdIr zhK3SXDiVGSmdsNm^yj^^wSBfGwUY%c5>H^Os$FZJP!59}DwzcYId9x7M!gsg2+{e; zB|BC(NRw8OAs4EOiNM()h;YRn+S2vYfb zpeL@2emQl2he9&Z?$Sh2*5#A6+E#zjB2(qM3E*Wx#8jyu_+pu7ChQfGVqUwBL{2C( ztAo?%*_g)tM6RPKVYpiYtR|@75np5DfX(7LMy`JX_O7`vbC)uZs{d=ADpa5vOf8vA z+{7NxCe#T3p5Josv-o6QTosP!i+0mqw?cc=YgeOV=t9Al zc}WvIrW1|_$q<5K%wG9E&HGXFiG7=PS5+IHlw1MpLHC{A;8GKvSkwI@)=3v{*Kip# z5&jF$sKnqn`1KL4}6M^xyDQ>?-F>p5fL`5HKBbLE z_NMx^4b{k(Sp6H55+y4r(h4e-8Dko>hqH|X5l9auztm1w3!Xw$3AsiJ`aAwgAX>Gh zJ$el;S(-UP>Z!Qbc=S56*l#9-K!?;<47$zK->*2Vveh6JGU~klYuJ*dW{XsPHI#aG z7OmS*7RRTk^ZBvH3Oia@jWW}ySq>tN%V1Mu=ova#{OprkOfRX`=gQ9SPxh#9QQ0aD zls9->x`kI3~zYYS~-^U}kzG!^+i2wQm6qG*j=i>kNO@nN-jaae{ z7|8CW8-`Aq)Ng_5awj6bx#`YIU00;%+e4#ZZSX8b)a&`X1Nm#!l<1kEUL%eGV#m$J zb}$s0nsrb?1$Wpv7lgq`ZJDkoJWMQ03Yc1gd>cY<+j8xAoFCoT^P@MSA4bE$l^2d) zZzf16#%^H}MJ~d9-^swx8}r)EHWTd_1R53!wYjjdNn>8laKfpiDWAKT{!Xq7aI;9S z_6Hwru18n%V%CX`344b7s(K;4k|{1+$6yMH8hBAM7TJ%n~qzwuY z9&lbxI1MOg-n=_j^tm+FCu^BRL)Vm8dYxL3aIn)Ac5!~|=tn46nG$+2PMy=Ag6SXB zH-D6IJyIH7p93;L;BrJ~uv%wn$f7(nQHWeJ=}Xz?PhE^Xa~GFE)Z#@LXZ=si0bk2! zxo|>}BV{t*;soBU8G)w{CYo?ACyy^*K=T$Kt~-k)_O4cQUDq1YxE+o|3Hx4I{EX)k zOc&CxUU)V{eb8hksI7JLG3_PlNCCfx4{~8+B?G|Zi*$AP8}Y;QVb$3Sctm{)Laj9Tg7h++rHBr)!l8KK`&=ou3cF-v>Ocl*~_)lm1f$iE|2*_AipD z3QHh`G4Uy~e|Gd--X@(?A))Q!;vbJ16Z4o^ck3nMG}!NR`9)^u$F-qfidx;0egERx za#q1k_o(;@SbM8ytLq9Ok;6y4_Ykn4 z*#oEfZtJ-EfqwL2$(^HWC>-OYtskaC-jqOjIF+Q6+7bW=Ch%tw%2)LykW^^WDumf< zFJTRQ2}iq>oZfw4qFHiElqR$4w535T6uB9 zm(#av^f}&B?bq?c#u>&#vTq9rxh|A&81JP_!I1$YrEY83*bK`*zR}|Jkr~`ATb}){ zhrWv2O$kohEqP8GC#CWhNY`HPf(GjkMjUFwuR#y+|24c7BUaM;vCsQ=ZWPvHm9y`s zSvPavqE5j)+p`=sSDVn*PusT|&vt6YOT|`es zsdcf=$^=C}|IeB+daPFTe@a`vR--KnB~Cpee=1&^SZkYu^F5qwXWBe-_hL+rY=(SB zs(*2b1+$iYb#jHm-=47PZ6KM$w}Q-CVUW4@{BVA;9L_qbxb{JWNRX{{H1w$3;iMlmxO}$atRTqXe zcwNlMB9FFs9Omu4i+~KO@|!Bl0Svw4EM(A=6LmU!;ikCz_MWiyOxf_9lI3*i5WD}z zdWM%5zqRtWB8{uu z_ziJ+{B|HK%5qZW{P1FXwm1p0S2Z9gi!re#6^uzA&LYcOI|)T=Mo)t>@1Jh8RG2On*BHh_L zQs~gJPW3VAUJo}c`qA^?2acrAAtL0m7$R9!4hVSmw*2dU@@)dkx2}=sDW4p_hVq`p zy;XCgGPG36{ROswuTDqua(Y||%}=yQ^2wx^RuigiC$M>}n=a$%e17gm_s2rSE3yoy z&f8$vb(p5Y@TAS;s>K479-L|;zQ%PdQ?K2-B+F?LE@}6aErEzq@`t8EK~V5`RHcmw zi;Iu-OVTe_1!RzK?MJ5xD|_0#@%`qPMyhn)Q%N=8-ee!-ybiKrmQk{w89)7Ye8Vv+ z{vuI}%it8e{Fw=q@9 zS{C_TxUxflu=YOpW@ZTJn`w53XnaWT{Jypw`e^!mC#-2PRmSUOk^{!aErbx=X?W3- zIo0lSVBD^Z-!RaldoY6pd&BIrSIUUAR$>g|mytV66T|95TNTxTYJ~#>YFRR%dvbpt zVh{}w$n!e~()!DD&R&uNvQD{epA2P+_-Q%9=u$+7JI5e1sbq7b-8JOQN(ovO;I`P? zYiE~DCe3d>T5fNkpJ3pw|9X2c;DCNy4g%iTtCpv;QDnds=ov06{m9@;bp;t$;RqD8 z^t@8nMmS#h;jqFaUuDB?OWdxlnS|J+60R_EWVfYhpNB8?5*f;KM0HBIwc$CKxDpbh zDp~1t-p+HlPn_V3%`ka9yer6HvzybuDINTb!)o+;nWhRWgooNh3i)GnKi86`k9JNwzD3`Zv7frkls~kvhje@pI2)NQ zoH}YvQtFQrm!3jX3otSsL@wNkpQ3+Ewss+ zLfD3cD0D^5$mpW)i)5&(6Di<&P3IHAMQ2@4Wtf`phkvjpr=;wh9#j+lS47e%N?>i( zu6&6{z&`hfG>+zfjxsL#{O3Rapo?i%5fKrJL7+z=0E9){1nGdDCQXXo8_4{_MRX7T zrlcyN|HVIj^H)|^|0f9Eqbf=kKm5JgD?eoNP9=N>#=$F6k$dbg5$$f$-{-?x_QP~m zEt(t#Za}0{UIabylVaNUA z5}t62b;h1uC3;!`kG<)lv)RoR#*-rms(5|Qi{GBCDYo*kLSbp!!?Dqq9()i3#BuKF z($)r7851bILZ6{%!PGIUWNPJ7yz3<1EfIH?i^h!u-Kk4n5uwAKkrt!8itCNO_dNaA zlLK*jPg`9*HwE0e2KBb8^WVcoMBaMCL^W_&arIAwiWqjTTe6cNU8my(i_ge2Yho^RxTsL(45 zdt8Oc?_Ch`QetUGCn2j4e?#4q3-_v0{0^htY1*Bn#L|NU>Sk#IAjwE&!S1bFm!QnE zQAq!yXCWf6u!^OD57oNyuVXfE-y`zMi(eU=$TkADhn!pFNfBr=tGNA6H8`{vkLoex zt;KHgUExH;R^=nohu4mS@FgLrc!Aj3C89SF-u3g#WZZ$}$$xqgE?R24aXODU@^&`x zzx1CH+wX<#%X`ia^f(@b*Ay2C^5y(>H9*?-yXVan!`Kz{18{@+69cvyfo;JwdA|Pr zz?+@L%J3VsGR~32k#hr8nBa43SH!tNF!b2tq)+{I+}WDskUUR7!_!|VoQ~Ov^wLzVYUfQqYqI|X|uuzfMoh zg90P|4Qc9L9M2P;T`yE4*zD`|CN<{$I}Zoiztk!^I$rz}a8e<$HN zS6bfHUh7xDK_jb>0XUr+l#?!v{( z`}&{vqV5%R^Y5L~2>#pI{%4;B>=gg{PpJ5RU}9Z6yP|*EM*hlOT3Vj}ue%fyTVmh7 zTBurK!c(>}VONLiRgZXi1ja66mML_%N^RInCrxV_Z7L>KZkCN&Md5P^7W5jLl<3$T zZSuIf=g2|mxCKZZxBixTT%;meW4~D{cJV$mi;v`0ru2}N#?@)CZ`1qOYQZY0A}W8WR%`` z1bX=AMAWcLIMi+>dj!x(rU)A6?5i7 z6TAr9)YXwx{8CvwAZf;;bN!p-VcFY;r1x)Pe^DrP3)0hZ+4rnV_YSbgvbNpG-Ykgx-uFH?%B6z)m`lRV5zGK~$Bu*Xf7a}-!tsTQ%N}39Gbs8N?@Z;d!qK&7PRUg9PJIYsRL(aBGpWwpvN{W?y^16v=JMlb|I& zqIPqdu>KI$ZrE{o%iOR)OZ)vrB>ATLYc1SehkdkT;V&osr$KShnKE&a8n56+gx!vg zD7{c1cKe@Gl;%2aDlEaZWAAOI;oX+bN69vUm8DvOH|P* z7{7DktX|o9zCNy!3HvzOM8(Gclr9iESKry$897!M6LwSW?lpz-4K7P-v=PwT%4W1q zpRlSV!?c@~Oa$-XKT1(+)Gz_uZjl=23#ON&yrc9{y>;3f2V~0-eXo|+m2Vh2%J>z- zl+GT{5r$p>^Xq+dx3+eCDY5yL;MHyLMSXv-Ec&GWmVaHSK)nb6^1wM@k4sEMZfxZJ z8-RU-ADS%hNG3yEcDPbzcc^at97hGN=9?=#l33tD=kc1KnchR-a$gSGlqKTz29m=j ztau(9S)Y#%cFc*3^%To|1D`#H%Uy0){FED!Exx3yIehcFYV`*A<%Z_);T5$2W(AJb zqoY-$GeJ5PH4(grHJcUK$zwB`YZ(Ztaw<3N`T|3}X?(Su(P$NpwBgv7+-hR2nXrPQ za<=yy8T_w1>%v7Bb`3Epv0)@txrHBT&6UJYt@rWr1D2rUYh_Fwvg4gtiL z!hsm{f+s`EC+>IJ4pL_)U(sGL*hL?4gmV1v_g0e#t3ZK+Qm(JI+8;m?=X&D;qO*?1Ii zyg8Q%c(r1X6V@Miu|oH!@JWACs88ge#r0J>up|}xF5}M_Y&#oy%O$t|!8O&B8a+x@ z6pcw*+Sw3EGx#)A0(yk>d$rI&#|<10iXDkUXUc8CboC{@1Yem^K&hi6b+?lxS?+Wp;+@1cc2@HZwFWox9V54OeVAOsehzx@MOc!5 z20&Dh(!E0|b*nYcl&PKX3tBD?{2s`bF? z&h>GA!38Ff3cQ@~(T!bsmrV8A6qGb^E3@fVoql*qFDKoH<>e&!zysC`Uh7S-yd})j z2ybqNhezlVg`HUmBx1Q6AJ;Kr+P-OuBlE7~ORQ`ZDW>PZ@M77P$A(?)ff+D(8sVeI zdI*}Q90Aqo^6FXdZ>UicX0Eu^ClO|K1ztq_O8}Ox8w6=nU z$aG-*hhREXmNVxU27EQ`0~<1DgEcwwM4!u{Tdr%{p!tJ9Y-^3>XL`YOB$p3`(qG&l z5!V|hl#|mbaDTs$UN3KRV}VvW8A5sk>mduvf2dAwJZHDkQ4-1Dz6mIhX@oWC+M^qW zMe_ZoKJX{H8*kW`4$K!~fAr`tEUl?i<+io=%P*UlXz5z~%=wYzgKqZ_syl1Kt;!#J zV6eFoXT%LTUpy)s92}(37U6+xE@IYJSLNj88Ecc%hp#L&^BOkr=u;})?f6iJ`To>Omm+-V zXBYXlcXj;z74aTX!BeV~x2QE7gad&-N#HmL)?mf5;g7|0RTk6TpYBL~)hLy061Rf5 z9ESlw@F{%i%B}yp!BU( zVp335M(rJBBm*XG_}#tjwzF=_|Frvd!({OqU&a;sGaz*Xj#<`N<1ofIdY@^>b@b z1`wOv*nA2WYPOE@I<1AFB$F>^hx}C>$&#-)c6xgHe`Fi>a(4t9LrY7F^2019hr7V< z)v6g))kJySC#XFP>f@SRzZb}Nm4JA7dj8j`RCYE#Dsj@GD>`MMrDmrME_;BlMpTY> z2-$A4(+xdXTK)FWtM3u5ih;!yea&yyFbVzA|1>ILZCsQ~-r34|H1x-fr-^XaqFEX^4LU#tAZ@d9Loy{$JXIT>%EGP@VT$^>vKD3(} zkk5Mo43-b%MgL0iH;u`^uiT>(i=rcob9f}dBq2~-UY<5=H7W4ha;8xpxyf~kh@4350&4p7evX7eqmbnd4tFrXWk;2-GDb>>tF;FR*=b$MG*p7bH+Y|-f4 z6ph(NO%15Vv)PPF)G!U}-2^2WRdyytn~KCFc|GE0V&`UJ>()4pE-;)biU0?-L6Q@W zD=gQSGMs+DSubplG`tWWlFhkTPq_@eB}N0Y2UT?1RHz#KXA^TbwhjgZ@hPDK>Vs1F0CxjMUgf)wtve zX=0~AhONG@*`bb>(V}6jCKr`k0gO+s+6+ga0NrdSEmaIYBrmA%u;TC$EFO3*gXAh5 z@6qy#$Lao2|I`m{&N0B>ZFo!`%X2K&bt2FO=whtXsFOSKX;t+gB(Px&wyqz7dOYT z@GfWM9Qe!SF8teD`lTE`oLbmp#=E&nKU_~r0;e)aOSkV&dv^J1DF)qYtQl!hcw%%9 zXg2U0<)#;jYB+o|bhOk7_;o9hCyes6^7i%=%XjO25ROVqnuS!8*Ioda&GZ8&u&3=&@;p9Hrw&NiSwR#VpO86)g(_AAsM(D;X{( zKL!MySXq_CJ-f&reQ_1E8YvPHv|@+?(}A?#*oyLhrRfs3nx5Al2FOLGBn-qXyZ~9@ zz^y@=-Mzhs2L~D=c=KOY?tOEU%drtnq4D6Y=y*N!rbHpl9A5eBVltro&SBAIM#qOu z>-9Crj>{GWr{uw}FS)-T!$CaSSxg^peZ6_8XPCZ{+4QQ__UGgv!heYqYi=w8Zssq$!q%6W zcH>*&r2>&7MG^hJN9ngF1F_v54eGUkK!k=|8krdm_Klop$J;VA)}XwA<`-J;2ndgstY z1MbIqN~xvesI02f%xp3p8vt-15fzO#T;=0+%+C8qZx?6gX>QrFvnJOO6g zECB9)n=}t*97&YY_oy`Xj^=L%p>ptY4$yLTo@cXxbfM}TmD;L^1+s67`mtusoqR;? zdIhisA&TT+6=Vj&lj@M$lS{h;8L-}hYHygZifT<%_jI)-Pjh|>Qlt@16kdaEx$4yM z6>8_OTwa~EiK{C1A1U(ivq5ZlQtvcna_NqS?n`6Wjiu0A;+|D_+hbyB>ZH)Zk1Qv? z&F6IwkERIPZ;2U5!ranwUKIl)KlhtBZH&{q%ex0gBKG>yZKDZsq-Yy~t{mWV46ZtT zg7Ho-S8bw%r%d{~gx0?Gutqu^rM%>@h0QPI?*N0Fcc;;D`Fl?jbYb5a(XKkOE)f-6 zvG-mL;>b)%9?=9`?GvzRKtfzac$gwsT>)fBYCKo?42WP=c3X8u&-d`Syi~K36+1h- zgv=9rCQepSA0khsWxysSxBbhy58}-w7X65|j5`Q6PTBmx6mu*8VNQl=>e_VWfl_UI)e1r>##Xy#LJZ5wz zVdV7PuUM~N>zSf_0EZ0T2sMBr^o1dJrKg2>>mnrgbqoOk7bxOf>pAnxUvPMU8EZua zA2Jo^9zRRgBBfiM%KHothXIpim6y(M+0FA3%xgf7dCUg0Ei#{>;Tt{)SYCkJrHKHv zcJYiBpbA8Xufm>1hCn&z=W@6C=E%Xg=3bKOkD@?fXt^DTH=GLfoV zz69tuNNkDy?e(n;1UoHB8hLx4Y44>gwNvlSYLR>G`O!Mw5Et#oP7IVVr5f= z9RRdQ1IdxNF7}}X$#|iM?_lFR)}zJ+oiwuvmVKr<8|5A#Q=`~B51nED zoS3u;dOhzLNUpa6t;_E>uAtDhA=DXJG12J*q(IY?LO7b$WO;5R=R~}DYILA>Q|PLM zk^XBJU{PUrlfPEDBQ})f?{<3&^HDhixiWp#;w&DwgdH}$n}1c}ukK#r#jUZY12TEO zH%0=g%j??7?YcS2rzeYBL(*+y2yp;|cIT)&5+!v$1!_?mirb?;Pk^oh^@xf{iZ?%w z7_F6)e~bFZG8pdkuje4Fq6z%EYil$ZjHq55Qn)T-8j7 zGoo#&R_OMg*#`xwEkH)`f}SuWYwfpfiHiyyYKzc3#e#7HU6=GkUzZ6nWLE5nrhWa@*3I}UDf|I?uOsI|IhUEwxYJMekDF*rDjjG|@)3NQ0 z$5PPA{*Jn$UHVqD>D3`O_XA4xa!Qh za(e6*sRu3c0wp@;Lpw5Onf`2p1gwGI1X7fxobc1LSpb5mj%#?n4aS`uZE}>2rX-mv z_Hn=H;{~+adl**Xf(Lx?^*suq1E-zwmSXky7!~D^s(P-d4&JXw?0y7hsZ` zVB9Q@2Y?~D^j5PH!;8Q0;);tB4s?}&hCdmf;u>$ik9u!2kEEkpMeb~Pjz$0JPU`~E)DAL>JYU2#-7NmXrZ*bS*< zscVmuT5)u85*HU&f|hsh0U4KQMwHw0oFs)_E{Iw|1R&~qR^V;Uh}+(N`RMr)=@4 zwEzH}g>sH=qt?uwGqM2866U#+3vI!VR_<{S9#c`g_Arvke3nzs|F$r@)Lu$fpnBvh$mpt;*g}6*3WSKKk`Son0O|AicND3DaLLuz#I*n}@Y`u; zhCNpsIS+`?H107(zFij;`y*@CVfyEvw3sSzcL|C1w}@9MfZaweWM}|Qq`5%%2uPnm zC$``8n+mfjMI0G`bkT%*kIeYjbpt)o7L?;K7yBh&Je+}>jhcxg1rrko=Rm$37<5tz zUZw^DyR8hp_G$|jC{5z^*`c=_e;OUYxB=DA6L6f)UJSqj&NM&Ah?`wNku>DfCqTm1{F-Ya^6*dljryMzq(lUcyK-7Cd|cYK^pO4p z=(bfv7G$&Ih;9otk?UflN)Rv~yVHTqsx~rAw$&7u;X_?$)L9kHj6ev-CqShDS&;@} zr%8NL>eV|iI)KXG4J4km`TrXvT^k$HBtZ{T=c9|eyJwD*WL=Q>Mk8j zqej$sE?;uZ=;tR+0^(btURBW`?hRJ?|8yfs-%`^CQU~aqt0NG1%nA&0BII0bz1!!< z8n(3sNqj6UEC>Q|M#%oVI(b#m%MCVRxSVv@3&I$`l+{v*{OD@)8|pv#*V+A;FnnM+ zQnWHap_Gwh?tEMF44w3XO!~lvlK;I$qS-G)MV#xu=JD`q!JU8<2IiSfP0?H5GW*8Y z;B-w&t_zlNX>8(ZLLJiQm0K;tlBk#cT&VH!ov8R*G_OrRg@n`{1%h0t{;T8UnyhRF z{P5lv4MxkSyo>>~So2{oxpIUhbC&;A)mUu}C_t-a`s57F8rDhj6?e4H{B9vIsI9`) z5MjJBVlHtYcB97xY7ej>WSWMf+i@-XQdJeTx#nP6rhPSp6j!GFt@-b-o$ykQA!kIG z))&$*X~#FW^6ITJx*C-~11&lKZh^U8P}1+EcMNi7FV=t`&ka?zqIQ$X@_2!k&9O_x8#&Vd_R_yg__7_+ z-eue4;3<_C($jnyGoe>y4U(&=1g;E8KaSeN;UFxWq$nP?0#IOo{yKNQ`uWvghRM~G zC7-f}qGrev7xNJf_D;{y6Cd06I|>hOQ(8U1dI9nqNYv0F@vDeyE&URVEGj74 za&a*_toUK7?d-z!!*sCX2P5tWf@god>LSKv_G7@3jz9SN($j3U0m}R{_p93Wa!=0* zQtHW8+;QrZHW&G`NzYvm@WMHcNgz{bx&q>8)P80{t=8N;m0#O37^ zi-TwGeFp||X)89!K_;snZYD<&;dvOdX@BZlvC*;8Rw~6sUU@E-infuoBKbLX@3uGQ zwF%BIRVy0E3rV!yCZLCphIS)GyL!EgUA07Wgu6Zh!o}<{?FSOW0o8pIN%pvdw-J}) zK;`Vv&`D~WF=QD##@tL-Mu8mQfY}HP5=re@)X1G+@H*J-M>{9ztEcqUNkVFiR*r9( zN&)K+?X4V#3y?n$YfA0`k>-r`Y)qv;q^Zy5?gJ})f+%WI-0=O2)DY>by5&WKtL7#S z3KS-H`pW`WG)7((jT%ORWTkPE`0s(ju2frPhDsQa(&0v`J$D-w<%_wJKSZp!)I+c3 zfPzU{J;C)vcdef05h#Uqk$)D8M5dxW-kX3y(nl6bPo>491;7iLn~!r%QE&}x;DV2J z=`P>k8li+1UrCh!Sk^%xqv1_KD?3_P&}}hmDbQUEkE!R0%GE)bqzf}07&-3IN%Cx zM#BYhcP{g0Y7ZzbtNrRMd^AAP^XhzJ;=Qs6ZX@1fbz^i+ia%%CV*=_NAUEB|p@C5( z{-VDp<$&q|xqBxVb29GvAb3sS`JI~vr3Q97=V#{O3MTWg&1K7ZPNHWbF%)+9(~3r? z&%m3{kSllZ{2BFiDXa}9&Y+-zpsW^fo}LNXeJNv6X4M@>=w>j4R74=-##__@FM%Zr z7r~5wM`F`RGc>lI??L$$VD6PwVb}c9%5TO)R&sVx=Nwwi3UFxW#NgO7ntCi9?au0S zDUVAh5f=!rI*ng#?rF-oGuu~jzS(*J|2@iFirE{^dVlpQ=Kk8fGGgQ!Hi!XQ^6~*% zhIVP(Tz7TlQ2#|I!>fKd5~0T8Mf&0QXe`6Ou%i{P9R!}B1Kbf!%2*a*t9O|hkpsWV zQ=`l_4+zCs9_G<~(?0-`pPqTh2A*Z+uy*zZ+mLV0e$$ zekAU?Z#{a#$?FbPZvi20hn4nWomXT>S!Hu{R6-icITNM74^=T>GhO}nq}!`(9jXdL zsQST{&etYs2UkV5A`S1<9XC95S~WR8`0C;9df#ak*QoWkJep@Vo8Nu&Tsot8yWtx;vNBB;q`Ek`%&B&eH2`BK+$k8VV`5!9DRHwZ`z+ zV6n6N<@I?+Ol%q{rq(41*FwRc`biQetBxo-fS+3+qfLJ z2?kp#7yInVMWD;cS<>|Q6>ITha}H-gd;0jICsu7UjEdfXNZ;_CIj~eZ>GiL2;HO|b zjhn`C2e3|Vx9X0h4tKKn-7x@xuE2y<6aCgsE-qGg#?yMoDqAkm7F<1~gP}HwGjHR4 z%M!ivn5FoN8h zhgh1o3aTG&5Yaa7tuvep4?knVf$|C^E7|+nI!P&Wh4D?2jG=)+e?`J6b4t=p+jmph z5KI~=t3jYS&^2YCrF<3#}nGlJbn;Max_FWOO*eowo%SPw5?liABd^d1n)0@4g|Xg@jgx ziVUb$ts4Sa;iW&JvgA-UZZfMQI~o{d$G#+W3a}bWHbp7=4+QJNVXCa)sU=J8gSh$Vd$Ox);-l?*%x z(g~qQdWhc&caCpF4lNNz!g)?fxO>^|8+%ye1Z1^Q;ys8LqVG0D$(@Qa0>1sS$D?n* z#?i_0`?&4Y4{gVGstXm#>2a1Ih<5Pa-06#iAEEy#car!IX2QD|%2el;Xy8mZkqD1p z!9KXNEfMjIWLgv&N7%y**h=K!x}XH(e&@4oEj9pyXb^7Wic&_3ZnK z1oFP>EWivY2J+-Q$9m9Pg$c%@`4^qrU5TI%`IvdM;1}k;8E-hG$5}Sc{+BlfSiF2o z(`6eUbp;1{AGybmKm28sfH_8r*ovgE9&ok5_Y{y5drSd#e$~Xp!I1JhZg>7GH~kCq zGy(V=-626IxkiyLVxdg7U#Y477o8jSxbHdiS~ra3#k#hkuodF>>5#nqM+h<;1Ch3z z8@YUa7x!-jdjCW3HNcRKJX3$6pYuHs_qyUorR&p57JJ=tzXMOXnyQ&Sj=4*R&SQ)y_{ zJIR{ZwgBE6f;zd(##lmsZPgW-zNkd>cg)msow@IZrS8tp+{Yn9GgsEv|U;jX0 zoZf~!0Z<0Vk8F<8K(+Fnr`7iBt0k}ANF0QUnktknw89^5n5~}LpE)mWLcd4x&CRV< zmc!5vO3G8-&`3RVH6Hdx4&cG@I!~CO8yag2klZp6+lA}l7n0c1-KtvRShu8V z>i8Lay~lMUFvFtq?b7dPHTeEs=NplfI#B`0+SM;SG3mR@M*lggkG#f!e0W){pAF5< zSZcf1Ghfl;I5`&e;iz0Y3^?_iULLw%YCZmLGJYL09Q@d6L+Dt}G>+X72w{?IR*g|X zzLi!PD_PvAw$s*j=TKDzy~}bHhrq!+Mvjc=PkWul^bP@+h;h=r#pSlu`)@p`TRAds zO3)o01KmkpbyHz~301+6Nq1JBBQ=#BVq7hlBFeo%cqjwBA1ll#ppKPnAMel-?srmw z(HX*YYeBu_(SU?sy~Qc?x7WBuumAkZ8D?7Mqvs^GUO|@bKGzu|1L;{*P#_J>E=AFAN`{@bRR}c9`P=c@rn&CwTE* zChc8jzjS)GOlijGM_b4H9%@l{Z>|s(6a;s&6Vmh$(p>oc)O`~Hm~2c857=Ndj{9rl zWsd7vfscjvmdDHT;>^>U*$rh?#;El_xRo8FbS-z0hYg%P~UAhdGhPbs;dVj zK*-`|slPUG>!U?fugD&30$>$&9UlOm6}N={YLg7`A!`k4NY` zgacBZ-o4wGV>0O~<{(eJ1=6;m83! zY*0`Tb(0V~v7d2QNJTsSZDOwSNI_p+Hi=$P-hqv>#wgD^?bdCXKQR+9M83r~yr6?b z0_(xbFAmVzU~XKpPElt}dJF6et@>s45=iJl{rXOK*w=Os%)H_Ie-SPeEG=m}80$E; zFJ39P@I{V&oyt~g%p*49v$gKk6Zy8`KdxS0uX}3pTw9e$K6@I}@)N^cg0H)HrVG*o!+ zmwu@5cCGnhS(UnGZ4Bl?sE^UmR6wbiidf<=z<;wNxO`5gIXy{2I9qKld#i>(WdBJ3 zrp9Nh+vZmeYO6+@t1Z8(s1%817j-iI1~PP9FO44k{Ep7YgoM8>j_GzkHXw^-;}VX` zz?0${v=9!11ENPCM`!o6%*ABdRLySEArFfbRsk&>Xcu<&nqQmfJIKo^#y6bhzh6-r z`%s1SuDCm}Ir8t3qUn)0uy(XD`IICMUVh?De<(U}FIg=c>b|-6d$G^?TW&1{i^ptd=#m zr}J+x_e+9T!4qg-Yi0-Mg?F9u`YLuNqNiw9*H}=IS>n7uenZCQYnI>TE~2N!i;Wmc z<2F-$+0ZiLU-k>Tfub%oO=Y;%{y1%KV&W|1>`2c;T7J`v-FL0GMG;WZQ5Vh5ee&!Q z`rY(q?brH@Y5O6%eds4ow2}P#;oLj7x}kWcW8tZfnILL8c}VpgBa9_yw;9{}!uSuH zML;m_{*PN$P{ES?E#-S@#Ww5sfFY4WBN2MDjoHmK4OX%hhqAx21+WfjPwmZ3JWpxJ ze!cJLim2$sGrz_Zb82BH#DX}Vt5yyFqXT}3A8@kC6NCQ$&?T{&jQI!TX9f2sKZs87 zEPn77mQjr2Tq;jndl2s#o7oofdu=S&dS=iwIn~nn_e|9|L6^MjLGj1bT_Dc?@TvyV z5r5%Ch^*vy{xo5kC_GtpRC6tHw;eo9X-%J8uyA`OlPEefot0B&@Z8nv+Ve#L3QK=t z_$ssWj-;t`)h|XECH=XbSh)K!r0Dj&;!!`=H7e_d@y62u50VxY8@Lxi?VE!1jEpwe zl`#K5K`?*HO@irz54Vi#Nn}MS`jQ&>G$H6{x@i}KxoqSxen(p)Mnl`E$5+h$9)O|V%Dqr4y z=BYG_ZeSuj+FMH}ixeP!wN+lSxUxu*Dg&rhml%y#H*2KmK@*Yqc7i)}_~W(4+ZA^6 z@IqdfO6lrPfCE%FTaXT7qlqx$MgBT2%YhsZ&n53hS`g4E1jK=LK18PSk)nu^akb9a zv*zh*jg%T??1^}{H_R~_ZbWLX6Wt=D_&VKu^B-Dc{nKY{mDz6ERNAY+5tIy-rdt2* z#|H3{gt~XYUrnPc>Q^_((3IYc^CkbLlckYzb}s#!J1e9;i3ur*tbR-;$zdf&T8?UU zyDUt0vN3{|g7FmI)reDZ5N>>ZSXTN8)i_jbwF)D`Cl?k#bdy7!xB94gD~~s>lj~)4 z$zH!Lfi)#kEY$WPY>cmahUZE`e{Kp5bHZZ)jRW}J9stc~ZWeEsYWjm@=7Qq+&vr8d zsVZzG{D6mAI-WANaeZP83GR8QO*{F(0>Z&$jYV_xtu*D`e`ow&m%5WNJ}=GO`hLgv z%Fzv_b$tu-`}}gbMa1ZMq@O8P`{FSbgen|C?wLRGjcQnzXYNVDE8Q|L5{ju#(~_Hu z=B}KN7(!y=-mW;}H3*dL@zw88^9Z&YnDK~R(}$z{5z;Kg_DPIm<*Ba_yxGj+FrM48 zMfElI>(oYEr6ukySeM*OTu@?!+H?BbA~q-`g*#-CT2tb(xGlGLZ66odhzgrSPpB3l zcztm{lFdn1zDLgS)Z8?0-W2^ILy_!a9-BA84PVK>(l0}6gZ@4hFRwjo3<~P^B1m~v z7r>L=rUPAF6ELzq+{g@mZJE>N7`)VliF1&N)E0Zg5e{YJX1ssP+=ymR($I5(o#usR z5MT?|3f4?01neb%j#PAYOuQuxBMxhqa_MUBCt1r`OEH4Jm`#s-T49f3{-JnWf-%|d z39?M;)`&+ENN~UlOOp1xYvMIKqr1t;W3G65KGeQ9N#oSI9*aC*P+fsgDvjCB?;T0Y zlf@P#=&ysdIu0|xcoEuc!!qyV$+i135;pKYp`t4rB7n35AApy5$*vrYZS;G7yA#@e zN67kgS(QZCdEScv`N+Q$r3ga?B?|IXC**Rs!m0n=$5)#1dZMP9z%!#P2A^7VYtIhG zFn+u@_&y0O^<%1AX9)!vTg zf3tN+8{!CHc;8un)4vvLQ%G$@O6U4aLDIIR=O|1}r3*%Q;gy|PI|pOZjNuKa+IP-W znX{k1+FVsR!mr%Ii_Hrb#dw>Iw9mFsXQD70C!|&g1(B1cu0U{gyJ)J zewaEllS{jTz2dCirIJf$cYps3Eb?pn(UrzFwoGCPI%ZMq-pl%KM3}qQZ6kXWy8pp; zP&jn2<#0c+jk?%+kIPs!bosOd;aEjMVZP*d6HRHd*`Js=@b3&Cz@^Ejz6G&mZ0Z%i zH?3uO>0PUFM7EBuKd@KKiYg`R4`dBQmy!y zjvgJG=KWDRot@x%q#ABY8;E*n#fJKR7It@jrS+H^lHzJv;Bdz*in_08BoHTInAFhV z8hUg+86mLv4;EllXWFWCHvv*7gz@tXiQNVT^{)*A{tNeV2fPE`{n*cE41#yeYFV{* z{9`Z&-7ebt%yuYa>nWZHLnInrlX~{x&W_!%Dv0Y(ys3rcS){jYA-A?R4m|K_`q@nE zmL`jHzAO)(!}^vzkrQPOO6rcm{+7oK0y70k+%xFh{|=LrPW&kZDIQv|6;s z#6v;@zi_3aCgRNSUlYOSNr~{SZWqm>-w|VHZLd@??IX{F{brlLyBuJ*BWj2rLuzQhytgeX=)yo_H2jMsj;tAmmdY6+e z9yd`FJi~h6CtVjBeaQnr(o9qJwKP3>_$DPW$sLx9xY!ujNw4bUzVL;y!xX1sIDaqaGn0j=ej2KC>Jdz4@Xu#e~2i_aa_~d9%9}jVUI^tiS{S1 zM8igoCes$LQ@QQL7^uhq&w7r~S@{aH3<%W|L&ckKwUSn@jHIf;w01JhyWNBm%gsC< z`-NAX*uqPbyV#F*681Slj}~o(lq!zDe3K})Nl;H~`AVeCk{5QK{O=YocYox`Z99W+ zkFAnUR{(p;Nv{y!TejyL9Nl5F{2qVUJ_(4@qTFsV)}{Yf;iJ5=r&~+wIm7h*@eqio>o`+evs-!4Y;Q&eJ&RHDBt#P#)qTrZ9D8y#-A&Eu>5CnMYdSc(ewN0Q1#2c%EU zI2@>5s#R^$)ax6YoDg={Z+#;?*}CL(&%Fmb^c+ht`i*E#L9??``x00Lyv%0EU4>M{ zxt4$okDrY#7!%;o)^CG&SC)XxD;q3H&fNe7tMyr25%%rQ2ZWTGiq3ceJ7j z0ih?iBsh*X3Yk^b)V1BsqGc-Fx;iO^9M*mgEq88}#|t^EjM*mz1QX&2y%M|1N~YLp zQFMu)bRlBDiqDRBM8zFNc6^xwTcymFg5c1dF;9I7ASY(YpKA)_T-A6BMf#!<(_i!x znl0|!igp|QYA6v{?EHGTtP1yost_IPeR~R^inKV^a+4BJVH}@7e*Cu@G-9;X{F?TO z*?xbG@LDY2^NVbQeK-XscAV!R8eYYPL{oZ6Up;xb?132)$6s(ObO57Y>Q6c#(~?4W z*^638{e|sz+j5zdSGnW7-9_DxPj4CB3R7cGA+E^=RaRRN1Cvb_ap6D5qQSKNL61~T zc6Z6}HZ;pLFu|PIxeC0o3V-=qKooMisO)53l1jt!u-I7MYel0x=3n#%bY#HhhhZWt zX5~qF95N96@5&;e`=G66!+bR!=ZjDW7Ln*c`ISH-4j3P~2tndt%!6cFqJl32yFfTr zp?9ad`^IHIzRwO43GtMVNk0;rj1=kOKN!o1zI9E5s@$yjLd&`U&g%nKvPoaA>zWMW zHWvhf0Rko2u99JLC!J3Q=&^&?lvI0q)!n)7By>!09Ohqv`H|NZBk(~Yha<(wa%=nM z)#)==r_zflvL2+Ondlh3YOBP)uzTnLHI`iX;n!(8_0QExGf=K~{{mD(4@@cqz+Wxn zUOKQ<)=XJ7|E0W4z|}b`C@l>X$J1Zunr`AbltC`n%!|TfWe+gN^kRijN zyPwj(o!&S|8NbFVGMsx>Cj5xKh}}!JP^y#sGpCbsXf+5^4C(h*-`S}5)q4T1HU^iC zE$4-}?nsJ@1D?aZ?%SNqJf|NYATam*K0;6iEr|#?8jq9dC7x*CsxhY@hLKWgwi&~V zZbo?Plti8Es7&()J3v}RD<$5t1NF!;fbEalC0w{o=y>Sty{A>-AvF=AIRsb@uPSBGgKGigv`lrOwu@L25Jb)*hH! z;RBWPu`T4`fQ)^muL_1&vH{C*VJi}KU=bBrzU4Loi;+S6rc>=P=tF>#6Tm^=JwMMjIY^sG&^0Qzw-R_Awvypno6X0$Ba zT-=e{6JdBAP#vO95|MskmDcgc4&3{}+>8w}4E51p`myx|C~o9MpM@)v{V7la3h)P| zz|k(O4sJjxpfPH9QWJJpB~jhB%3{uo-xgln={D2;;T5jkj-*3byb$YuWqSdH%yTDF z13*R#%0gT#mb;U;Mj~XKo1}uM2@*-+B|zSHJhcwonT*=*szy#((xmj{!)w5kGTZBf za9TAgV}bBhiIh~-TsBm^qEwb0Rj!4ZQqk zpb=Mk3rFJs5#-ZoG^Enz=vtH^i}k?(kcZ-?@cgwN!Z>M^IO|GZ?d)8Ye$HHle1O=P}94INPEHspFKUEbkW3D>u;3t7IxTe)_y>k%ZfVugDTK4Mm23N zzUsv0TzVZ*0isNX?P!<36qlbUwu9lXe7F81PwJ5{eW>$c2t$U8*4e=^Q~*o|fT8Za z<+zN++1`HYx4KpJDy*&WcKMNE2yA&|} zNp19N;GSj}3e}fHL5Am^QrU7?-y6hMLSOR^ZNHsTkohx)E{ZH{Qp`nsK#4h?Egu7y z0jmc+93TZ2?e-!|^)D+hZ+Q!+Gn~5Jgo(-e;m*Wh@6r*VE~v|#4MN!gh}-!lU>boZ zGkDioowjCzju_^{L?CDT0Xu$*;ukkC1xtJ8u-Jmj_f$KNzSBzh0f#qczZrJ-7WpgG zdOmLU^zZYJAIZSy;U}THfTFg;;Tq@CpRCyS={2k#ex-6x?2pqSBAPr&aX1#_1Mw!} za4&R$`b%Ox5ENK*B)Jg~i2E4=^aKJ5k?}#Q`0LL+!GTqsFJqn5Nm5)QH{hM}S095%ifTEN8yLquTk&oiIiUma#end=QfFj@KdT5SM{Xcr3; zj94N_F{Esj#Iy9#PqiyP*8CJkc`yG`eln>wE~-O(h~rVWL^I)}c_(pqEA1IaHgJ9Z$F8ey$jo28JEpkR+vo=;Y3qzymRGRyA zRy8~C0NWe^K|wjI&j6?lJ`Zo%gnHThC$?jInrAN3aPIwbfH@3FFi#5q{fCqkvB5o??g(bS^rSK6~^)Hp|@@QW^DjaKo0oE}4Ed==3A3)H@b z14@&0ueEeuq+_h4N(&39mq+myA9Kj;D-;6W1`2B6af9e?87ML1`sTOY>g*izUnN!L zwk8`u?J?rSy%i;Q9!meH*c*Z4`h=99_7yMmwRapp@gn&2jIAn>=c}#B59-&O0mlWmjx^4ztsc2s{v^WRw9K@D*@IAR&Omk`Wns& zc#P{Ao?6&**u^7|RYZbAgSor3)g&NU>WCeAvA_vGX-OfnSV&P-?o^C;Xu z+C8`}XCOn23ROHZoB$vq5GsEAIlQ|P5N`pgdgFTYym$suycX=E@@5=NNN&AbPj?=2 zfhNg;z18YWZk^TKi@lQXGIs-yYm>dka@dUbuWAYfb+XcXggbf74O&asxQhCV zJ|W)eCF~X;F)R4~Us7)<)aUWKP?+u4Em%?I5cuc9(9FwDlsIj;FuF7G;;@ow@Cb}U zkHZztAK)H$iwrM&LZhhYM}E2^ZY%@pUVaxa8GsXB{ z6>hTnoW#koPJ~8EBJObHv002q3Q&!_T)TAY;FNXTjKqgn*X6~M>y<9d&c4!LhioOv zWHcmvm$7O!F2%0^3vccz)XXWSM;K$;m2J+9cPWS%wxwjkm{}egtba&lj*!K#xR0Wy zJc1hEvp;a6YE=!&7Qg*edvl7GzJ$7y-FYr%RD?;SCD436Iz6GtRl_-7wPAv{6j#Ep z`G+nI`US5AO;ZMA?oSz7euu?6?9=ACpkovEZ%@mtB|O_+ByU??<9175gK98P}0M76EMG{CO5>Nwy&(v;&ZoNuMB-DS9V#v@sa#~@=(ql`_p{?x+DAL z1oxTgcpl2#n;^Ks<(wUW+%pl;SR{A~NeNNAMKD1B-;ye!i!wru;Zs2)D`lJSRO==BVkOSGh zMp1@BI|8laglNu%p33#eisQDhJlAxSiM?v48Ex{4la1Is_pQ&j-s-KP%pypn2I?!0 zxwkZ`a(j-NztW>dHA;ucnSO^W9>MMXO>^Hu!(5dp4;7Ju7MQeqO-Nm9b`CyvMOc_X zmZ#LudgcwsGrA}!n1Hvxjn3LEuZs4~+QeIRq*qY88w{xUq&X~AlUzB7QDM7#tzZ0) z*EEr9UF|lx+SbH&ATk>vs?Du#P`SNg>U0Z!a*8l@#=zP?ooC#y;y5@w$su+a8gVw- zp1Z~{kxOeovQdA~*-5J@>STPF@GDkS>nt>IdgPZ~?I1Q&=adz)RQq2kek2r2kK-t6 z{Ox3x8VSNw!6DjDA>O)xLp9oKA<(YkB zB~XQR_M*41E!TmAIoNVndjP;SiiKOZwxvC9|M>&{3RSWMRdWEixNwK*pQRo#f1E1C z-QcTcz*{JQ4^tq}UXJ{r0E4J+J^)~zDfqu@mgijxsEdX`f(7;EEe{zA6AY^61Sb6g zL{)z)&|pll*OwC}8AnV~KIhN93~%5>RiQzX13&>B^{GRy)aWvAXDTrPAqesYv6t;8 z=XYucpZ^EMiHn@(U$SD#|Hy)U6T$g#u_uNPa8VHg=n@StvtRs0L)_9WoTwhul*+{1 z=iBU|20$WFA6y`huT1t&bQ@?oGBjN044-uWLi#|Lj^}cGqvD3dS)%6t z-#Gankq45+?h^<8#bW=DIQdsNR@i^=x&IeJ8gm(835Zg-(dGV<^JXU`&0;Svqz`mS z(OeGw&+~YwZTg#&pST=M`TpHaf+_@{pLd#}THVB~6a2)Ienx)ky4+!MFn;|!mI*u@ z8uX9JhDLu7G^zx8DTK$^amwkr8P^Dnf@7UoT=RDh9GQ zZ$>qGs#%y(W8(gn(PaG7-q86@TTPQu@R3(hLEO1jA#D!*)3;z*_w(A)z5$8f?{_Wk z`ESnk>H3^ZFs4dtoSaX8w)5<&YX*S?c)kMBntAjpvQt6tyr>PLtgi~O`8Is?d*x;5 z@12+jZb{AB+XGYiGHN;Hj#9-dxv0e`dqa5um$>s|kSgn-VWj`B{%^=`0K@Yd7>KfI z{ldhFQHjP}XnlkKR{x;yq;&vtlz`!}l=ySxkVs{R8X9SsP+xROXO*CK5o_uddJsjV zo#&merFqa=MYG}3G3&zXmiItk=dqit{MOg&>=cm%FvNZq-4z_`(V>d1F3Ywu1xT^3 z-pWtX1)jrYHTS|@F^GC%Pu?8R*}z^PRc%YQI>;e18l}=pVe$CR1EXMw_p0s;(l77Hs`ISKaKX0l`b8HEGQFzgLFqd{wSl(OajAcO z$q`4x0%HtoG9!j}VwjJUKi5&iMoV|YYko`Vq|jn!^mOG`vQ27D^zQHG?uF>HX7gTq zh~>zBFUHg4)WlYY!u@#=d{%G^u@rpmjpnK2GfR=3o)eLGA0jJs76%`r_fH?3D$(AY zt32sFfz>pTt+RUTUeV4mX{cP=lV( zIJUXHBS#DGj@#^>Ok$5LSLxq!ThHZ)CZ_~1B(HV=i|%?OcS8+ayz65)6a^hKF#(pV zbu)P*2s3i^(-$F0W45?NQaUdJ@yA1K(OrrhsZt3x?-Ca=s7VAHn~y9lxbDDh8@2XN zGT^Y6Th(Lv??^-UhB^rJ^e5O+Lp)TUrmYD=F6$D@;y?)(wmdz%i6Afl@=_A863t1N_k6 zSX2Q^l)QJ_0*vnM>+9#qW8Va)uYeUQ+67?o73^k!s*)nzw!6pLw6B-i&Tbv|)p-%n zU3p_g{n7@m|FR+{u5f7>fLKiBu6}nUa@$_ImF^#Tx*7S3a4MxTy%Pa92AabHH~cm} zWpksuekP_OgkgNqa&vQTo80)3Jfy?DwRt>b2`ky=0`^H_W*?eh-_ZM*+Vb?E78XO` zd^lee67ABGcr#Bssy-OB)T4+n&nfAmA;hta$C6i6AU+&+ArBE&u3{_`qr;bfQG9rX zhyQvc!eMEwDCO*=Ap<`|$o&VNzXuLjW&cB7#@^SF3jL-KprXIho@2GNyB9|pjq%w+ zWgU%qYS$%ipZd5-Q_X#E!pAQht>PdI19~$mF6Jg({;gBSr+r}Hg*CyT04pNbJYLba z?ccvaH1(3~<86A1f7FSZvD;bGdb}SwC=|_*VjBDZ=u&eJt4Epy>P;q?9t8#Rx-#&(wNP4Sl!6IRHAjw2$4*4uw=Wjy~x zAW@9({JrVL>JFSZ~p?PokKx8p`8(9JzeD zC;4gA0%4|!sD6Fx$Qy&2MHI3Xyvr%oV6@< zc-v38N$Y?epXuz))`~6;91p?{Ts2>rXHeC#M+xcc_CwDyJ^*_;3CnfMJ6c}Fm{p*8 zfauNWiV5#Oe2WFFmxE{ZXmat30As>EgC&vGgR?6IfU=74SFXIU*Fkk$cP|X_f5)rH zf1x5W)HP(}iTWU8E7S)W+@ZewvFK;;iFj!q`*dp%)Dp{I>~^?<)O!zczbo%=TcMM5 zi!c8SDNcG}%!F0TR3<#|;!$^qOd0n3@Bmqor%$_|+SRArGc=1XeIEX3m~fbn(BS%h z=QXhx@7krhXilJT{*ryCM83mnw=*Y8c3Ir_=dJ??6h?}E?)L+D!v|RB{y5;C>JeN7 zSs;)4yB8}5f&9gh_%hBX1qKOrho1^>s`=0tv7~QitO0=CnBBv;r=a9x*5f1}?F3pCTG4-YjdDSRi$h>{tkJ7@EevJgWCokgF z8AOLyot3_eS*MShYlvDd36*HSz0OVcVNS@`k@4lq4(|-m_VK#K&!(_HIwiS=ZF0&5_tU&=tU~(1{!aq7 za^1A`M@Aogyz}T)LYHGQd!t#)bMg^o?j;$UTXgcf-Z`l{**3>w-axvfl&RNNW-lPH zXO@Hz2 z-Jfa3){1Ip4()XlvMSbN#hY)OiEsEm)2Vz|5KuL%VcTHs!v5&#{Ry9g!P6qe{5i-; zdyTxDHAQ5Gg>KRAD12G4YCS`))@=6Bf>9BAQu#nf)%yL>_s`;dtkE@sP)S0g>LBf1 z;Xo?R8nwlDd9xj79|kJoJ=pp6Xhp}*6wA~RoT}IlMB7fCz7%N9!&Az?Kb$QI^xC?u z*5x1~D#|J&g#{s7&daE$AIni{7sE>KkI0VGv=(9b^74Bq@Gc>-QW_-Jkh(EgB1#r} z+*JfpE1>z@^4m@_P7+uUhox?y96IW4k5?i?+{_iMfV1sJ%YGIU{pmDEvhcIa5DdR% zP3v>jlj}cp%2|V}R*(C?uN?b-aOY+5nsa-b%y088uGCbIwT{zn=Jhp;#0SwwQq(R@ z%}28`pMY0&xi_i^4|lmk-mWd%yF0Zc~H8M=z)AW1&N!&{r zaCBeyKvA`)Pgs0oku!KZGt0DRmf@zIH6OcVx{VRBe8bBb zo2p*Bb@{H>w-6!HkHU-#V?}F$!FK7`@+8^&_CH^w`FztRBstMPtWBc6a;BG=WnOHe z`TJ)mLmE1D)o6u+gu`h_PP_s`D?wrA?q2Bq>g>m_o1_~ zeOY^RpKbn!zHMJzZ~^WRgy(>zSEcGCXg`5#h%=+H8;{sorNCS6WahdHPK(JKQ?7;* z4BAC%fLDXWkkWmZUY(^jnylh9k8fUUY(2kU;%gSqBS}fyo~fY1fZQiB1WyMme6x=n z3i}M|zp*>VBrxAp?{X1-Uq0Y!>(G-LbkwPN^XubM=TD^(%lE%Le)9W~+f_CT!c7ML zG{RlUsKJOA_u3XKRNv96Q-2J9x>L@7?BMn3$6EgWgiVpve$3TaPyhAo@*SqO+m4|N zAJ?AU_N_}^AU=@=q8>4Pll$(BwoO{w+f+E=gevoYw#UF!^i*tG-E z#8A$9_A3DmOZzO_J{!8l*;tlTDP8EynP+dopTI^*z`EN)QoI9g_VLpwJ2!L6Iu%s}bviKr-E5Rvl%?(YG|EgQF)s$k z|L!HI!o$G&f`rIEJAK&4R-RwUa_m0YkJ5+_A6`kN)L824c5xEt+CEzkcZ5csEfs~A z-7`;p`9u%>+D+zO@0g@CS?&Ic1@?g#QTy^M6yDFc60-YF!Q9X=?!}KP6KJYyQzCi% zX{ny+>hWp{K=LDfaqa17qQUPULG8iy7QnfQIio}^OqwgE&%Oks#XmY2mnORbyG%qF z(o?{n{+vQ&^Y$2?`V67yDdj8!`fdt`5c`i^$!o?Dy;fvjsV=!ehn^z66Eu3W$Ub$9A8T3UHr3OZXP-G$hF~ zLOpTvrN+z~aeMO^0JVo{oXZg5m&ymf)3}LVH6^Cda@w9e9%$;C+vOl+YR4;eXY0Pd z9~&IOjh?p}cY{%lkoXZ+Q{#TO4$(BFcg&kNBNo`%ZmcZB)FtjlZ3k_mB&17S*0}7N z2LlCpYtDLzZcl>%yH~LXGEjZQuQpkT? z)WTQaJgjvya)|iNhBzsn;TEM;JA$bK8j8{|6er-IRNnB>$-GD)alGrKUi4f?Q?s@>^|C4fCTf8#W_owrd;6*S!SY!J0(c1^HBlN+{=uQdWAg z`GLNRK3RYiu}<7C|8U@9635E_SlpVB{~wn6grqd%?f8ck7E~AY<41~8FbUoF{|9~y B6Po}4 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..da9ba7013974f3eb84b1e0fed15e6a9e0596dd49 GIT binary patch literal 53075 zcmeFZbyQtTvoE?50!h$d!QI{65?Hu<@DSYHEhNF+gS)%C1b26LhlM+fw_xvm&i(HB z&UyE}G2VZ#7$dW@W@~j2S$O6ZIPB?a5As*sKOSB{8v3@p{g&#nKmy zVU@0V^#vUZi=`UNVwK{;>0)J@$p(xJN=Z%54{zR}A?t&}H$A-=eMo`uX*VvdccOhu z9<3vM*Uiq?n=l;}w67oyKT{r5ZVA+1Nx=6zC?A-=({eay*ncNKS;!gxodi^WPXDLm zB+UPx`TuinEVG!q>bG6qGjuuNy#)Z2-ohdP04GRt&eG7t>*EOo<2EL{z2bP;aq>3l!%AwSlD1ofpQKodNsGBN1!Bn|wD>bNniT%If z!8RzB4&dWDR|Wb)VdxPVI_%{p@AMeE`;=6K-MN~8d~b&ZdC6gcr>_cX&Kr#)38^Js zSAX8X15VPPxx6Z*Y_G*cmc$=*j zn6T4Io*3CIlH+>EFfhv@;;ME0E~icrXs3GX^I{j<8_p7*r$ehaz?@3TBus84Hq&*m8=-ERzUl3 z7?kMPw99Yv+b2U0uO)GYlj2F5=eUryY$b4iA=DoY{yVi_2yFB*TS1pf0O>vm8P6Ad z`Y@ranwq_%pOclfqffEK$2f60)nTNNElIt6ovk)P;JXN4=O92#R5^av$Gma;_AS+d zZsC4L`zM5k>rdc3MQq4qH=%z70QjYrKVld6cuq|mMQIE9U0JiUn=%dUs1XfRnEx@b zf(v0sZ8@4KGFdq0;|^OnmFoWpydOL?rXOdnuB>H3Go8QG*-j4hw}DemC&^HF2Bn53v?Vh47nsH=diY_(73;cEcCdk( zNhIh&R$7{OTT48$(y@ruQcpFxh9*U9Q%Vsn_u}>saxC!<$bG_qcA#Gy|GWa7%fpUK zI)|46ICO$wfmOkwvWH}oYg$=M)Ht++wod>Eq3cE(g9 zltlWnydWXe(UwylQZAfJ;7PxPyM^Q47}5O^NRWJ)?*pSVvp75tluVm2JuQAXvCu9q z`i0xveZ=i_yjXva;g*ptv7v|7~me?jIH zAjfX5^#1dlcBZ=dS+9bJNc>4rcdB#oH{7luD*T;Wq#9RlW0PGC9##|MoWk@m{VQo3 zwWLa~)LldK(KacapP5<>9W53Z=rH@UbFIPotovv_5MiGBAqWL%^Xp&u(NTS}NWh@0 z7E2er%rvUh+LJmqo{?#aIAgl$JsWwR`$GdxeZNtP?~GNnyP}A+4;1I8ZWy$T4cD=LEBaQInf_UgH0 z`c-&>`^^fnf_@Avf5g?^V328vE~6dT_8B%KGUq&K_)SN{Dt1nSBxOHtwON1kIrJe* zGS%uheWT@~Jc;{fB&V8M|LvaiubPd}W;9U?kX6Bip{`h{#49@&!^dgg9C0=F`{Qw$ zdEx;Pd_|9MXJ1qj>|G`FKG#3bT}Z?C$agEz9(#qpuMOkWv;j^>6lm&@gmCIv#mJ;eD+muBLJ*P?+AUrzJJ_MPb}OvW=RuiEl)B_Haj| z-|U^slk1+D{Yuh_3dIn$oW}wc7C^#Rdg>MBikVW7bV}1xH_oYfON+WX(O_`>me=Fm z<-ttp{aXQP)o8JeB$(U{?;yr9;(pUVqa=bx=sT^qM=o` zTAsQ;6+>pv_ht4pC?GF;O~skGl*Mq)CzKz8iVfO^($X-nLi2Krm4G{ zxe^U=yJikVx@vU2+`sgzU{7V2=0Ddd`+Zh|$D1(exxKFIhz%qy!>hSTyi#UR9%{qn zi=$6I1VWoId?O~&hUG>&>_uuq375Q}*KI1#k!T!f0|EtS_?PHVL5p-A z?103Nb+%u3uymWRwRmo_D{~gn^-yIAkSv*v!=Y-&NwaO3eVbK|Z~xrPPX1~3^B~x* zu^$;JW>bd!eZXilHj}z*=U=5M>gGu-ZNh9hCdWgB+>^DF$B&>L+f}O1sDwq7i05|i z+xkpTA>S#e%$KJg{ZQ4t&KEG!ykoar7L9JbhEqrAw(d#@M3GaKY9=D!!Ff@Oi7 zQ)c7SQ%cLa{uOHlu3yK0)nOFnyOvOS^%I6ZI^Nv?_YUNgQPfxSdZ{M_iqb zc%7w`Wd&MR}dSR^A$i_tP0eCl~yS{FA7Fgi*PXFe6Y0EhbLoqlgbF0PtxF&2#NFpv^7JY+^L$f;Gr!Vl)sO6c885hHOJ? zK`TjKP9;mCs6WC`q+?%r*sC_XJQY0BtDv`0;gHCg5R(*YGnmM^%XHcwS77-ygc)ka z&F#sNSJPDAvWR4LlguDMBX_4POKpg87S>FnGlynZFp-FO9Wx#~=HkygVZr`^0S5jp zv=vR}yMnSFo$Hy4S|uePBb{U}{8{5w)1H2cTIC$c!lRKwisPelrlyX0zvWPOWhiUtp?p{}b{{{wy)t@*Xom|fs$IPH#GUD$)tha04_aZxgh3$-l$Jc8({k0s71 z5i-A_003zcH{EXlH`e9xdj=yk`YhwjYSMH=8A5u#YthMcL9A?Ci?J(rNh$gY>0)g; zrh&g74$a?3r0qtvCmpVnxO7P(qpLi8ifJPy8t8tqFPvyON$fZT!bjY+qaA!^qLu9Q zFTn7vTTh@q&QR)tkCxh~z1Ph=Z>=9fp=ufqx?jtbJ0}-0M4{Hoy22Uz87Kd7YDzu=1#~dxW zG~=j3&T&dY7)yMrp;6D6#YKb--fIVOOqc85Zg$S->srXW z1f6NN@|>SEQVS|eWLv0C0pu9X1-)+drOrBS`W9xi-P0#Lr$d)AwdoU1CjQ*l*9gtr zJn*H9$GC+QYy?X4v3M1mZ};;j`Yw|Zf3r{UTL07n=Fll0{s=1>S`nO9-O;M)!Je?e z`Ry{@LK`tSate(zc-dWVbN|=d&tOj@r_%F%=TqffpS>$wGI6-attk01sJorzcQRr! z=+1*nw>`hf7YiJ-&!ChMU34`QEEyQy0|0Vti`=gOCu@fzRK}M1#2fF4nuo;rr&lEZ2H_l8y0?u zt)Rc)wl^EnT)38%>H=eWe`@=bhdM zHrpLQiOmiq4Y|J#zF3evEfoa!tgx0W%z(APp5bVfDL1+CKcmM;5${z>A|=geH6Yu920P>I$RCmEJsP$0*YlzXd^4W4SB$mrvw;z$m(b!B zZB%o8l2hULRHThDV{;2`;TCTF(!!Pch+&5DuwY~vW+~g$V_&gl)a3t;%TAE{@yc6% zekg|)^ZeRh{E^M`VZ3Aa^0M_B8nznqTfvtCb#I#md$SR>I?GdeNd^pXB@4|Co)j`; zED+eKtcaNq*eFMp-n|r?!k5kEJes!b;wMwOzm)b651r@=u50aTgDyFH+EYTwRq+Ll zXb)&#tT-GFkQ*kkH5$2IBrq4-ts*nv4D-Nfws_tCOkc!G+>hU6Pp+^&9A=tm!sBpX z>7v~0PvGLmqSmS|ErPpePFV(H$9x1= zf@kIgfrn+E>AdD=tgd!sTygi0=Y-C^bj!zyN~V@w29Q^@?l&&^4@$VszV-8OvOd_( zfOCbK$*b&_Slq=hRL!(xWY#keC_;hz4KnOoD9B8%P==2nMHYmN6urCMA^4yeM2Ie| z$V2E5xmQQpJ)AD{W;_@>z4UZ#uBlh$n#X)>(FwNfrO5Er%dt5X zVQTY)C1~0MLx$kQ$bQH?xu*zkStH6HbHY3EQKqqY-g9l$^Qc>E8~4z&Y~uzOk4|Jy z0e4Bng4ec4*b3wK-WnFt!ew5nD%IT@EgpmQqsuSh?Nx zO{Ykdiyn&JsP1vT-JQiGo6zEZYkqZw7a z?yh^vDeS2&ny=Zv-@sNm?qEN1)T$vK6O>E;Q;ThqwdAwvzOz4g3az87 zKc>&(NNw${-mSfJz1j7;#^WZyw5DfG&D5KoeLV1>;dA4{vKANYWMX8e?x!L_GeP_4 zuNGREF}3;oI-Z;8QY!qZ6};y|42NNrs;qeT#hSWD&C`!;9rHIPhAN43H@PcSsWzld z&;XW0$EMHcte3Um)8M`Z4LL{t%-~=yxJ59ZYtdPN(|Ej-8$Q5MRyr%_b%H%y>X745 z+ZRX?k@kEicVpY!kQJLWBUG`er)QC5^mem9)mc9}X5cW)h zr;a1pKrI#>a&FvIpW@+Dj&?Jy%keFVc%hb$VPm6ACbyDPJZ(7T=)QwC@~XU6_G{*= zE_pZ2MOc2Kn6)}s@+>RpQ&JEhZZ!}F@I5Sv)^#TsdhIGXabb6}M|0`+p8j-{FDilB zh1abaQHZJJ{z(ScYF1=w2i)QIoe95bE%FvshDb6)LRRHw5ICNT^A_=4qN81papJZ9+pp*J59N0v*U(3l)>HE|A#WMXl^}fpIY6w6Wg|*f z0Kh#DqDi#*f^C9ALj+|~=biZDrpouLP8J1Fc@kSY6h}5SWpprf^Kdd3@}zSc5CtPl zw;xE_c6qAIXuME*veYP|=0mojNSLdtm`RC=O=9U&A!)`5H=S6Ruz36CVz@w=SdE4R|=1KdES3>AJ z5*`GBlCv;Z2R@@xZ~^{9!H6xMJ1(9v1As{%TfIvXKP_}fMpJytWWaY*RGqUL9L#3M z?Zs%A$hNuRrH5SKTQ4h}jY~=K=^+1}vA$av89Xg1^u;(Darj28l(X%HUe0+0jp~{y z>N}x?$8~XM^910)V0wOYgh)2bY?4uWZORrlXN?m}=?=!u^iTJSc=X;T*=eEMF!7`t}(z};&AaKP@C5Ga}{#rccT@!sTRN8$i14%%@Swc!1rtIMNi;i zube17*(`O!S-TXFtl0DeBSj4ek1&}`_sv}tUk%-f3}w#MA=J=hx&Itq}R!b$hp_?y&n$Jg|k@>PzPDjt2gvtBAf5j_o<`R!c& zA<9#|<4`IHWvK7%hiHR=?wQjpq21KZLaC9@qcY65Q!QrL$W?hB6e`2;feFd_0c%+~ z>j&6kH@Y)v`n`iCksHy->_wptA9$TY+6Ndt4_hUxdVYia>AVD1fU^^1<+(P zE=f{;B{N}i`XPu+4-O8T4%8g` znrwRtB$$U~tG6`5X3^t&Dk3)v1?tTX>>oGsn*@Dd_@^E(?~xU=qAXBzdLDb9xtL7P zK|eVHIu3dmXRrJwSfULlsl;VRU^=c3-G`k1%KLhwLL!pLt=cOOdByV~J&!lmfUFM; z$Gy*X!uw@1ao;WcVd{~y;#nVwnQe}_cOlT|EFrN<7ICue%d}0U<(Zp|cbLr(#5j;k zBDC5ZfhCzVwrUkG!M9%vlUV_IFpwRTAMyVPh1%&76@eb(XW>Z*s**Z7w1D?XaD0rr z%|*j|3t2I-*EQp#jAbU~dgfz$eyMyzfwIe;uLL;#=Sw}Q4b)U(t*w)qOMGL?9fUOW zkYz_4+EXG|L}BUOG~O+Ea2XjFZYR55AJ2Z#nQ`eaU-u*v53|&a19d0gES{N>xK%e_ zYv2-Z-h0jbwqo1T9J@6F=bys-P-*3hM3Wuj;+9YyHL7Uuqp^=+vZit;sVz{Zv~TtS;rn2#8#NZFzzd%v4u7COG0I^e?$g{vDR7YlG%q3+*H+d(MmmKZfS8fJUL*@|H-F zOzoQ;5(0(^;@s7$jP=PDUw_P=7DwAcQ*Vn!FI;}Vj8>KUYf9!{hK(Vje1 zht1oOFn}pGv9cMIcWnr8UZBPlKKgy!3FyCaFq96}5$QIAdW&OyS+e{b;fo5%q!aNC zUb{*;j)~iLHzTCRA6zWrQqaBs*O%Lc>#+jMPecQ=&uH4h!ueLQ zsg?)Wd*h@D@I)*S=VvM;(DT=6GLSsck!U4FWnxn=nT44jlP^)7~RBb_L7G@W>$XJV?DL^ zKI40*Mm?-BR*c$d&06IEZYVng2;bCR-CbL*M2;NLL4#7r&{b`*QE@XOzpm|+mePzyq zZ7^4h_N$$&H0#)IS;OJov470bjV&xfm)2%Be^}@{BrkWbdut)Q5g|1)UE?ZE&AX1W zo9^qY40@b(rIxgs-UVFZUKGcR31ml2R5iz7q5*g3ljlJ)fuyfBVYe^B9M{?8^E=wkuxRZi>K#GIL3+%;BS#{5;{X`aY)%S1o$@Yd%t$TEg6N#`Fl zORv&CIjLAO#eb;U!6c`Lw{#LI5x;JE;l6fbO@YKt5APKP1C`_=H=iGwg|ENAp1!Hl z_!|N|sT4R+>L;X3qL)2?4#)^g|BuTC;8wdC59fCdjqO!ZLRj&5R z|LFIHs7|Qw+nsL=Kk#mz({Jdfi;9RlN+qICnl8(%b>M)3a}oK>YPw1%A*+V;$5;Oi zd_>*cx{5au>K;3$`C zt<>}U%pM%3OE$?Z$4}^nvG+$=H^sD(q|$FQJKz03Leebq&7iS43g z(wLcY<`|KL2k5Oq6@nhwvHpVa?1Gj~SQ4>kkkmR zmJ2%xUDVX%xW2#tLYrQmBF{Fe)bE^}p=E;4 zebB^3^rO4(>Xd*bv+|VgyLVK$AyXp}hx%?R1aWQl>s@d=I_*4EKoF?%Co^)&TP5lU zTNgP-d8B`00W_Q0@si*iZ+*6r4k<~A`{7RE1`UsB*dqwgu^6lg7~5nzKOk?d)UT)Z ztE((kFZX(Bhq(KVs>Lgb;L_(l*obd;S=@iac0D@IR=kRrQ|vVC?8>Q7vM(YF4RWDJ ztr?wItxdu>G1cC4-*baWkfr)^zPlJbuE!i2>!VSNY^l{~CQy;!a{hVE{=OfCQ~J@s zM3kQl&28F|&z;+$`sNWH&h}AoFJV-nD-FVn zoq*hmdYXE~)%^z|kP0e!-Lg7ovx zMiPH4udtZ_(zGGga2pQil}?e?iB)PnUjyGM{zPAF>M1et=HUCii-or$CLI3`1F}V2 zWBa#gQ~@5BQovBtLFN5EoQdPtBBg$T>zxLDgc6IeJ|Rt3s{2*OsP`k=zm^j~>Su}2 ziO%K+@cJH58}13j}#* zN<9K-F0JaQ_D;**HtMIQj3Mv9=-e|VHDtB0SdQ6)0!1=$tS%D zhB=fk`-svo7LGC=;NQ+dR%2ek zs`ajYGe|Eg;rHpxVanc^S^w&AtFPOhsp0~KJ{@V~__mGxZWm56BeA+W1k?pq45A8v zw4K!Mi1}4$w@ZIl(Kq1DWMAWmH}36mKbi%yZ}FV!pbD zw$N~VA0q9wUyy2VF;MX+-c$f~aqC%*Aw>X8!u!B{4}Ry4?M0{>Ak=Q>KF*AB#N!9@(Ti!Q)D%v039Mfkk19K#A@azxjmai~$V_-5X%%n8jo_Nsl@Zh(UVZ3ORr zp6-#YCGP-M_d}-M&he?Zd@FTdNQ38D=c8Z-3?7f%!yM{qr;`=0V_6V+hsEmpX?{eq zqne_*L@$)h0+m3p*SV>9Nk`SjpDQmbzFoKNuivF6s^+Tr%yJN{O0>#pQsRUBM0ITz zw>@%X#Q0D*pGv)4(|g;y7L2B%`9CV_kQanjk)&qNDb=Cr?baWQwFkBigXWVu=4DOi zs`E?M%L`DR(KE9+_0k2;yBpnrmX0bf&nMHbQ5iyWu<`QDMh@gtH)1rkg)OZcx%IVI z)c}+lq5;cjw`6>zj4FYk9@#%w60mGe)k%cNFv1k~E3V`f_E%T+R1}hU4q|74u*G7r zpX+7Ojr#oc7L&86fJHJJ3;0F(Ts>CK_Z1~Bl$ti5y%s(wUqDN5nmD1N~*rCDvVdAlVyJqLC@ zCH#F>a>fNKZQ4IG!cxENkEAYUX^sz8VT5J3;Rd=&>{Ue1Hh@t`h}XG1?Y@?O1#NfS zN7kuqIO*IESMIiZX;&^o9bK=yt4kVUGC!=|+O8VWz>4Dq2%WB~_PxEFQW~PQ8M>EA zjkGyN|ir5>SQVcvn!;q#w0=l02qrh+}NLkx=epXhklXE!K!D^C_C?rK)!!}*&@{d zfh3sJ@Q4uJ?q7r--T;{!mcrX7_PQv~f{1bnP2)w274ri=B1@L1*q^gQv*l9IR^tk$ z8p+*P+tWw#Z^bQgpR#F9XR;be;C$jBP_(62s~h`em1j3Ll0%z(6N<>5B^+Yhp&i(t zLoPC@%Mjq1^?4wmbJGkM;L5toh5opBJNVObIqi+vog4g;js!2(l9@!8S1y_D!HbG9akblH@f9ORade?n8J~HxBis%vhSa}@lr%cY2 zsHi>BSH)x5M1FhUNIm)~i2H+bhH!T0^{7V)6>+dvrBjAXO@snUrK~s!Z9Ol1@(nqW z72m172IRd_g&=f*PjpcVGSmT)yEbpOLWpHJO7FlTo~){GQLoZ{8&ArunyIrD<~|GQ&zfX z3R4Y|7J-L8%56#BP5ppvEY&$4a2GeW{KT7U2D#}1r;ETLw>UtFIo@cFMU;=g$Y2Z)? zXV3E5q9XV0?kS>hDr`jlEYHKcxYXiy4sn+3pVyn%D;&1(NHz>5Y8G_;C_)rw;#?UR z)(43abWTkhg|GnN@FN{Yo^|<$f40_eCx6a}%IJ-^{l3+@vD~t514o>CkNhghINAPa zoU3C79IXNOcqXMO@Ao>>f31JHzrk?E1P_FDSARr=4lysZFS|HPT2_j z7jsqXc9*YN?(BHjHjsrCGNLQksA_lnZ4j$@Kj%aBw!S*O6ps~G(6Z%`B+>=~*P-kk z1mf?*J)i>VXW|ZFx5WDPF&)e$&0&il;xbxtx!Tt+@xVNM2{InZc_xbeULvK~<7+~b z(UQPur^If$tkMzrw-&JUGij_pEOSO@4on)V6DCSwx#Ajy$a+x#pU9qpS-_{{(R5il ze}DhF2FuKYGwiMC47f{-8)+So70O<-Ss&{xD(lp37xyHRZy> zX}>p8NeT$WX4NMwo~0`#iG6Sy%m3;cFN1=`HRFW#dA$4Zu}w%#~^eOV`VMH!g21uHeF*?S$b=nbokKXiqr)8pkU znvEBB{p47tsB|Bm(RL!B)PE01LzyB-c}9EF_-RWI@4OJhNP*EpK>e~`uBGXZg6l{m zaoHCbe*V2zIO>dX*s#4egvkw`GA;bcV7ES$cgFHI$gF$XHX>b-wHMU{g01 zDUr;L8YX5aT|$fOcYzxi7wDyO7VLZWCDL%LD(Iq+2N_v>7aZBoA`cdk=%+YZi?(mr z%zV=y^f2oXAGxb#MafgQb~1ooa|I!v*@Kj%>1l!ANmKY+oUg>{{ZN~T4PohxM$PCE}^pP+^2stRo2KRD{LMR``;9MC~ zuq!VlfKPmBR72vk!KD25lfLs$f*C@S!XgS#HQ6i!yJG~Muzlqe@+RqjLhV_1FW8PL)>a*2 z?$@AZXGIxfR8Nw{Gc0+08p@f-w}>A7g{wd%B*lw}jI8&m7-ymZZ@8_X#s))P*jp18pyv20vZ&Z=Uf5?}irHTxs};T% z-i^rJ6o5%p4n#W2Z+?#~e@p~>o-Po;e6;t<4{}OYrysHqZT&so3*4t9+g3e$3h^f^ zA>*6OoGZ?^Lk)D5N_CfLYKxrC+`CrXtPJueqmK~PnIB2N*V;|`erFo7WammpPs7^# znu*%ULkEe9An-y;OcIsSiw^5aTodPxA)5PyiZ4n`q%;c% zte`;SifT7P85o!G9e2^MjDrs>;a?p))IwVmZZ^;N<_d_STnKMjkQRcEHl&J(h0hp6 zsVF04k5>pW>C&zE^c;-4Yz9BD&MyF2yLr+m4aUGyI^!FmesGw=xcKCc41>+($iU^1 z@D0hCktksr(+eyUh|8vv>Vh&77O3A%cJxI;mRQ<}*^Wp=q8y3xv*6WmR-E9U)6MDF z3rtss(Br$P5Svp)oKCC@>QwkvLJl{HS#jBK`AhEOTXOAuffK||@A;a=d{d*4$3nzR zr@ezEMm7ziZ2}@Q1IBVN5X8C}G~SDd(alHV3zZ@%jB1&-L>C37+)?I4qoSbzeUExA z-o2-J$m>v0AQdJ$&HRuUr?#y47;8qdDxr!-2$XBmc&>CY8p$RjQGwAY0u9&4TP4dg%C?Zv1s zZy{;+I)}eKT7du8aqNj<>(J9MFfe<2dk%OI9r8?VZhi)8m+ZZH&0W_YIwr?Wr`1K} z{K{ekU}pOXpv)PZmxN85eame6a?dH@=?df$s5nA#vGD7Faq=RlRe$n+;9 zG7|upEYWqqd;VpT^nZ`Y|32?f^%A`QJ>l0&-sfz22(SqIRbT)7Xh3{riu*4OfHA+) zc)|bGnae@ZQxxPT8c4raJ<6?##4(U-*|n`8d;}=BAJ9QMvD&etH1ph9=J*7MH+XyAn%IEDt?=($V6Om+9}P>nr8QJGz!l3l2tC-NAY)gh?EO zTg=(Pyj3?fm18agAxVbqw6s296?i!0G zA{L*`k#Dvda<_NL(W+*+M+%bG+MALIdDT)p=LU69c70}j0GV6}n|fZ@)EkH4wUeMD zr(}2<^$PAkW5TJDeWb(S>pY*bf5T2>fMD*RMR%e-iN(X}aWI`Z$h8#G)m)C0@(H=t zRYr?@0$gnI74ujbZ*|2gQv~4av8)d~fr5s6ZxDoNH0=2JI}E!P8}4~^VozB|LHkpM zGlF_{u-c2wjwHO*?mM?5AkD^GQuI#7*2N}qOkUybj1s#QcPrhmB`J=7cu2PMG27S3ddQq}s%g)Pn{3R+eJ*5r(MGPB5ryU?;JRz@H-TTA9 zjWjp2s=8tq)R&6+KUAwn#8xkQakA=SGQuV~*d$Q>{LPGsUqPO8r(R0X` zLQ0dMB>eNNqnE4Ed^nrD)vq-$$Qk94nUCzOSKp7r%Vvk$vtF+`x88Rl_@`=#cC)KV zqpFbiK_|mPD`(w?t>YMN#qXay^k#^+wq+(30z>ORFZi{_2*q36wzEJRGy3C2_iZhf z-L`sqEJ9aB0(c~JkKe~EkJ!vUkysY{JPQg$=UA1Qc+#10r?cS+jGZ65$qlU;;{u7%ScRlJ7H0as6oG2*d*n2i|N9V3TRoNJI zIF`U=r-_lu#nl+2l6^ZnxVqF@9OwXAGgV?`<$^(g*`UXI8Qgc%5C3b>CvC%Ova}0! zJh7Xn?qi0A!4^Q*O_haTs1pUbXT1AtNXL~+Bu9iyb$|sDZTSr3XCG0LN`{0CjXT)Z z(3^yr9gItbxs)h;J!>Z%YB}c!PB{_MSzx;hE#|S`<8W=bmNQzSW{~LF+^{7=Kzt=oQ_*5c*o za&ma`JbzI5LM&3M=j1e8o!m$eG%!RF(<{KEIBr`#uX{0XZ%zO10&a)_Ovup5z?fL< z`Ll~t{iEfQhAH{H3d*om z0$nEBec*!lkq{8*k|~IZiD_sGFGkLy`k%a1R8)Y#UyI_#ujtaCtG<66eXTCH+&&P; zAV~moyH*0N{s|89YSIO6zl-U(=Hf8l%0=VtC3xjll{xe|B(Umz>O$s1oFqGF`Fw_8 zz|hTwGlVDUv1Ul65YKXg3a+PuC&$IA@s5!Au>T{7z@7O9G@3?h+7VtO)T&kiF7zldYNR`8MZTmdQ2f^M_aqk#aHBd z+O)_Fh~YMwzT$W7$pl_47=gzkW~Z^=n6Vo+3Dc=H4E`zd=iJP#_PEiSg8k<+5NNq# zbmQ+y?~B`av?4l8rS;1{Z=GVi7f)yK-BGjNh8PVZGL^CDo$OY34W_UBjw1ml>ILDp!82-?eUP`Oc*lx@ zJeJ5LmZGEHy3Vk2l7&0%Iet~FjS#fn&&}Izdf0*W%E`-2S=MT~G~j&edIP>`HA@w0 zLJ^_!k2X6yyV!-$xwy zV#o5onZwB8Lh@ieSe~*f^vvmaTR=V>w-V;}`3yIKYcyU|_AK9I%#Hl4ouDhc!`iQ) zLkRkBOKFmpp&v9j6plJ@-7kWRy^`0Wf@Ru!A3<*!)%%BB|wi`f2oVe0k6w% zpO1?5gGu8^{YBZxUQ|n%w&Ki49Q^)Fdln_TNb6E(ySoC!-H z79QPd_3-m)#BbO_!nnR8^)eC1HH1EM$P{AfMFV-^AqS%uOYhnIJYf`r91Gtb3e)#ft#ud6Odu`^)~!)3MatE#{Qo36&8c%LPZO zBE4=`WW%YkG{}s{!EmMFmK1^SSc7G~95O$$kOn5f28kN=_1E^E3~BLjV)y5hmQhg{ zT|LZQv=!G}vDFG@b6!|atdcqM{~4HH|K^JR*AW%cAV>te(aLlLT}CwW3UQKwMe3@9l*Ra`SLI z%Kh3ouF#bB3r~jcZgZ0im#ioXVwClyV4gVlW-QO0+)|SRbD;`gOdvDxk0JdXn@pPb zNpIv>K=g9iiprAnAS(3}|_zrG6!V_QB9*dId$4aj@x`f!BtyFD*an65ytIPOjx&It;YqC3Q z!-^~R%b z2J51|+&u3?S4vN@%W9%-4lB6g5+3lutCBpgkP}e}t}+h!5le*NRM*B6KlhnS+WCZ~ zHW4J+g486?&9tHt7O?8)u%~nZ*)Nxzzt8*leSQs?lr^88n`*Vek>RU!5sXoWAto+~ zNk&)2K0k|zmJ0B*mId?S?T!fpRT)Y^{1)RJXd70~bbSn;v zgPw+(#Kh@lsmHN}LLl;fZY(BvahCN|vYiDr*nqJLM>7R}6-5@*2J~w|iEUW7`fFN) zm1?o6Z+TQNC`OxTU;gtU?>qLNU3hiITI>5ork};K_)qoCp2}7!`scQ`Y9f><%w0iY zoF@glYLQkUdM0{($}WZ^ikXqz(Eo%${CksYr`FZY(5{i2zpwNhAn}(BRu2SFX1p9$ zu-kUsneFb;C*D8iTplH_ov)nX=SZyZhhyz}>152zbct-Cyh662E28@y9w*LRK|jOU zVcqZ4wPyXL=0Yv}+22hYqnhs7Rskfn#%#Xr?wxv%^yA@i_*i>q>U6zu6mH@uXg-FV zqJ7T>-Byg8gcO~XAWzGxn7(5l=+*N84-o*QOu9;fZz0tCp zbIX2o{?AckHU1?w!w96kaF~X~c1Mnuhx>H3V~t&g?!OPY;jP-+#8<-)^Cn^hDo> zi|Q1~Dv8_kHhyeXAe3%TNx|rA*BS*!Q4l?k=+?Y_D(j?jq2NJ6vftH2yz?-J-jCdt zAAo=B7v$|$a2fq?0`4&c0u?^Gt-1et49BzN^j6_8FxUSl769Sw`Me7ukndQP#nxC~ z&gR_PB$#HE6ahVMJ@9c?A};%&?M#)$rAZ=1m^;{I(AqiS&akF9$6RfdE3Y}b%=}b# zf#1b-zjLC3{k9l81b@9i`IPu|@-ho~{PnT}tM05m93ryK1>U@yvHH9IA!75^%|ZDN zbe?Ijy-co+QR$Eu+oQ{znH|5Pi=jx*@X`h zJ^3o`$TB`Rf|}HpQt07S<<96hU^v zkeyQ`3C051o<`rqTChKM=EoNA8^omh{^hfPlpsJ8SxMJgP~Q*I8!w6yr@K_vS^Zxi zp}#=GBW#ubihBI@se?Q%(F5*h&gY50;y@KTKY zKek^8cJ?n=((`Kw{YS;z|H>ZInX#Ai6~Gkb#i;w2y#Es`okbur_o>Y2rsK5Ps_QP>_3}(?&mY$2YJXfz5rqWcN}f+AcV->KHCeH znC8ee^^DyB|9`Cd1Dk&tU!GR$3mEiIh0l3kz8L}@S@!5rRa<@{ zXgy}BxL)S@6;UQSJK;_2Pr3TF&UC8OqPV));?d-wz=7~bAPx{sF19zCNY_eC@O8X? zc=I*)4*1bKJMWVWVV{G{nJXB5xb8d@X)Wn|*ujJTrImSvXC=O?$)f)(MR);!n@d$V zkjou_(faA$XB2=N@%pBLD0egmA-A=*4*i`J&6;oiO_!Yx=a4K*R$nw<~4{fm{qhUoLvMCdg$| z*so=SoVHo3ubhR3_gAFx1w79r-4c07@LyUnj;TjO=ssis5io64qta*Q$`WijU&Jhk z@}4M%o?^=yOKEa~=8kq0ua70^>!&wf3Vqrc>qE4b??~YQpC(UrBy!LvY*PNJt8Fa@ zMYp!rJ9W30Ppi7tsaId$as@4dFXxI0mhTiOL?N&+$2L8Yg1!-?8oX{^6;{agqbH&j zv$J5PP>iQT&Z}b$zBA9+lv&$s(L(5hR9EAU)h@|nq;W?>iI5c7KYR@1lGuz5S&4QlRcNq_oy5tSsMU^chVC6lFnyW2eJHj^h@5mkNfZ>On+^42kSX#`)*=}-qX_qfSy;mSy_$cO2%SiV^YUQO+6>VoFD?1n*@ zDU1LW@V%s@C7&#}ioGz8yD@9q-Nr#iT>7)HM`3AuXpO5E$34Kw@2jjIArjv7Lc^eb;f z#xj4z-R6ugal7Su?cp7}0%Sqno(&wVS4zkl#gK1BV?@t9t``TY$nz%sUxdANR8?K{ zHhM5oQt1|vP`cw#f`}j~T?Y{9?hd7-73mJ??hd7-yGy!3x(|14-rqOA@!dP_y<_l) zW60in?YU+=^O?`um^Wye&2AUqi9LDrD2+{?M?7zEFw$O{dK80N31jrQ*N|B;p+U}i zLv75(yt+zZUgtDMr%Ld1VWslwekj=Um}Y)NrTyStJr4RXa%P1~=a(X=6-Q@-cINZ6 z>7GQgqs<2*S+3Z%<~XFU)PS zt5Z(jw<+DXDLHf~*|(`Ywyv~wEFDBNa#4Cjt5zxX9O8R_VV+eU9{8ZCq^+o?tthW8 zr=|k_p*9{7p^+4!(P+~&U=l&@!E{$-R{Zz~UdJGaURl!zWER#%B(S?Q&ErrF!CNSNoezxVv5zcGBf{G30l>%;O~X zbRj#nEu)z2Hnd}&f2X~6a{e8>`dsbq*rU|5nM-6K`)N=7lgh4P(Fpu$bk~#aHueTQ zN*{IW8?}mLw}x974QnY;Wph(LQxgWH7O-+&wS)?sV9b6Y5r9BCkIspX-y+i zJIayR8uVJSp3zB2CXui0_$}vYn?Dl{S`$j^OQ)1BhgEiD!BU#cbq0E`?bYFX5RuNnn~z<71Ml3iZ(Uol*ngA&-MI2qk@3~4PJ7gkN&65+ z5!8nyvjeDm6XXb{lku6NiC4pwGMe$ZxoZcnuzunu)X6#TQwz>?7@z$4I@sXGlXnN^ z#kKJp`pSh@4PB1K*{bkG6b>(eqlAwOZ~Mu=4U+BL(U|UKeKC0^i+s8wWBvqnyB7s4 z4Jn(EoU~u~Nq5QcSed3|MQ6bc_@SKtm$psmIPWCOQXqENjOCTcn};>h!H@nqmin$j#1~t4P9|)2 zrq1)L>!k+)3|326DFaoI%-qdBAGG8>K9vu%DX4?o6W6OAD2TpFvNJ|+-#^ATc_w)J z?|jBnSo(jgy{}B{>ZQxS=spl_Nw23!9O<6#ZM<%xfWfLCL)EUfXnE$~w2C@oSqYW$ z&J0;5CMM>-O$6DdpAknFxI^PFa%%}^A(~Y(eibK<0;j2O-+1+?%nO{R@4|!)|KbtA zymqreoE&PcHNvAZa&yZPN0(7v-~C~)m3yoC0l8-p zL{7Xx4F`o%ivlXLvwef*i;mp1xJqNDc=~3+H$Fz5^ocbIbc3O!=Esg5ei(ZTWxG~y z9VB`W>BB<9PF$~|1p6G6OF=~*h=eNZK*$IOhiC2K_A1V#2&xcwU7cRb-5I#M$LlEU zL{-zXx=8_N(_|{+wt0&Fsl*sZj)Jp=00B!9!VzacT&){GMSGnoG=re2X2H(cJROl$ zlcD{09U&MParar759-c{Wj0+`@w=jT+F6|bYzl|;1QwD!QHZOfh{n*$3z=RNnDD7E zsO-Yy<7O-#m51B4EwQ=K2A-m0IXad{MbQ+N1^ETdkeZRlj%+!(>^qA0?+IyGF%>QL z4_}-vT>;=WMFJT^OH)Row`n|4iavYDC_-Wo`QzfETkVg|16;}n{;qG&c-$M98OyRS zn7gs0Nr(^DeYd2^C`!6K5VamkV zLO6-yGhh@Ee|i7vWOa_|WDHz=HBWm9EY^*AA0|xj8hUpEMNOrfo>K2=nU!_>I1mN~ zA?Q_O#`^wj@Ki*otZcvr*DpoKTR^Np&rqno-Fs>CjoH`#nVZ;&a?ca=1B=NS&k{D_U?za+T?SQR<9kN zgB9PRO8lbo+67r{QobmJnPq|Ja%Pgd_pCl`sp1&lPQA4}_c4YM7vW7Aa^yhZWw8G} zSV}>UjTpf4ENTYw$A{V!jD@+tshpiY%3_I=Oa?H-KW~-3&FW+1omXs3oLS{3vI>`K z8)viVFj!_9c+KW7iG11@i@AEo(u}|>58IE6D@uJ-PIxFq^bL)A2i`G@!}E$xGIx1@ zs3?se{qA`kwLcF&>cuWBfCcl);Ik_HOQB7cV`)M}xVgXnGYS7tVj>~5s@@NQWNK>2 zsY)+EelqCPZsOO}nrDDNfx)6aLqIvGoPFVU_k0p~9q~8L{lr9tqpE$TwQ5Ox)?&!r zlN(3V^1AfiNi;l9O^1}9wf~vOYo-1rxc26Fwj`gMD}jq})Y|=Omz1~*1&6F-^w&jz z#>H9flp(?RmG#Ew`cn1D0ALwM$oW-cm_4MNE#IeMf1DclHvQm1XXvm4eyRQ9Q*n)J zJ?`Vj2Uc|X*`5ZIzYfJlZ})Kw+Q;G-6npOwCEQBs@&+NO6htdja2ZEk!vfc%OvDqx zK7G!Reh+K9h7?I?2YU#hD8*k&rwDHnh)EqaS`FP`W$6)hNZ4&t&vG~V*e{4u2r#AR z^#O|(_)QfE@O$Z>xsBI=%u!CaM4jb#;BFJY@1^C{UZXw}mwR zowPeCDOpnB@^cKmcSty?)O7H2$QU;!PZ(fto)s+0KdHg<&)bUEr@aFcW`hb`Pd6yf zD&t8Ugro774}&*$=;4^^hUw#i{3X%RW#<3Ild%!kA82_}kj-PhM_hG9Hwg@WWC`8b zfxn~?b|8)Eno~aosn!CMtCQdrLe2KKj^gbzh;N@E=HWbhb9rIpuJHaw?sWRWeeg!Q z?SC)_SOL-^2SxYSTgMj_>jira3jdbXnCP4QDYCPr~64LGDht-2-bNfQTRT1)wSGB zcLfzYupx&eG%1=4^tF#_k1h#8!g(De@4hj;)LFB#8#;y+x@TN4+$G~fGQ{4jzxvfm z>?`$j_(?M3H*kqp-&@F4KLv5ql1kH8R*eY&8>JT@91=pu#SA$#Ep)OwK$;28y|}1V z03hsB2MR1j0V==GhPfZIS0?lfZgF5qZ*MFZfdI-{e<0?K{qe)RSL$~}2%{f?G8uht zKD0EizT1%C5dRP)IPI+bWHD)B0V+~UDT&e)_{1Aqnuy`E)1t5uuF5~50A|oaowRUh z`Bj(7SOQD#=JMy)*P=7}9j`BkUvmte(gn`Ku;gu?b-FQ^ovVHMP_7HTjkci57hTZp4R0$@*(i6#)zVfvXnu4Nq3nLX ze?o^hYLE7#npQV;uK)VbHOQ2$yg8|*iY;9Ncw^x<|10L^B3);5f`7kaHk@`|N-rly z1l2WyM$XmGpI*eRT;N>QrDPk-2kjWNkJSk}8$?Canh~F8r%y zHwknUN5{vKdKe2LAq!!?0k0suHtAWZv(m^B^0vlP>StYg#Wqj4U0DH6wA3ca0QW>g zX6m`GlDH{xoIbP@>2eSdl3;tB2R;H5@v4=~+ndTQ;Zw(JLj|8|!#6QSdF~d*JEo?x z#7dZ{U`f)Dv)lRQUSxW@+t#N}ve3=geu@a&=K0nF@|cwymaFM3h@FhO{!YkD{ll$Xg>>QJ4wfBr9#2 zS#nyMVI{u(PWCX|*M%2!0Y4v?{JlIo`toYh8U`~myj@Q|h0L0VC;$5*rPYv~1*1IR zFb2AxBKp6f76Jc%KTmGR@&XiX$R$$l>fe=GoT{q=y3yRWh1v?y5#! zb)q0B=}l!=2%iFwcxxMZ6XLj=XjAT)$fc$x_G&(+>*u`9QXj>M~_u>sm3{(X0t;@IKuL4Uy zT26f*d4BsU6f}T-$sIA@6S6)1iYm*UJdkw#;A9JLb8Gbpms|UAP-Q|MhlAT&5S|0k z);Z!sf!q1^wjCz}rfMQz>4T2!8*8+^a&wD{gd(*Ov~WO2?W9DW3Wz-vI_v%SHAW3h zW(wVNeZHG}_bc3PS#BmYq+8qblaJO_n(O6Tbl2tUyJCKQkI-OVzC7W|{4XNah8%&Lx!i$&!Vzzo>f|zuX2+_ zJps>Kx4%ExvygnpobBSd6`PfH6qyJtNRpO4o?w&zSogQ?e5QaTxtQ@v2Y@#X<%FX` zi~`@>Qqvs0w(9rg4X*FJY#Yk>ILXFpnG_?W?SOk2t}S2X^!}r5&^`dnvfEqCz$__s z>tFl33-U!-c6OdvromumomuekAIyr?6KeD9&w~m6&@VZ4)9>4t)Y-oKioH17`)IO_ z6Y@=~YpL0PI&_jVj?XU_ebW5OkC}x89g)L(NY!R85f}`)W@R!6V5Pbk2tA*M3WNix zY7FHQgm;SoNgT$_)vBsHj<_2Nj3F{WO!V;kO;60BTCFmwE>GFt#>@FBcR{^wv|$5A z$y5^%$EeoU94&qdx!6@0n2%5FBFH*|S?vnlG%grj<<|$TmDOml? zDv)nK1ws#?ZzydxAF~t~$;A_s_#%oFd`fh*HC=ibf7Ii)RX9@2FQVOV$CLpZa{tWA z^@EK?4JbSL-xq=nnnV8CmBx~jyz+6f?2he8Gr9F=_Tj(>ZM-Z4yLL05yP~#_O~d?U z3D=6Ah!o^!m)hI?oy7%P0S6edE`1H)itBXO3H1saJC0V;NtB+sX1TEcN`T6Ef{~fQ zF&$8~#8lh=HkhHp;$=)GUMD&{+NTT?#4f=5{f)G$i0u_$LX`r{%c9_CuI{h)dz7uq zuRo*go|G=BegP1O;a53jYGdKaBsC|68Jr4^27{UFZRX%qwrJ1UejM)D^QhffukC2z z6v^i76(H9<>v@rd83K~3nu5}?5Qz-HS;t3?x*T_>z9aHxxL;`&jhgYsmcdzNp;|kY zQgMuGa=wct_y;wa&)%)vaO9_&eDtnd!o%6i%hzNiAQ;)J++;U54l_Ut8f+k32l%RZ zHXf(hg&whZ9GCmmXVnv(5Soxs*BVTbmppA^H!NN0B`yh#k;Ft4M>7e2pcut7VhsXW|@ zs1Ia5`T3_0kR%dP@q;P0A#p6HHK$yp-7h6)4=#ee&`gu#XIkJ^1Ld@c>yK-brBRre zk6>QT^1e=bEgNZF7jm*$60AtD3B-YZmBkf9vv4+%ba`cpKRn;%pF=sSfZd*O*^^=y zo6TmGVqU$1xq-!W?;+M{&g}VS&o6eNK0Ww-SPFd7j( z_8w<(#Ytfvrld4~wQHxZ^#dxKeE!2Sp^C>y9^|fYelUMo7hRz50Xs`kEPthZ8 zN1~Xd&&S0Y9pqCd+FO$meta8DWaBqa{XXoTmY?HGqSMa;YilDs^`yU zD_>Xjr$fXe2(oX0Y&gVCR;pc<%Y2*OLyiZ5u~2V|EX!|~&BX_x0u>d&YySOu!ncEQ z)egcFb66cLV0wS*iq=s}fBRc|GJx;{(tzw}Dp@Gc&E-BuLp`zjM%EGD_UOqgxOZEe zAOlBTH4S6aL6E>pEa~-^(8j0?s6Q#RKCr67aQp=23+k%y4drD0( zv0hOo?o0pJpK+Ej(2oRXdxM8{N*hENS3;q=8L0FyFKv^GR|9Wnj{dr{Vk$Kyoo8?H zZY49%kWFqz0F=t0A)(X~z9S*>74Gj>%V(8Dy&O-tM6tafr>J&=9Ak%e@!$J`B8g(+ zgJp5c`T3=BoFb0bI27(qZm>LvL5j`Iy_vMi%}lM4O_^?H=_~V5J2QTsgQ%kt(aY+cqQ_40@qrvw&LbytkfgP zz^B39tG^^3>kA|2I~}zQUD3{=wPfHq*)cuz6YJO3Xb&QRrF0v!=31KZjE;OH9c!sG z^a|SM(Lxmyh0FU?!?}9q)IIsroel%cZWkj#-<05NHObd2lzhGvKjxfr`zAP&{O4=WcFcSCR)*X2Z>{*Cn{=0B9(xhz0|u_%P} z`f+n7a6u`|Q{C@`fc8!HHo8`KqNoVl<6Q8hani1OLmq|qD6nwrO+e8%9d-7V5pO+QsXZ!Mi&>myKtqIi85f}v-z!)x!k$pwlA>B_|4tXJfV`0IcD zXAOwRQ8Sjtk_E+}?_}vPSnTcZCi@w*eA!!4qNF)KHY`Ml>k@wIsMfRkT9|wP`6$bi&RXG?mr~}dhAO~S?ef7bVRc2SKp{wXdzKHPwU5U6d zuInbEyLS`K%@e&J%wI1?B}CB+_IyJg-$;``UD?~!G1p(i=Qo;4Zj{P4SbPHe`_}zT z)JDQyv^Z;NVy+Rq;<#+la1ZH|Lb|Tp>kYFM80?)ccnr@8`F8TfAQhFU_k$iMhfb^< zrJV-+qTS|0gS2oxf?!Rx|c4B4O*b(;%l;}Q=r_osusV5abJ>Vo9y~!6E9r^v>F=)~h6i1i) z*BLV&#W$XBG*O+cV7(e_%tLmhMP$e?4{TFCcvHMv7n5G#hx6c?cvxCIWX3b zU$#!4Vm`(UXxKZ~e|SJ_$s+dts!`OQa;Zbyh#9Fy!m8^gx0C9=-#hLSHKpq2a!eqE zdmcswieWtcP3w{Tms%!RQAg*Y4ilhAXw`#=hR(g1o%CMXhMhUc5pl z-=U!o8$`98cwhL*z$A{95Gn{JT!g+E*R#w2GoBsTRdL$P$%@c^LY9JI`hxf{EdO%5 z1xrY)fqUNhPq2To)77Bs+XoY#di3V97zo9z#K2rB%$*QS z4LvVYbPR+Y!ZY5tmFj;a*P!JSwGFcVb-E7*pr>I03GhmPsE*sdu-x)dFWH%-d`;Ox zam~TL$em2l*~NdhBD5BaUi?G^HDs$9PU|-^BlozWD$Jj*hq<1k;E!B{3LU?DePJn; z$P(!YoX?>7>omEu-f>>~u;AHgF8>2E6xh@@pb!IJZF%#Pwig?xv4?yoOPLc&+v;b7>KW&BCx7m(yl#bgz+P4~LHLB$BCHaFdwX^Vzy# zbb=eRchkpumDk1c?iv&g14AR9IEXQh(7{xU@4I~I@uyHko+dw+z>ZKg`x@XZ{RkzlON#qZ~l6h+T|jc(Mw_8C8!4+{$=y75mGly$G$ zZ&THv^pPVuc#26X#Zc{3>bv+ijkoF|lGb33pUq+WC@U)A(fLlGfVL2!R6n2{g8Chj z81u7F9m`01jUL$9yCkkAE$9Yf)1PD}G3Q!bgTS1LA>qOQV4iI`uxYNk*Vv0G|FKP- zG8G^JEe9Atg6j}UqY|trpw^Tw*}d2E`SU$7^|HoYX8q~e-LIYr13cV?4 z{_B*`*-?aqlwx02Q zB~vVYBM3oTCHjpnts|bhB|P+VChw>7SiAJO=?Ph327HZojMJvi>2ER27KO50;IoJojC)ZGsL$i{YrtQVJqSK6*A~OQ~ zQbj9~XtOF(#Twv8M0ql;H{d2t05Csb+%+OO$g-9f!7GAF`QYjl^q~x)xw(60ftFl^ zdah3X&Tv4Sy>nRmHc)<*+ma&&R4DD@mk^n@ZgLh0Hfd|xiepPkrY60>;{e7b9rGEG zxwQgdR1xv|wa8bj%EX-P>(Ou}7|bF#N6b5w&U!vz8w4aahVhoRhuiK|*8FwJUlj%5 z9xUu)k;m^HlW|05I2lI9ax0diymoc1d{llG*#eqbThd_aB ziM@Y1do#9sNTh*?;WCwftOROqAz_R z`lJ>YC&(`@!uGzq-%-`m-&U*BqsB{f7uNkr4M8+73e=NjhM^Gxe2JM<@@0A1m^9Qa zp&?C!w_(^Ks0*7q?x5A%pJ$VS>^Kgg3NB8r#|?-qRJ~t~)kiTJG|n#rP4@&F+Xx;9 zlO}JDCq&6&90faHoP86g_&W9&{K=4M6(T&cK1D{D7cUsz)dSL?Xc(A0 z_`^(nvHkA^FqaD3S<1@YgvUQsN6%LTSof}i>7D5X<~?3kkFD=)MGI9SXyd4zQ7V+uo^U|)-v-($4ALz4PT0mP$i-jHz+C-gS zz%_Fn3IurU1_SoU57@0;fK>8>n=Ok#K}y%?FP9JVut_y5JX{Qe&bLJkdU6AS4aQ(< zNB(qU1sXSicl!`KK|&YUUZ%nM>G1B72oN|`3F~1 z5YNBBu0(aU^efyLEOhE_NQ2XZD>o(E`4!Hrj`|ajliIh;393z*H5pFaRoA zwf-!BNNbuW*I|^u3 zuoxHvNNS?9jZO2&X33UwMGYX5BPIr(2*do3@c-EH=I|I*j*&g2UCqVB!6nZ3y?xg>=6ie#T%peZcD{{^L*kh zk_k8p?3<|4s4ocVU=uT}BB0NkwDw{$>iUZf=pry8q3BXuv^=1qM?uIe+8u!J_6z;;8xEFP{uiYH7qtuG^Zl-&fL(a&SP2rx+dh zR52O*W#|yKC!)A1MIKMYoQ|jR%CYPw65DmJ{8?WCa0odt9-Az*75QrHEt-E^K8H{J z-T_wL_U&B}Dn-^oTsr_Xz*aCFBB_E$36}0ld0FUav>4}0h52C?)`ui~p3X}G6rM*$ zr~+WD<9Aw>m}6|TyRr8aXPX9&HuW{_R~ns&6a{|fun|{sk3`Q)&~n0bQ0y`V<*bSJ z$IV}2kxrg3E+#e*r2n~J!YgQtC&m8)`Yy5V1z9-%{|F3&DLX)M92lIP} z7t2f&giXsOtS*dAMt5MEL7iYcD1tiem8w8aIQ3c{)Qh$ZqO+M5 z?TDWo028b;f#G_gZYqU^tooB^zS?L@ueye9kem)jySlgyZ~lEvzGu`&5e)x6y|_*A zba5|tHF?UFMSN{bw>xzO%qf4UDK_j{Wv0vw(P13y}Lal z#xP6P+;rEA2d+GTskehGJh-3OTky62)oh}bu1Ihb^q%bciwwzATG|%DPTP}%yV2xD z)vd^VZj|Xp`0$WCU=q%1_QDL48{`%~8oD2PLCNv%;-`nr$3UYfON9Hv=j@;V&&`Xx zy~6u2J4?v170k61oQ==>qdJM`ySq%bNYwZq0@%O88FC98q)3R(3iJdLsr9yes7VNS ziNG9Ie)?##unY>;o(N+A|JW{8Uq8C>_-ASQ^nJW9c3KAic^$!8Lju=D6k%vJXr}+S zHx1DaNIT%q5C%SYpNY!qu9}U=Gvod4PLrhxr7B)F>n$IetEyx-js}y?o<;;FW?^CI z3Awug)98&wn<)+vFFI`9sbeT;Dg5A=ulFc56|7=5(LcSnS`e9w4GdpSs5bK$c1Ha} zHnaS3^7Y`p#!b29_^;(F^+b*J=8~m{7uHU^u#_dvNC-9Zr=$1HaX3=SyGu=2D5{*R%-sXvx~QVl3Nd;r_4 z(+CFZ5?zdrfMm88PT6KK5=!73RGQG(qQOGN6#=>>#pwx%e{a@=hMYZ$&gM&5@cze? zK+0D#W(ww+R`*4pH~e-_=rSP|nzvU5e34fTG|Y|30q+4)kN9~_>%F?pzAp}KV*yNW zo&ZK&moH@Xa%mEX1|YQ8^95{vT+{Y1i9_v+O*w?@gQ_4**zt#k`epAgJ282KRuJ}J7wx>j z+-U&C<*fDyZQsa@i(xLD4$Pf|ODnOwITQ_Osarc}KSj}#%ip~t*?8VEk&S{?u*JkHs}mXGajWhH1OEy24S+QV3`)KuUMGbDIYhUI6iDZ=XCVRf#Q!%YLYVowfA>Es z0`t!U7|=^jeb-bQ$6ehSVII)}jyAqDWEY7c-j}ta0-=X*Ev-w8TH?L#HYYxFg;U*@ z=C1^j5vsI41Cw>G4sUn>N%}oT>!c-zH1RDv6<6@1Z(5pQhPD2#k;#F|^&Ei7h0J^D zxwp4!E>HWVdNwNh18HBqVaQF~*TB7`!hHue;J^p~NG|{&I2RYre3Kx$Fo8@6W>>6n zale*#;^(r81^?T;d$3vgY1zc;H~+QuS5uE*R_S1v^@pi&->#Hsyh9r-pIZ{3dtQz= zsQc%IwtyIdf`LyXFTL{rzhn0rTaFwpoQb|oelaqlo)~ub!K@(7d**3bca+)ti;mg5 zkk-I1cP#Kh#l^_xeal_TY{mjJM8&h=i>!FOkhwl~n}aXhtM_J_<4|ERAJzI5DF92Y zAXxfin_(SS@6$u!EFgV&!C7QuX@mSel6EU;085npf9=(cg205hgFO%o9ILP%hbP__ zc7>)_&ce;@>1sh$G#;dEW9t2Es$ez*Jm~i&Qoqia2*?le3QJaQJ!JafgDH)}SHtE& zM&Q-Q_NuF6ezvhV4cT3-2&JsVtVleJEM?{iC4u$1^Sfx{ZuL~t|GMk&I#Adt5()q8 zJ^~Q??9FC=>Y|) z5bZ1L>xV&DSDWB7A^kH?upre@VGHOYdTC36+$~sFSITP}5i>ZD2(+JAdkgM=HGcsV zy2sBWB7e4p3DeT17i&o<`ml;h=|lK$9u-KMyqDDZ67HJ%ajP?-^KNYW9iUVWdIEzz%@;_BMaZq}8nIKhLmmQTZ=f5oD#l*? zk!VP7;#nbr4;xr17ffGxoKD1~3l6TO>;R5Wr8NU2WQ<3Hrp`}LY8xAW?KWHm0i6Pv zU=AhkZQp7c^eX<3tLCO%G8=RBg|l5{Jqdtm?ZS;kMTfZB_oP7DZ1RE-J>-qwa@YZh zZbWbyj)s|mJEgvniT)UbYj`U(54_8l81LN+5-eBpA4EB?b*G+QzTH*kV^}Q%GTU2eJNJvk6y?{(Qb~f`wt)-?F>`+Va92ya@LDpIzJ!Y$1*T z=!Hd1(qpAvPmMsxm@W`huVvk>H{AHk3oIPJ4}tOm#II!^NuSU?*Z_4bU%D==1)3Bz zXaDb(QivN4Mr7}7FH`<5qu~Wi>QBqA%nS(ub`vIiX*&J!UPZ}^<5pyKgFlXKUXjN- zP|r4%?^+qCdt?Bq($7W|@M_;cE1Af~qKdk|AG#bkm6vSs09LF@Lx5qjQqp#MdU_Z_ z%we(}GZFJ_uUNu!GG=z@`y^n(-dHPL9|+`#eBEdfA>zbhed_@GGbS|BVCeN8h!e025B27yGLtnHqwC+glZHGr)R$fv%&q5dfwjE?TY%LMY*s)8Yg@&0@hA9D0OPdea(P}mrA3#g zRl^Km9ZcAjt;EQR*jB@Aaq74xTG}h0x6#41Te_;P+{OYL@?QeEYk01ou%kaXz5(8W zg*h6tPRst8Kwb4)Xp8EMGiZ3q_Lmw6&_z&nNx7aa{Hc}KD7ebI zmOS-1y;v`w0QUFshl5vKt7+m-|9UVA= z#tUiX8V+{K%V8i&KGd(P+}kzuC%!T_ks>&c;j@VC-r=4Owg900)5;`BevQ33$KEUk zwg6w}qIe)UWFN4KG;c1kLOwY#z*M;uf*w>{b*x!7UCwt9n^hb$D)&uY1Ww^M{4m_3 zO*4ejCKEw)geMRof=Q{q)z@tXmiMHV0opayy(Yu^`JfxzAXv007>9U)Y7ZKRdw%Re zH`T?f$ll5O-Me-**Xc94r4f5bzS=ddqAO#cM!matU<{H#d~)kK78HcbMlGiIU@<5)o5cEL-?ULOn{_O!;L4>a#2ph@n3 z`973-rtZ)w!2ReffR&s9_%Z5t4fQ$`Prz>->FT;LPSaRP{}NgL(+6W81F~z&Z?0|* z8+GwdwQC)}0zl}+W$^j_-~XirV6OmwambuO0&dIHq`by!*A)X3$7cr^1N$~pa8wZb zi@AuM@c^#6c@dm430IeMeofUvg3MD8_n?m1Az7xk=bd2be(!XyP@?-< z9&J3Fivrf%6FJJ^QF@q<{c-cJjz(T3W5ivrJRU#EnlF}zVG ziBe3P{(!pzq{w@2o-T)-36I>b)9=oH0z&ebuGVqq|3}8$sZC4G;n-PTXrUeME_7F_ zNafiXNxl0}HWPQ$_BR{s9XMNNWNFhFDPy}ffDQJVm!|?dv&JbfBsUk0tDXD5Yz*$5 z_RF}(yd=PMe2p0CsL;D#F|A=y%b1xM#ZHJ;b>nXKRr{#5E>m`WiG&S#p4g_ci5;v) z@5#>5+?&El!H`!Cb>vCA0s5EE~U;!DYEGbu42GZLO$2jMXY2BIo$oaPF4?SVAgB{geg&sIEViY_CL3& zy7C;#N$P?#laA!1sdP}!I*?%p&Lb*w3G$aS?WLYv`>BkCJMqt9BU_)HCL?%o!(NNF zU{H|DnmzGQ9(VaD`a9r-cgMPswt*yyFs%tI;rtw7QSRoMk*E5D@=3rI=@^5A7~z(B zwe1@yOj78xsO zZUv;V!-?Q8u}7=6HvRZ-;IHHNe~#zbxEP&QW-U)?R>n7Hem{`)SZD62aT89y)*_K$KqrPBlV%TLK&gBbjTtY*X_FNXn})ol1~7ehP=MpE*(B zpwDv;=Q>N^s?~CjWH0`DWl4|r%3WK!?&rXLzXxBpgY(~`5u#5LO+IINA?Lc%!JWyJ z%)Q$vEx)&Yl{p#(#B-s5&OUP&Df`94FccJpG9CaP$~5fn2cR=%CT=_R3N&=C#s~AQ zRnZ{CplA>|hk9E7oi-LDcimXi5-Ps+5k`@$AEIAQCGBw>cMs}a0Yo6zth@jiY~ z8p?Rvpt9#>^E1lUMaFuKw~zT1#sUKW_wG!+fz1F*k_Qf8iH;!>!5N7sXK z(9Dblp1l2zsW2DI&XI7oTg3t24zI^Z*mb}dnjqqWG|$Xf0M5<<=edcgewW(VXPC0J zrJ&b8%WZ2G5xwKtU#&=*wpVQ#L18)yP<-Ic&GxLLlg7%z$^M#=M!31NC47#`b?=+l zyE`adnZ8d`aMdLpjnB0PqDMbWiF6yiPmS=Aeum9PDDm!@>vUf+PT0i$oI-d-|E0gE zB&D#3IfVq$gNcdhQuTv{c!^tIfnkD)=bl`MdPc3wTfY~q=6Ae2B|;u0M&Z<5zBydl z3QVrIk9ynIjSD;TwWTLsPHJE-nz1DK*pVl@d)8yEv{*n@lwkz(N?AT~x+z6|WoZ2} z7_g6@K4cC1%fOWMO?hlUX>#Q7BLS@oxKbo{RaYZ+tSx=THRF4>y4S_~tt@dpTXv7Py2KvmW zPst0mjxj#~%9(=Bblt_!GEy?UFzI`$GOG>7-B;2ZFjS_=M+-P?dNYXmA0(lFO7rc2 z-D?OiY)(ICHL)|XQaUc?qpeDjBoarL{2Sjg;rEWkfTf^Ujh{}`wg{>vB~m1lwoQ8z z8sTCP8g(U>G(RAZy=hrM{-n-P-ekg)`7wsH)ulR2_b zt1ulK_D5Qq+ueL@q+)xVDHCQ!f3~zqb;IrPn^zDO_6(L_w(D%GlJP=9MY?|^H1myBDTX6|KVIARdQ75b|D`5ADnN%Z$6v-o+kGb!P@+i|_+MT}GYk1`mwI zEm2SUuT_TBz>V=>>)mk#yXU8bxj{R-Ly{tbHqX=DC1yceO;pO*z3OYf*BFmsgl0;; z0!4fI5id64h=^Q5)Hirg5zLRQe+&^}|7-_;^F+o}$R>Ab-`=01M)wsC9ZdMinli^9 z0atD3nm-x%mva}Fja4!fBY~mgj1Y0!HdMY0}lv$|p9+*I65R7_G}W&bd= zSUHzIDah(7O=qU5E0^Dgi6v+ZKBJyFkZED`CIx+aic;OHZsIzso(pQ650M~o%_m3{ zsc|{CZoyw6YjW&F45aL`UvIpDv1}J70J>JO>Zq}_K=bKhuCY{H^WXS%JJ`LtM;n9S z@1H9BUj`hDM}T{@JOK+rcf5v6S2r{o^I8K3mFz(ALa|yYM^8tT6{W4Tq^W0=!J3Pq zbAc_hTX6a=;@amu7a2IQ9G@vmfL9Yf5D_hpmLaF~aWc?*1eb#~V}oAaOSd4mW^Hr_ zPbvg&ntyfP{2gWBw}{M+02|3x}OnrKda^a3*?bSNyk?Fcbw=a1eqWT z3ExCZlj#nb2IWrA!<{5I7+@?6x4(OIPS;5G)|)?PJ18h#hTs@ z68H{etiR%rX=IGu$4TJy)DpD@Z!=|DnD3zTR#vrsBl&?3mXX`Pa=sMzJh=xKELJl? z`%d$}MLXA4QOtDj-i2W(fn0?Cy*ultf4m*Fed6AB!3RDx*gamzObBGdij!6y z)$Fe}s>dZg;?D6as{-Fw3pce`eQS&t7LKzS^jbRa39{X-A5# zB9-VRQi}6C>r-28L!(fG#_~Sv=R2?mXwc3RWH~ziSn<^h52um_?*hBe5YPYom7@0G z$l*okW3chU13>8DwXm2RF9{A2gWoz7r+EpoMnvjxc41P|ONk-V>27-BIw)*^L0@a~ z^PSc2rNA9C8O_}?(9cnnit|car6Ys2XuQ>&=&5%Kll3^7eV)~k2h5Ht0`?92s&=Q4 zmW%X>2t({QViNK+@E>v$LyvME;p<7~9s4rULXP_SE4cTU`5${^8|8duIKK^7+vuTX zWXXfw?)i|XXnLYdmTd-^@gDT8C{!D;hFv;yHltA$*?yg_dslZ9X#YM8e;z^*DiQ8` z)?M48?5_bL4_gt)%Adt>+E3op#{AHYjT&k$mlqUv zbl=V@4YNUSf~0$;=(+!sgR*sakHU1%o(^;!U+zJ9AuBL5DUu>uLPS$Qpe1`8{Kr|a zx#UBbpq`0?86rF*tN(ans-<*D7xs(?c&9M7jkBAlN7bLD=ft@t!G1Gqdsk)!J7^Mb*9Wj*5zs79dJVOG~#RiX$c6-Q697f`kYt-6$bBAdR#j zAl-~KNDeSG3_W)r-~YNF?&o{fEP>@Yd-i_v_r%_ZzhK?MJYTJV->2|U4O$QEG6h7L zsDtYY7*-qNL961FBvyDdGYNSFtV^Z~TP>r*9 zZCkbmBof(P^mlmww$$1dGmp_2Rm;MTpmRlNDQd(TXPZ=3_dRn>J0jr`$|A(uarUYr zuHwsy|MbuW>!eWozW*sl(B&pN8+$;zk&hZvGyzFah zSIYh?`UWd}!{P?)%3@h3`UcrT(vkxJ8IeHrFDJ5hM>VR9Sh*}SX`3%G|C5>!bq+mA zQQ1Ouq^P4cHq0EFBrPPPu*2oenD=US=7Gz}_meiv!vcPuc;l1qkS+YZ!73FhS;AqD z-c*4ILkQ`LYR&;j&7^+{s&O}0w+vNB3pER8Sw5Xhj7#{GU|T9Oh48Na!(2Yg2ur;K z-Tw+Wkk8d5UcS2p88uChwJabkh|%%$GXd1HrD&sBbP3k?PXwN3bnk%y(x|saHvRxl4u%Psm*s#9 z_H_!ND^DM5&-_vQM;z#U3Q}15hC%XA<9gR!e8_=2lG~5yiSnvMXUFMu-z=Pf%$9!$ zV9nWd-DzRDpw;Hn~Gt0X6T?FFe#rr$zux%SNB0V7E z_oQ@%`RN73q=BeBHALOOd;h{D2AE}0yFST!l~t3{Yp^3ow6+a^sLYRs0La@jb>xIr z0&~8G|KiHKcfd>c_5d3dUN~tmu3r4l;DTw-<(g{wyUHuMXc)YXJ&uOwLk|$wDbQ*L z1zVP+#4*B$*e2NyH7XthT{^o8jKfjBMzzKUn*+}pKbU`x`i?UZu(6_azJq^Ewc>Hx z3PvWmdJs#=g{dC$ql+`*?pX-{J)(Fcm-f^#Nm9g0)jE50-haC{P$5bK zJn=;gT7f9Xv|m)c9-u{dJJSl2Hbl6i$H2t)^?W2E5gwn~`xQ(NadZh}@BFJF=-x9^jiz?Q*Sf*}UC?VJ?n&WM5}HW0FZra9o*^TB|*O55Gg5la^r zjahmJa&NyfXjb>3S&@s_^@YrctR9}2FSjdpeN+NN&7}zfdPK8Y=LqQmBc7D zWoCnuLX~zK8!rs6Y9w($mO1wZUAp(yD`A4?mnr;(fO~)M=UU@G{Z>W0vcgy2K2Zq_ zVz`~A3|4#eZRMAI?*})q+Q!b7Pq1JrXeL8orA_ui>|mv_`>`zLKmqA?qK7U8&^e8d z?1Qz+3PNMM1Lc0oW7iOQeO7FB_sD#)UB2rB1RV@%tyG61$QOaE5fo0OPpd*;U3x{xw|x@Dy)D3gpANL$hJQJ zwX`GteeJ1Ag1GRI>%qPp94!`L%tFbn+ZJ@+J~0NV3@^dtd1lCiui%2d;$|5sLJv`s zT|8_&G+R%rSUA5#4hzl#W}EF>Hh}j2I7=t~ls7PZg;ezA<~N?lF=dc(H38;n!4CsW;2M0m!JqMum!zy(S#xysho_?l7no9a%mdl zHtRP9SjOuQPy8(0t6noUlp%dhoYH{08X7`TN^^|aag@!6*J~mmI0VE&^IPYDEu&|u z`q4`|D#K=U>6(b6xlVP6IIsa0sySXUGH3GiiPV)Hv&h+&I|488otkR`TQQ_bb_Qz@Q<>a;A8e zZMhvU=C=~qb_Z8xGh3@+F#R2YT38^SMy$-f?jL&e>a#}Uo9WSE-P)7Ghrv&P4X2^8 zIa+B~hKB-_z8ilRHun%h+4OAm0u{)P9Yo3II>vbEi! zRZ#Z{z>m!N*`Q zA1vl>dEz1bgVH18A6P_kKj1s<(xKMT@onZptnc89U5+CC66J`}^MD)BUVF>X?f)iL z1T{n9aj;`RzV(B-1fd*My^mGtIJa6{`xck5+V4;9fZocDJY7GkbnDm4KCKN&V89&- zT*Aw@uUlVXb04joEc@GPul1=!iKuIxpOitph?JG>1xDWZ*f}Q)c2QV0eX{XQId{_M zyr^ht&l%WJ+C-xEgEGWN%K=kz)9@HZ=7$;7tD^eKjAeV}=T=yGn9zfi;XOpj2GXXQ zQ6||wIYG7?^y<#$NGCP%vgzbR>rX1}^ff+))Z}<4D)U*I3;LeP#)EV(bhZpW-BcWx zc==a{v$zDa{P(1h6M;HacgO1P_Tj?}7F~T1rxO<-d`skRMH1{CP{tQr?fWSJMEET& z*SPaR1tB~X;jdYiU$eQs1vb66Dh3ng$;=#JXZ>sTbBA+n!RctP1sn=!aC1JAT^a;* zzVZ$@+s+a<#ndTRnM{VDZS}_8;kwzP1I=zWadA5mUAJS&5jq$Dy}$jr)^Qh1FhXA7 zBer!yBFEf=Qe0&7a6d?2~L ze@joh2Jx{6WYd0^o#pbs0KikuyVs6jm%hiK>zU}5a6*I+Y6EKXO~xu&VMG` zF%o$rPd;zSQ6=5}3iRt4qbGSFUO>R^R#c>ekZRUwo_$h=4B#P!ExDpxTH>t*SD!7! z!c#TbE!6BK*j)%=udL)KcBx|uRAq-ET%3pgRZCc|DnXRIAFLT0AyJ6CO`YZis=fY4uD4n4K=yN)8C*cl%Xez z$2JQ6-Bt1dtnKT0DEJ5px&!84AeES+ z`JUg>iswp-6%c1u_%~OD5;cT_k-lI>uxN-)+#_$C>I@m!cLu0X6On$oL_hg4Da zb*F9Ou0*giC_|Fk29WQGPOvP~w?3K|-7rFy57!Lm_WQrS`oK5l@yGxCHkd~fbi`Oj zwL9YA4wPiCw^g1&l;P-f0}#KvAn^V40k0-Ne{=Oz2Ydb}?}0FNAT6}qck zU;<4*H2LkL;eiYY__;w$VUU>d(9C|L0%yFmc|x25s7Po7k%b1_E`b|#f`i+$`+Fjw zJOgayv2^YaKP7*4Urkw$SuXXBVr#UT$gO~RP)CF*=p65atw@S+!iV^IpI9umvr=8h z*N0#s9&5u(zrFhU|3cOTHje~;SJpKAW^PD?rQ(-zXC+V84sTYzc5B_(2>Yi^5FodP z9Oe?EP7yIyykvt7nQH_40s~8FO#_I0XZo+(bp@-@A$b>}R2Vm|gToB4MQwg>_)FQiYcGKJ!xZwwYTEZY$0Y*n*FcE!YFemRJQmLXx{g&2uXG z*@d|lJyc1nJ15j$b&jn+RluO!9|3lu_$Gqvt23Bzsi$nn8KD6?kDQk&4(S;-LpE`snW~vKIr*N=kd^+l zeyO>En@-6BDj^DGMS&tTB;C1v#n5xyFY_41wS}pwbH2@9t(U0S4Pyz=V-BDbe9XTa z`Qn(V!Cl5`c$#Z-v#Jg(n>G=If)p<$Sc?2sk%0=;9?I$)y#&q&l$Aqa0Y)H8`bNrH zZk2@Wo~GQ%&`EJdEQ0WoR*PD`)@(q%xe|E$D-ibkWkcX0Ckf&k?|ZkOM@ zDq>vhYoovONDdUK42q`o2LB+zgHY=A={AV{K%{zf(s#3xK~G%VWPa5Y0)k&YI%aKN zC%xB)klN25^94JWW?@x=pSLpi4@Q=wF-WQfY zb-(Vjsj&Mz0D@g9ByMZ~*+gmBJ8(XJfT4RqC6*aCqoqB2&wgaO)Y8;G^995N7Dc2o z$TYZ&FY;-HBJA0Z*H2ohGl~Eceggeg|yFr@kjIo}1v$hxY&OIRcq=zyVTd`xxo=@(<*5T6;FC}C8#Xh1l7zx1nMUoSt}%kK(oPVAKw zP#X#}fuae$V}Q4V6;Ay$P(deU{V#NZCl9pdta;A=%spYKL!&6!&Y={c+mxoL{@rb!q>jgS@_UG)9UF1fSLR*vKGof>E`CY1S4tlhr&t3ehF2_dL28{ISD7F zFh83*V1D0ES?F=M{fS{&0erZ2W#MkM!^7_)Q?ElVlX633WyoM}+J}!j=+8`=xd7Yc z@7}q(2qN{bply!&TvlM}i6kl;waMmiJlNzO%kK_-r6Jf7L+U9~)HhpSk6p4`DkBYV zXPgz|;*##j1bBn6eoDGqk&`;^p_MhT(;M&gfUFqbz8X*h%qMO0UA5}j8hZNe66h$L zEiW}tsav>99rY(fbi=>1fS23^%;m;s0~6IGD#$FI3(~}Att(XtV;-zjHv@1WRYOVv z;`JuY()EM1d(jM>lnJ{HSG~-y3^N8aSAbk8tnu?_*3Xi4rmor*KR}|7oXx$VwxOlN z{w}N!WNn_p{(#Uh(4rcQsP*w=l6;AaB8{Omgb@VVeZW$ddM;kQdP731=08)YaxdCzt$|)AN&ug(J^Q5|565)g%6kHQ$D%X;gy;QIZUzz$kavQ_X5mmzi-)rW#F^IMtAdNB63r3F2K)#%uD#b zT02IP4W|366|d@sq0|?`Gk0Lk@ck=Tu2UCrGmY@n48o364>1?ZF0C!MdQkp^zV})V zIJ-6g$BnK8smgJK!Lq~Ve5A|+;*7PUaYhp+i#C=tf`DBh9Y<+d{8R{iovA-o8ilF^ z9SprRalbzR79ZtyYL(u1nlE%$SFb#rI-O`_Tu^C57+s<#eQOk%03h`*^iJ`V_Tk~o zW3Bi*^bx4O-*TbcfEVCpL~(g<&Z)?k9JuUGzUM829Bm-;q<^Dr&k;~gmrHL50kS|i zWq(^JStmhNg2I8-&%DK}CNU#~rm%NI0(3)heK5nP@MykVS~{-I-S)n&3HNnzt}Q(= zx&t4A-JWa6p+VpdGA{+}+A8$#rO3{Ts?rnOa^TVD<>eKQeha3Lm-uJE7Gl*=6^9q|X)SKo3lN@zzl(w#bFwZ`cmlU^ZTfB37;s$qR^>P8cB47E znIc1t&{kjq8A15NY2^1F7TNkWI-M9n~q$L_WJRPB{fV1m;p zb!!iw9`x?*YSvuBCx(`gIE?Z0KpfbJKHgA>dd(=`8>z=9z{n?E=*kJ4gMo1iVRcV` zq2-!BVq5ij$T`W@-QpRS-KzJ;CNk2jR7A}$$BfbwxB>DrzI=> z_+sCs#)3{8G%OWLO5*Nlg;M22aQQ2%4_n`p`la;|%&L6vj)aJEQ&YVeaL)0qZeSP#L0*s$%ySiitw8kg0@ySr zx*gOXQmrxfq<||q&WZu%EH9q|mKrV$JmDO+C8Cz?+c$$ZpK6X@>4EN!>+dU5KCFXU zR;|Cfx^Xrf?FwtW283pBZs(-xVZK4-si|Fx8vZS#F)oTYJ|5m=KQ?ggcR={fQ3FwW zm-*F24w-clwJLk|;?vbv=U3_Plq98p?o)mfKm%-uqr!=9I+nmjV@r5^Y=Klt`u*BU zgk17(mTRzCm<=CHh(_t_3Bcm)6lpa}maRX#ssPfjrq0hurSidi>;VPs*SS|5$$$Vg zzD($?1Ts~7o(tk*sZh^wr_JBLO3_NHz?>QWmQE(pknh$M60y>OFEoCLhgjC7^YWWC zNUFJLyR*wmU-F0If`kHVv|f3Mb@ylQgbwB)idzpvJWP%Ko$;DFfk$`*utQFa3_C?k z#h&Nh=AGUSYtg6%CtB7a*W=h*@Zr%nqv@CLGGuoIKc*sjI;T@Ab)Wq`}b$ zu30LTU39k+(yd_jZZOg61cAe?YGiaaXqy4OC=vak=7da+oYxk-lYYJc?fRMZr9Pl^ zK|^Eb=v^-r3ffm*+E2x9Xa=eyUBOn504`9<0;OO;b2m&C5bF>{w+)fOigjrf=U8+! z+zRw52t25GZGjh@X0)R&NlzKTW#Zy3A)$@)H?s3GsV0?*&Yt?UeP4Lz2YjBr0MGCZ zHz2rSnTVKAcM3MX+I2it3co>JTvXDiGbmPxbwlw|Diu92k%=aiX`ng6S9xgF)#p7a zh+UM;_bXC8&Ea5H&1M3YKsb{nAD3nqyP(3BK~k$XWLn&UWbUAJPqW-~ z@d^Uf0<&N5<-01Xl6`lA=n zC*k88tb^t`CYLWcXtL`!QxZ`yrP^-+?}N#S04{n%K@sDJry||GG#=P^ySk8Mno&L}Fbv*7V z032His?P5rPua9VtI-LGwQ2##hkRzeb=-Mtz9$Mchtnjy9nb`@P|?vg_&CVN73v@v zE2%)g6jD4giWr4(tuG?Y^p$|8!xIZE`RnY+^&)%B!LfpYx^xI7lc{u+ zVia}8Eh-~p2G+|ID$I>^AFknLP6(`n_MZ1@n6^=jxL@%_U^D~BEr7hqkFfY`mOC+5 zFX5%%V{^Ci=yz1i1yObZ1?*W2 z6v*Vhh*Su_E5+wN4qCFhAJi!dU{(2{PtlBvG9w&7_pISe;Akn6ZW{?$#zhjc1hSDm zg#%jDm!1MRQ<@wZUE9YyT0{DXPdeouP5gcG^f*#7P$mZ_wS%l$j3E!G&j80*FEN`B zP8~B*G*eNOud6I7tt%?^IY^HIi*HMm`6eAH7e*0x`@Y2uC6OoGu0RjJj*XacA=gEe zX5H$)7G{>7_9PQXg*s+|{zpD>PBC6icBYTc!1*@Mg7zQK7IaZbH%)EeX5*md;$Y_D zp;uQ~n^Rqz;{kFH4?u?gzD?YF=xL zyI(~MSAN$f^hkh@Lx4}5DOMbMf63(p^{g%h{C)*|@<-$Ad!X1*po1Lk6(2>85f=ih z_f3yEIf(Qz{B<~w1#^%Ev$pf?7Ld_$rHmUIfBP1QH6gcF{JQ7{bBfR76mJDUWj;3# zU-QbVkcWXs5X(mhQ~q-bubi9)BOAJ@~i%FEPF=NTT5iCO3gEMcRW825G%1JZg<` z@sjWfBu!%y?uxx@^*T}@M>_d_75FypDIl+z&xwGIdrxX#0)nYRo9fX@o%IR3-f2HD zXE0$~3Ez|U(s??1>ZRm=PEGm>@N18jU~pnu17%-mRX$d6I94^O zP0OkI|rl#gB5(9 zhakTWtAj7!`VM#lOyY|DH&np_M?0SEE8ig2ncKG=c*?GTSQys#Sv~7@xIpfUlvBw# zvmeuIwj19C-6m5+Pbuqc?Hc-O-F5WpFy+_}H~9hb1pSL}rEkCRRiuJ==!Wu8+|1j?Y~+L*G_D0AkD?#P^t$t_6@>!Oi8H0JvbqG> zF*t--{Vp=$Lq(;op;MBDL_xu=i$@eOK^PGU^dTS#BjyD%0-^vVqhMf@d8{dU65Diufn<56d7ae_kPIafF*T^Coc2cqk-fwMDKLKZbKEJDeNM@zT%ox0fv~pTkT& zQm6W&f0p!&vVYgHxx6Ux9viid1MY=tEX7&(wg0=Q3mPw9XYf^4ZtjzMX#y5ey`$4B zYh^z`Lu+~8U5V#e(Jk^Pz{U*~kqEAVK!7_7q;5hUR2tENUpd*O$<0R!t{LlJ(@?%i z`LXG&`QhN46^FM2W^72{mdf|JAx4wTD|>YmhegEI)96y+DS_OMHOI+R>Xcyc8N;l)R`DuVkd}V zVHEa!1;gPIzB{t^Q6=4*Yi>1l$Ugm$!pY4lk!f*vjgnS7j0@;*y@;b#5I~GBr0geu zSL|=-y@nkB0@@pr3AJPNhjICxUwF`!Oo8or!>dWbVq$o6jJ0k!ns|pzqT=cy>-#!^#2y)~HZDKx z09BVTl7Ieq#pmBQ$X18HY-qO~0G&613MK;u5#AB-l1`o7bMmTG?)!Y#(%Qc$-FKzT z($5;slX9g5D1I~#q<*v+OY<$h;Mc5xTldpQ$P~}IFWe-5kKFWVo8?M6>lVdT*{)0< ztD1m=D8=+MT0xljyG)2Tu6fz98~kSL;vED`bpQPBO}Z0Z>Jr7nlf{c?Dj;_e|GpJ- z;OVCjg~IF{VDZ5{=tGfd{c03yW!JOb8F%F(icq`qSs~BrNG@);AVNg`HySrWClaAl z0*l!_xc?DQ1V%^|@p>(Thc0M`&3+7plgI>g1&T3qp-9CEH~{JzpFjk)K#aDHDom+g^yg`zXgw$v(>;g-Kc1i za2T&E41XTq=w$Lu9lQujYqnwG?`g44L)BmM;~xg2e0S9=(+-ZvabX#1xU0treg{1V zz9$=npp+}-GPMxbB($E7b3QMZ=~KOu;n&RTVtR6&IF&!F72}2w`P#g>e-!Ml9K#Uw z3`{Rbzi`Zo&pOU@pumkX?j`c(V7?or8;+z(KWh^=NHkdJMp>z!HMBnB9g+M5@@4p! z&$sTrOq+~okN_NWtMLVr*}d-aqk%K3x_{}sJ4VqDcj_TDrJp;wzI!r7ozc2C`<8(}PQV}i=p7O9nG*dpJJhEDZ9&ui?5wq(UKsJ9=UPD`gP)vZ4? zaLWC9I*A8ym-Y+c(R-gS4TT&3YYSmTFvN7SJXBA?vTg1+7hEx@dekgzFE}81xZK@1 zA*sF+-lzQ)^u-QhQ{vGz}4?wMA=2+ zK0flO5ldH;N%rwATi~T1*Q3tZHakbKgN!|I#*B^2R$`r?SPMh2blH9kK<|?*8sy_?e))VR%_j*(gVZ6ZCo78|RY} z6o4AF=p7I7J~(MN@X{jlQTTV)7ctiDvDX!wh{fm}lGty$HQWZVwlk`dyFamG)8d`k zuI&GABMk-T-L(uW*BD{OqJin<#+BtP7$*t>7Yin4fZqd(x6pNz^HeA6f4}m8gcNjf z8-lbWbTtQn&g*~I6{zbHx(F!*f*%TP9xl{L%qVHj4CO}krI%TDe!Rs5N6S%IZf+(I z{cXwoJG4f8Q1igw-|Cw-TAJcvhS>y^v-g6E!2lqC~C+jJ`D!^pANGYd)SgHT4v zMk{Nf1eHtS7>?_q*xy^ZisyE4Pj&y9&{r01Gv{u%5+n|0Y^s;mV-y;MRE;X)o zp9dS)Zps*@5;re7?RSKYso}dJuxTgRt#{<=W2@k=Z*A$(x!H0!lA?b!H(sd18X6ep z(n|!d-h6#ODei7@Y5L-1MU?H|WF;3LTQXrYAbN zG)ijY4cvbInj9S|2n!=&Jv|?BLQpluXVS3oT;hk3vUmN?mQmUIBLGii@Sa5 z+Bu=)*)5tVBueS?{BI_Ioqv4!TKe&o zT;tOcS3W{oi;U+FjD^m3ZMo`k@2sM<)AOc0Wgg`k{A^d-{WX;1(BI^7)+LH!pOGFU zb=B4JPxOZ$J1E-Mi>GJI%r$%M!IT)~be@!h*9%HnMw1zc!6#881MrADx+C#Np1cmh zR|T;bqc+yjCC5LPb{^9O;otW-wJT54nelFl$XNc886_7=Jg;H+MkTlZ$D(UDZP0*) ze!XXGLBrRKEV!a$gn=Ad$7l7xfj5=z_iqjx zMA=!d5@OoRrPjP@$cWq1)yS`7W^$xpopbVZoyN+13Ogo>?Twtvg;?zSe5UI_v0mRa z;XP@=_s-el!528K&o4K}_v&mmCz4MmBbpv|&pJFk{a|tbnQWDoUD;i`C+Wv+Oi4X2 zjmjq|K+@;2L3g`>zTa%vk0?LqNqqf|z)$6s^)-1TGg@vHqSj}BidbfLi8<4|Rva2! zaAgVZy41`!qK2%vHC=hB#fM0($H2KUQA73)bfwvzB<{e&DjnPPY zSICe_b;lw_&OO?$05LA)E^Ji5~~*0ipdGko~8{kK4& zUSiM2qbqn!ikLdd#-ncs=qUfA3A=GZ*_$twrx;0^{KH74gxJ#S%$E-|(AbSS2g2N% zpDk5~jRtlRn&1E=m8MC$pb~qJkZK>CY?PR@b!VEO9PxsO%QkmVvgG-jGP(1%=>$oq zws;P+8Lh0Oiicl3?_C7*nK&R0D<>sA22}R?^b*(&5>5s}KtiSdxCr~4R(QSqBQ5j$ zm1V}REo#yETRfnR^3!A#jf1+yip8$;4Ls_O9rAdC-IzcX+~Hu8L(j5Z>6hI8df)M* zI{%6l!)h_64{QUpbT6Xx>i;ZB=&LdWkvdz1tGHLjlan*cIfDX4Ajk>R{i&q=*NI(2tMhAn=jOi7S5uOg?wK$tlnAaGms8vG;e&v+J258cMNpc2X&9 zA+fh{dhmPPf!%-G%{>kO$!2hwN_!7`xHdlBVzFP;xs|*J)NDi1M_Th|#yPwasxAGHzalJR)2zr02LdTr#7J ztIqIIwZp||CL3<%iSy1B-{en{YAr5L>%D@lrEP}m_Y?;5r7X97T zc_sJ~XCq3`8`s%BZtThK)O*&-VFDwTf?P`S4wIn9Hx7XwFf_3mU7^dVu=zWg8bSjl`4cmocCIZM#JfV zSUb~I&YKsP9<}vdTr>oy{btMo53sI!-=e_F}c3z`{Iu=L6L*RXF*Kn}d`(Wsc*g&+I6%YA&~xMw3wvan5N* zK}j)0=T+fUdd(KZ7%H9F3jcFX!*51 z#x3UB;2+1hCc35ho>XeT-c2v)wcy21dVRW}ZE65K7ZPzAi?>>Ic9u(uljA^B+)#-0 zH^qj-d6IRpm7S3N#$DvdmfryCZ0dzKJX&>meb)T~HFCpXdUpB2u>Vol#H_x6$c!x^ z4bS=^x$H@ijQW%?muMHo?WFRfM)}^xVUlH=$@6^-0m0v1Z$Hbwt2vU0r9a~{eGFxRy}6&k5PX=)l5pbc9m_EH@dfxuRJ-@o;||E_@T~Sx_?r! z74I}Sb+{$y?X(i1o4id{-u5C=wU0Ye{P*;u03|U#hC4$|Rh+)2eo8NnF9iML>kmR? z{cFC-U;L$6`%~vu?Xxk$JIv%;iECV_V{1T_{895S$aL&3Br%Ag@ixy3yvuLp{Ia78 zDbt@T383YQ(e_Io0MHScADRsPFSzt)mH#G*uC2z~6~AaYd)7v;Q{^#xY-e>UbN#vb zEI%9^;`vd>A6GMseI@I6gx-x%QAZ-r;QEo?&F_9UzN<_3+dmtPgH*3<( zs?3>-(&`?yOtn{?x@6CBS$O((jp|)%y}O~0>>ggnVo2T;(d&Aj&3j5*)YtiKo}aIu z&e&}AuMCfG(hzUzBNGzX9sSO_|2Q-q%8X_PzkL2kL5UObh1bFJ=dCI2#5jXBe>5^V zcymu9()85}B~w#ZzK7iwfUU#$Afia*`pX`fnG$)NtjO<$cp~~?c<^BWqtghbUL)OWX+A6CtKE~5 zW_naR#nI8S7T11OvMe2;ZW%qSytw`2EBf(*T)&S(`mVofmGdA?#AHVOO0i5~9oJTD zXsV=O_L_bv)5oxZZuMS*8SlW#a1Cw6uceTaqbs9V%$2iuJ0zOgCl4`jAc0U2`;eG zK;AU74reJ#ag~~~b^s$?%y1$2i=; z1Hw*vst9@U^D9>Z$vcWGM`9~e1e5Bj#CP^jL(X$g``l^lM2_^mj&t>R7pZHfMx#ve ze0zW9E4SK>-gDTnvRoH?K$vb-QgUj)Ul8(vjQIS7C-1 z1EzN;%a?*?mMb0`@A|%qNqyxz;5EA#LG;A0wU4s;?3b0Mt!|_7^u>sLoPgOOV-`!* z2aF=4e`R0n=lFQ7kwKX*>4qddtkphKGe2dA!7Fm7u9^x|qs(=G~g|qUkNxC zK~lHh<%7!kB?nvV@KlUN)0TnFxKV+_v~@(IJLtpwbK^OuQ6{|j_~5kC9RsfONv_g`2{$_oh#xM literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..5463005a3a276399ed83f7fb5e354fec104ac287 GIT binary patch literal 132536 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 z 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

43p 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

04^qc;q5Q;>CDMw4$Wii!AM5` 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 N$xACsl}eZd|1Xtl48H&X literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..058b46740f134a36bc201319990ae1eedfee5e35 GIT binary patch literal 61743 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 Ju2!`C_+RPaE8hSB literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..b3aa6ae57ddafd10cec6cd0b2961aec635fcfc04 GIT binary patch literal 57804 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 Z{{UO=nCLUJAH4to002ovPDHLkV1kulxD5aR literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..28f5e61b74ed44f725aab52ca8530c23e585170d GIT binary patch literal 91006 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 z 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

5+Vr6TKBC$$zrGheDsYeQ;#4}}rp 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 Y

Q5Q>PW!ByeKQGOz>V+rKU)5C(xy6U6ep;P8ykS( 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 KszSo#-TwpA*5|SS literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..15373c93a0f637cc7c2c0f65b9ef5e2b175e04b5 GIT binary patch literal 48253 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