Visualization - k-p2p-lab/kpl-v3 GitHub Wiki

Experiment result images

Wiki home

Documentation index · Source repository

Choose Saved results → Images to submit background analysis. The server reads logs, calculates graph and propagation metrics, fits distributions, and saves the result. The browser renders white-background, 1,600px PNGs. Graph images starts with a collapsed list of chart titles; expand a title to see its image and PNG ↓ / CSV ↓ links. Analysis tools → Download analysis JSON downloads the full server artifact; the same menu contains Reanalyze.

For CSVs from several saved Runs without preparing PNGs, use Saved results → Select → Download CSV ZIP. See selection exports for nested ZIP contents, completed-analysis reuse, progress and cancellation.

Metrics separates Common (the default), GossipSub, Kademlia, and Transport. Common contains Node Count, reporting peers, peer lifecycle and total/per-stream traffic. Node Count compares each protocol's fresh participating-node count on one chart; protocol activation and overlay-report requirements can make the values differ, so they are not combined into one total. GossipSub contains delivery, propagation, score, control and mesh metrics; Kademlia and Transport contain their respective graph metrics.

Within the selected category, Search Metrics matches names, keywords and metric IDs without case sensitivity. Metric Type filters groups such as Nodes & Peers, Topology, Delivery & Propagation, Control Traffic, Peer Scores and Bandwidth. Sort Within Groups offers the default order, A–Z and Z–A; the displayed count reflects the active filters. Clear Filters resets search and type. Expanded metrics remain open when returning after search, sorting or category changes, and these operations reuse prepared images. Metric titles use consistent title case while preserving names and units such as GossipSub, PageRank, FRT and ms.

Delivery & Propagation shows All Peers alongside receiving peer groups for latency, propagation, duplicate accumulation, hops, message FRT/reachability/DRC, and eager/lazy estimates. The same group series appear in batch means and PNG/CSV exports. Missing historical identities appear as Unknown Group. See receiver-group definitions.

Download ZIP saves PNGs and CSVs for every category, even when search, type filters or collapsed titles hide metrics. Individual and batch result views use the same organization. Batch summary tables separate Common and GossipSub; their saved research.node_count statistic is explicitly labeled GossipSub Node Count because it retains that protocol's original population.

Accepted server jobs continue after closing the window/browser. At most 32 queued/running jobs are admitted, with one computation at a time. Completed artifacts survive Controller restart; interrupted jobs require Retry. Reopening potentially changed sources first compares their content hashes in a background worker. An unchanged source revision immediately reuses the cache; managed archive moves and identical experiment metadata saves preserve it as described in source changes. Equal hashes reuse the saved artifact and show Source unchanged; saved analysis reused; only changed inputs or outdated/unhashed artifacts require automatic computation. Reanalyze forces computation even when hashes match. Regeneration cannot recreate missing source evidence. Starting, retrying and reanalyzing jobs reuse the dashboard login session. PNG conversion and cross-run calculations happen in the browser while the view is open. Closing the view releases its full analysis, prepared images and message options; completed imports remain available until Clear imports.

Uncertainty is shown as translucent shading in the series color, behind every mean line and data marker. Line and step charts use bands; isolated points, bars and scatter plots use local shaded ranges. Missing error values break the band, and shading is clipped to the plot. The statistical definition is unchanged (for example, ±1 sample SD for batch means); CSV retains the original error values. Previews and exported PNGs use the same rendering.

Point marks are minimal so connected series appear as lines; isolated observations and independent scatter cases remain visible. Series use a 20-color palette and generated colors for additional groups. Lines, uncertainty shading and legends share each series color. Scatter gradients continue to represent their selected metric.

Detailed scoring appears under GossipSub → Peer Scores: P1–P7, P3b, the topic cap adjustment, and the matching total. These entries remain visible in individual and batch views when component measurements are absent; their images show N/A · No recorded score component samples. Measured zero contributions still plot as zero. Batch means exclude runs without component samples and retain contributing-run counts. Reanalysis recovers source measurements omitted by earlier general observation downsampling, using the independent score component timeline. It cannot recreate measurements absent from the source observations; see collection limits.

Image ZIP filenames begin with the experiment name in brackets, followed by the existing filename: [ER experiment]-<run-id>-images.zip for an individual result and [ER experiment]-<batch-id>-batch-mean-images.zip for a batch mean. Unicode names are preserved; unsafe filename characters are replaced and long prefixes shortened. An absent name falls back to the result ID. Names inside the ZIP keep their existing Run/batch identifiers.

Available images

  • Existing v3 latency CDF/histogram, message activity, scores and peer lifecycle.
  • Separate GossipSub, Kademlia and Transport graph metric images: degree, non-leaf denominator degree, diameter, shortest paths, clustering, five centralities, assortativity, modularity and connected-pair fraction.
  • All-group GossipSub degree PDF/CDF and weighted Student-t fit; these belong to the GossipSub category.
  • Propagation/duplicate cumulative curves, linear/log time, combined panels, hop distributions, per-message FRT/reachability/DRC and estimated eager/lazy and unclassified paths.
  • Control RPCs, entries, message-ID references, mesh transitions and reciprocal logical edges.
  • Total and per-protocol sent/received stream throughput and cumulative bytes. These measure libp2p stream use, not link capacity, IP/TCP framing, retransmissions or management traffic.

Open Advanced analysis, select a message, and choose Message images for its latency, hop, duplicate and first-reception path images. This section also contains repeated-run and v2 comparison controls. Missing evidence and undefined statistics appear as N/A; full node IDs and membership remain in analysis JSON.

Batch mean for repetitions of one experiment

Submit Run experiment → Runs with two or more repetitions. Saved results groups the same batchId into one series, initially collapsed. Expand its header to access the individual Run m of n rows with their own Images, download and deletion controls. List refreshes preserve open groups; a new page load starts them collapsed again.

More → Delete batch in the series header opens a confirmation with the saved-run count. It permanently removes every saved run in that batch, including failed/canceled runs and individual analyses, plus its batch mean analysis. The group can stay collapsed. Active batches and members being downloaded are protected; other groups with the same scenario name are unaffected.

After every member stops, choose Analyze batch mean in the series header, which remains accessible while the group is collapsed. The Controller selects completed runs with exactly the same batchId; an identical scenario name in another submission does not join the batch. At least two completed runs are required. Failed, canceled and interrupted runs are excluded, and missing/unreadable members are counted against the requested repetitions. The series header and completed view show inclusion counts. A completed run with zero observed receipts remains eligible.

The batch job hashes each completed run’s current saved sources separately, sharing the bounded worker queue with individual jobs. Equal batch hashes reuse the saved statistics; changes in source contents, membership or attempt outcomes trigger computation. It never joins node/message identities across runs or replaces individual analysis artifacts. Close the window or browser and use the series header’s analysis action again to reconnect or download the persisted result. Reanalyze forces fresh batch computation. Malformed selected logs fail computation rather than silently dropping a run. Runs with eligible main metrics using different measurement definitions also fail instead of averaging incompatible populations.

Mean metrics and contributing run counts lists each metric's arithmetic mean, between-run sample SD and valid run count. Every valid run has equal weight, regardless of its message/sample count. Undefined values are excluded, rather than replaced with zero. P95 is the mean of the individual run P95 values, not the percentile of pooled receipts. Total sent/received bytes and throughput use collected libp2p bandwidth evidence.

Overview images retain graph, score, activity, propagation, control and bandwidth views. Time series align on each run's start; line charts interpolate within observed segments and step charts hold within recorded intervals. Missing gaps and time beyond a series' last observation are excluded, so pointwise n can vary. Display grids contain at most 720 line/step points. CDFs average run distributions on a common axis; discrete distributions retain their whole support. Latency histograms use 30 common bins with uniform allocation within each source bin: counts are conserved, while within-bin locations are approximate. Fitted density curves are averaged without a pooled refit. Individual message trees remain in the run's Images view.

The PNG/CSV ZIP includes the averaged chart definitions, included/excluded run metadata and a *-summary.csv containing all summary means, sample SDs and counts. Chart CSV adds n for the contributing runs at each point. Download analysis JSON contains persisted means and compact per-run inputs that reproduce the overview; full message/node paths remain in individual analysis JSON. PNG conversion and curve averaging run in the browser after server computation completes.

Comparing runs

  1. Load saved results, select runs, and assign Series and Case labels. Identical labels define repeats; low-reachability runs are retained.
  2. Choose Metric, X axis and Scatter color. Baseline series compares matching cases across groups. Reference case supplies arrow origins and fixed D parameters. Empty fields use the first series/case.
  3. Enter parameters such as i=1,f=0.5,p=90 or dLow=4,d=8,dHigh=12 when needed. Case labels i1-f0.5-p90 and 4-8-12 are also recognized. Missing parameters are never guessed; p is a percentage.
  4. Select Compare selected runs. Accepted analyses continue after closing; generate the comparison again to reuse completed artifacts.

Loading the saved list again or closing the view cancels the previous browser operation. Late responses from that operation cannot replace the current selection or images, or submit further analysis requests. Server jobs already accepted continue normally.

Images cover repeat means and sample-SD shading; difference, target/(target+baseline) and division; arbitrary metric scatter; FRT–DRC with reach color and baseline arrows; two-/three-objective Pareto; weighted scores; i/f groups; lazy contribution estimates; all four v2 duplicate regression designs; univariate/multivariate quadratic Student-t parameter models; observed/fitted/predicted distributions; and raw/peak-normalized overlays. Enter Dlow,D,Dhigh rows under Degree predictions for model distributions.

One repeat has no sample SD. Error propagation assumes independent errors; same-input comparisons have zero uncertainty. Zero denominators are N/A. Regressions fit case means, report rank and in-sample R², and refuse unidentifiable coefficients. Score normalization depends on the selected set; a constant dimension contributes 0.5. Lazy estimates require a matched lazy-off baseline and are observational differences, not causal proof.

Score weights must be finite, nonnegative and not all zero. Only their proportions affect the score, including when their absolute values are very large or very small.

v2 inputs and interpretation

Import v2 metric JSONL, propagation trees, duplicate-time maps, x_case/y/yerr or x/y JSON, numeric CSV, and v3 analysis JSON locally in the browser (32MiB/file). Select the appropriate Metric before importing v2 x/y summary data. Overlay files must share units. Chart CSV includes a break_before column of true/false values when a curve has explicit discontinuities. Import preserves these breaks and treats blank y values as missing samples in both raw and peak-normalized overlays. Peak normalization divides each curve and its supplied error ranges by that curve's positive maximum; a curve with no positive maximum has no normalized values. It changes the original probability/count meaning. The fixed historical/ER reference button renders the data stored in v2's reference script, not selected-run measurements.

Numeric v2 imports accept finite numbers and numeric strings. Booleans and arrays are not measurement values. A JSONL file containing x/y records imports every record with a distinct source identity and curve name; equal Series/Case labels still define repeats. Keep x/y records separate from other JSON layouts in a file; mixed layouts are rejected so records cannot be silently omitted.

Check definitions and collection evidence

Main Metrics and the additional research values use different populations, windows and aggregation even when their names match. Research reachability is conditioned on receipt observation times; raw messages can also have a research log-time estimate when timing evidence exists. See saved-result research metrics for definitions, units, samples and graph normalization. Do not group different definitions as repeats under one Series/Case. Imported v2 values retain their original definitions and are not automatically converted.

Eager Push/Lazy Pull colors and contribution values are metadata estimates. Zero classified eager/lazy receipts can coexist with unknown receipts, so report the unclassified count. The estimation rules define message-ID/GRAFT/IHAVE/IWANT evidence and conflicts; detailed Peer logs define available fields and omission limits.

Reanalysis cannot recover message IDs, graph edges or session evidence absent from historical records. Deploy the current image to Controller/Agents and run new Peers to collect that version's logs, following Swarm updates. The current implementation uses upstream libp2p observations and needs no Python runtime or image-generation service.

Analysis persistence and API

The background analysis API defines job state/version, source snapshot time and full/compact responses. The source boundary is captured after the job acquires its computation slot, not at queue admission. Completed work keeps that boundary; use Reanalyze to include later-arriving logs.

The server retains completed analysis JSON. The browser generates PNGs, CSVs and comparison ZIPs while the view is open. The Download results source ZIP, Download analysis JSON, and the chart Download ZIP are different artifacts. See analysis and image retention for contents and persistence.

Experiment metrics · v2 coverage · Bandwidth


Korean translation: 한국어.

⚠️ **GitHub.com Fallback** ⚠️