MultiverseSocial · /dev/tachyondb

TachyonDB status

Live probe + published benches only. No fabricated timings. Observed 2026-10-10 23:44:46 UTC.

On-command probe

TargetResult
TCP 127.0.0.1:7447 (TachyonDB / tachyon8)ACCEPT (listening)
POSIX shm /dev/shm/TacyonMempresent

Override with env TACHYON_HOST / TACHYON_PORT in Apache.

Fancy status page · Pod Configuration

Published benches (cited, not re-run here)

Sources staged on the build box. Re-run benches on Quasar/Snapdragon before quoting new numbers.

bql-bench-summary.md

# BQL wire-only bench — Snapdragon DESKTOP-2QI0DQ0 (2026-09-25)

**Label:** wire/server only. Cont / display / URLChannel stack is **out of scope** and sits *above* these numbers.

## Machine

| Item | Value |
|------|-------|
| Host | DESKTOP-2QI0DQ0 (machineId `1c1ee4ab-63e1-444f-9e24-82a7b773e9f8`) |
| OS | Windows 11 WoA (MSYS_NT-10.0-22631), user `ajswa` |
| CPU | Snapdragon (TM) 7c Gen 2 @ 2.55 GHz |
| tachyon8.exe | **native ARM64** (`PE32+ Aarch64`) — not x64-under-emulation |
| Bench clients | native ARM64 (`tachyon_bench.exe`, `sqlite_blob_bench.exe` via clangarm64) |
| SQLite | 3.42.0 (`mingw-w64-clang-aarch64-sqlite3`) |
| Server | `tachyon8.exe` listening `127.0.0.1:7447`, auth `admin`/`tachyon` |
| n | 2000 (1 MiB GET/SELECT: n=200) |
| Warm-up | 50 ops discarded before timed loops |

Raw console: [`bql-bench-snapdragon-2026-09-25.txt`](./bql-bench-snapdragon-2026-09-25.txt)

## Comparison table (p50/p99 in ms, matching README style)

| Side | Op | Size | ops/sec | p50 | p99 | mean | wall |
|------|-----|------|---------|-----|-----|------|------|
| **Tachyon8** wire | PAGE_GET | 16 B | **2197** | 0.344 ms | 1.206 ms | 0.454 ms | 0.910 s |
| **Tachyon8** wire | PAGE_PUT | 16 B | **2151** | 0.288 ms | 1.232 ms | 0.456 ms | 0.930 s |
| **Tachyon8** wire | PAGE_GET | 4 KiB | **2217** | 0.297 ms | 1.225 ms | 0.449 ms | 0.902 s |
| **Tachyon8** wire | PAGE_PUT | 4 KiB | **2020** | 0.323 ms | 1.360 ms | 0.487 ms | 0.990 s |
| **Tachyon8** wire | PAGE_GET | 1 MiB | **198** | 4.161 ms | 9.757 ms | 4.826 ms | 1.011 s |
| **SQLite file** WAL | SELECT BLOB | 16 B | **94066** | 0.006 ms | 0.037 ms | 0.007 ms | 0.021 s |
| **SQLite file** WAL | INSERT OR REPLACE | 16 B | **2908** | 0.066 ms | 1.459 ms | 0.340 ms | 0.688 s |
| **SQLite file** WAL | SELECT BLOB | 4 KiB | **34899** | 0.009 ms | 0.074 ms | 0.019 ms | 0.057 s |
| **SQLite file** WAL | INSERT OR REPLACE | 4 KiB | **1680** | 0.105 ms | 1.568 ms | 0.592 ms | 1.190 s |
| **SQLite file** WAL | SELECT BLOB | 1 MiB | **515** | 0.907 ms | 8.509 ms | 1.583 ms | 0.389 s |
| **SQLite :memory:** | SELECT BLOB | 16 B | 364551 | 0.002 ms | 0.009 ms | 0.002 ms | 0.005 s |
| **SQLite :memory:** | INSERT OR REPLACE | 16 B | 41114 | 0.010 ms | 0.220 ms | 0.024 ms | 0.049 s |
| **SQLite :memory:** | SELECT BLOB | 4 KiB | 225569 | 0.003 ms | 0.005 ms | 0.003 ms | 0.009 s |
| **SQLite :memory:** | INSERT OR REPLACE | 4 KiB | 17547 | 0.024 ms | 0.390 ms | 0.056 ms | 0.114 s |
| **SQLite :memory:** | SELECT BLOB | 1 MiB | 309 | 1.912 ms | 25.700 ms | 2.656 ms | 0.648 s |

File DB path: `%TEMP%/bench_pages.db` → `C:/Users/ajswa/AppData/Local/Temp/bench_pages.db`  
SQLite pragmas: `journal_mode=WAL`, `synchronous=NORMAL`.

## How to read this (honesty)

1. **Different transport.** Tachyon numbers are **persistent TCP loopback + BQL PAGE opcodes + single-threaded server**. SQLite numbers are **in-process library calls** (no socket, no wire framing). This is a fair *page/BLOB store* comparison, **not** a SQL-parse contest and **not** “same IPC.”
2. **SELECTs:** SQLite (especially `:memory:`) wins by 10–100× because there is no round-trip. Tachyon p50 ≈ 0.3 ms is mostly loopback RTT + server path.
3. **PUTs / INSERTs (file):** Closer. Tachyon PAGE_PUT 4 KiB (**2020** ops/s) beat SQLite file INSERT 4 KiB (**1680** ops/s) on this run — WAL/fsync-ish cost on disk vs in-memory arena + TCP.
4. **Cont sits above these numbers** (ContainerChannel / URLChannel / display). Do not quote this table as end-to-end Cont throughput.
5. **Real numbers only** — both sides exited 0. No invented values.

## Exact commands run

```bash
# Server (already built native ARM64)
cd /home/ajswa/nxw64d/channels7/bql/tachyon8/build
./tachyon8.exe   # listen 127.0.0.1:7447

# Clients built:
export PATH=/clangarm64/bin:/usr/bin:$PATH
cd /c/Users/ajswa/bql-bench
clang -O2 -std=c99 -Wall -o tachyon_bench.exe tachyon_bench.c tachyon_page.c -lws2_32
pacman -S --needed --noconfirm mingw-w64-clang-aarch64-sqlite3
clang -O2 -std=c99 -Wall -o sqlite_blob_bench.exe sqlite_blob_bench.c \
  -L/clangarm64/lib -I/clangarm64/include -lsqlite3

# Bench
./tachyon_bench.exe 127.0.0.1 7447 2000 1
./sqlite_blob_bench.exe 2000 "$TEMP/bench_pages.db" 1
```

Sources staged under `/workspace/bql-bench/` and `C:\Users\ajswa\bql-bench\`.

## Caveats / follow-ups

- tachyon8 started with `[WARN] no config; using defaults` (still bound 7447).
- Did **not** kill Cont/BlitzBrowse (none were bound to 7447 when we started).
- Optional multi-client Tachyon (README 16-client) not re-run here — single client only.
- Linux native README baseline (PAGE_GET 4 KiB ≈ 5307 ops/s, p50 0.059 ms) is a different CPU/OS; Snapdragon 7c Gen 2 loopback is slower as expected.

tachyon README benches excerpt

# TachyonDB
## Layout
## channels7 integration notes
## Build (MSYS2 UCRT64)
# -> build/tachyond.exe
## Build (Linux cross + Wine test)
# needs: binutils-mingw-w64-x86-64 gcc-mingw-w64-x86-64 wine
## Build (native Linux x86-64 — production Linode)
# → build/tachyond  (static, no libc; raw syscalls in plat_linux.s)
## Config (`tachyon.conf`)
## Run
## Apache module
## Pages / URLChannel
`PAGE_PUT` / `PAGE_GET` (opcodes `0x33` / `0x34`) store and fetch BML bodies as
## UPNPChannel client API
# Linux: build tachyond + test, run against a private server (temp dir, free port)
# Windows (UCRT64 / mingw-w64)
# link: upnp_tachyon.o tachyon_page.o -lws2_32
## Design choices
## Measured throughput (2026-09-24, post Nagle/buffer fix)
Real numbers only (loopback). C `tachyon_bench` persistent connection:
| Target | Test | ops/sec | p50 | p99 |
| Linux native | PAGE_GET 4 KiB, 1 client, n=3000 | **5307** | **0.059 ms** | 0.240 ms |
| Linux native | PAGE_GET 4 KiB, 16 clients, n=2000 | **6661** | **0.059 ms** | 0.242 ms |
| Linux native | PAGE_GET 16 B, 1 client, n=3000 | **6676** | **0.059 ms** | 0.246 ms |
| Wine server + Linux client | PAGE_GET 4 KiB, 1 client, n=2000 | **9542** | **0.101 ms** | 0.162 ms |
| Wine server + Wine client | PAGE_GET 4 KiB, 1 client, n=1500 | **5380** | **0.180 ms** | 0.271 ms |
| Wine server + Wine client | PAGE_GET 4 KiB, 16 clients, n=800 | **4863** | **0.195 ms** | 0.378 ms |
## Known limitations
## Tachyon8 (ARM64)

Run benches (operator)

# Local TacyonMem
cd /workspace/tacyonmem && make && ./tacyonmem_daemon &

# TachyonDB Linux native
cd /workspace/tachyon && bash build_linux.sh
./build/tachyond
# then: python client/tachyon_client.py --port 7447 bench -n 1000
# or C: /workspace/bql-bench/tachyon_bench (see bql-bench-summary.md)

ChannelVault sticky bits: Redis podsticky:<user> · TacyonMem /pod/<user>/sticky

Hits--