MultiverseSocial · /dev/tachyondb
Live probe + published benches only. No fabricated timings. Observed 2026-10-10 23:44:46 UTC.
| Target | Result |
|---|---|
| TCP 127.0.0.1:7447 (TachyonDB / tachyon8) | ACCEPT (listening) |
| POSIX shm /dev/shm/TacyonMem | present |
Override with env TACHYON_HOST / TACHYON_PORT in Apache.
Sources staged on the build box. Re-run benches on Quasar/Snapdragon before quoting new numbers.
# 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.
# 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)
# 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