Benchmark the service#
Compare the same specs, channels and platforms against the same metadata. Separate cold startup, uncached solves, persistent index reuse and full-result retrieval.
From a source checkout, pixi run -e test bench runs the existing solve and serialization benchmarks. They may access channel metadata. For HTTP measurements, choose one profile and restart the server after changing it:
Profile |
|
|
|---|---|---|
Full result reuse |
256 |
0 |
Isolated process miss |
0 |
0 |
Persistent worker miss |
0 |
1 |
Use CONDA_PRESTO_RESULT_CACHE_BACKEND=memory so a persistent store cannot supply hidden hits. Keep startup targets narrow and disable rate limiting for the local measurement:
export CONDA_PRESTO_CHANNELS=conda-forge
export CONDA_PRESTO_ALLOWED_CHANNELS=conda-forge
export CONDA_PRESTO_PLATFORMS=linux-64
export CONDA_PRESTO_RATE_LIMIT=0
conda presto --serve
After readiness, send one request to establish the selected cache state. Then record repeated timings:
for run in 1 2 3 4 5 6 7 8 9 10
do
curl --fail --silent --show-error \
--get http://127.0.0.1:8000/resolve \
--data-urlencode 'spec=zlib' \
--data-urlencode 'channel=conda-forge' \
--data-urlencode 'platform=linux-64' \
--output /dev/null --write-out "$run %{time_total}\n"
done
Report the median, range and sample count with component versions, virtual-package overrides, metadata freshness, process state and cache configuration. Measure /r/<hash> separately because it skips the freshness check performed by /resolve. Compare one-instance and multiple-instance workloads with equal request counts and independent metadata caches before claiming scaling gains.
See Performance for interpretation.