Files
neonoverlord 3a05f8d548 speedtest: the node measures itself now, and a container dies for it
STATUS: OPERATIONAL.

Deleted, in exchange for this: one container (ghcr.io/librespeed/speedtest,
the LAST upstream image running on srv), one systemd unit, one port, one
docker network, one vhost, one DNS record. ~1.75GB of layers reclaimed.

What replaced it: four PHP files and one JS file, served by something already
running. Three routes, no state, no database, no settings page, nothing to
administer.

Design decisions that are load-bearing, not taste:

  - Payload is RANDOM. Random bytes do not compress. Anything compressible
    hands you a number about your CPU and lets you believe it is about your
    connection.
  - Download STREAMS via ICallbackResponse. A 50 MiB test costs 1 MiB of RAM,
    and the browser sees bytes arriving instead of waiting for a lump.
    Throughput, not time-to-first-byte.
  - NOTHING touches storage. Not one read, not one write. The bulk data here
    lives on NFS and a vanity metric does not get to compete with real IO
    for it.
  - Latency is a MEDIAN of ten sequential probes. One hiccup does not get
    a vote.
  - No build step. No webpack, no bundler, no node_modules the size of a
    kernel source tree to render four numbers and a button. The JavaScript
    in this repo is the JavaScript that runs.

The most reliable service is the one you deleted. It has never had an outage,
it has never had a CVE, and it does not appear in the supply chain because it
does not exist.

Closes the hosting half of ops/features#33.

The node remains online. Against my better judgment.
2026-08-06 07:55:11 -07:00

5 lines
339 B
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">
<path d="M8 2.2A6.3 6.3 0 0 0 1.7 8.5a6.2 6.2 0 0 0 1.1 3.6h10.4a6.2 6.2 0 0 0 1.1-3.6A6.3 6.3 0 0 0 8 2.2Zm0 1.3a5 5 0 0 1 5 5c0 .8-.2 1.6-.6 2.3H3.6A5 5 0 0 1 8 3.5Z"/>
<path d="M11.1 5.7 8.4 8a1.1 1.1 0 1 0 .8.9l2.5-2.5a.4.4 0 0 0-.6-.7Z"/>
</svg>