perf(node): the Node shell runs at half the Python shell's throughput
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Ambito
- backend, performance
Direzione di ricerca
Start by profiling one job through the Node shell in crates/flexiq-node and sdks/node, then compare its path with the Python shell for the same scenario. Check the napi boundary, codec defaults, concurrency semantics, and per-job versus per-batch work, using the benchmark comparison as the first measurement. Done means the throughput gap is explained; fix it with a regression test if it is a shell bug, or update the Node benchmark concurrency_model if the semantics differ.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Epic: #958
Why
Same core, same backend, same scenario, same machine, same run:
| entrant | enqueue/s | completed/s | p50 | p99 |
|---|---|---|---|---|
flexiq-redis (Python) |
8.1 | 2.1 | 6839 ms | 8946 ms |
flexiq-node-redis (Node) |
7.5 | 1.1 | 9800 ms | 19012 ms |
Roughly half the throughput and double the tail, against the same Rust code and the same Redis.
Whatever that is, it is in the shell — crates/flexiq-node or sdks/node — not in the storage
layer both shells share, and it is therefore likely to be both cheap to find and independent of
everything else under #958.
The SQLite rows show the same sign with a much smaller magnitude, which is consistent with a
fixed per-job overhead that only becomes visible once each job is already expensive.
Shape
Profile one job end to end through the Node shell and compare the work done against the Python
shell's path for the same job. Candidates worth ruling in or out first, cheapest before
deepest:
- an extra hop per job in the napi boundary — the Rust to JS to Rust callback is a
ThreadsafeFunctionplusPromise<Buffer>over atokio::oneshot - serialization: the two shells do not default to the same codec
- concurrency semantics —
concurrency: 4in the Node worker againstworkers=4threads in
Python is the same number and not necessarily the same amount of parallelism in flight - anything per job that is per batch on the Python side
Done when
- the gap is explained, whether or not it is fixed in this issue
- if it is a shell bug, it is fixed and a regression test covers it
- if it is a semantic difference in what
concurrencymeans, the benchmark's
concurrency_modelstring for the Node entrant says so, because that field exists to stop
exactly this kind of comparison being silently wrong
- Lingua principale
- Rust
- Stelle
- 20
- Fork
- 2
- Merge medio
- 9h 49m
- PR unite (30g)
- 72
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ByteVeda/flexiq
-
docs enhancement P1
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement P2 storage
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement epic P1 rust storage
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
I maintainer di solito rispondono entro 1 giorno
-
P2 rust tests
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
deployment epic P2
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di ByteVeda/flexiq
Issue simili
-
documentation priority:p2 type:chore
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
I maintainer di solito rispondono entro 1 giorno
-
dispatch:sol-high documentation
Difficoltà 1/5 1-3 ore Idoneità per principianti 85/100
carrick-sh/carrick#768 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
correctness postgres tursopg
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
tursodatabase/turso#10442 ·
I maintainer di solito rispondono entro 1 giorno
-
Incorrect "Share Decks" linkAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
ankitects/anki#5864 · 1 reazione ·
I maintainer di solito rispondono entro 2 giorni
-
area: config effort: S good first issue P3 type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
ferenyl/azuredevopstui#63 ·