On Mon, Sep 14, 2026 at 2:08 PM Peter Geoghegan <[email protected]> wrote:
> The remaining problems all relate to prefetching itself,
> particularly issues with the read stream's heuristics that certain
> index scans run into. I have a WIP patch that fixes some of these
> problems by deduplicating nearby read stream block requests, but that
> isn't quite ready to post yet.
In case it helps when testing that patch, here is a small,
deterministic case of that kind, measured with v36 on a device with
added read latency. The data has the shape of Tomas's low "fuzz" data
sets [1]; what is new here is the latency and the counters of each
run.
Data: 8M rows, 163,266 heap pages. Two indexes over the same 400k
rows and the same heap range:
t_id: on id, no jitter
t_b: on b = id plus a deterministic jitter of +/-50 rows
pg_stats reports correlation 1.0000 for both columns. The callback
skips a block only when it equals the previous one
(heapam_indexscan.c, v36-0006), so the block numbers each index hands
to the read stream, computed from the data, are:
t_id: 8,164 distinct blocks, 8,164 block numbers
t_b: 8,166 distinct blocks, 136,837 block numbers,
127,380 of them not contiguous with the previous one
The 128,671 repeats match master's "shared hit=128671" for the same
scan.
Plain index scans with a cold cache, master 4545cee303c against the
same commit plus v36. The latency comes from dm-delay under ext4: an
8 kB O_DIRECT read takes 2.27 ms. Both scans read the same 9,262
blocks. Median of 5 runs, ms:
io_method=worker, eic 16 (the defaults)
t_id: master 653, v36 318
t_b: master 693, v36 804
io_method=io_uring, eic 16
t_id: master 647, v36 207
t_b: master 698, v36 681
io_method=io_uring, eic 64
t_id: master 656, v36 202
t_b: master 687, v36 730
So:
- With the default io_method=worker, v36 is slower than master on
t_b: 1.16x here, and 1.24x in a separate run of 10 rounds (median
715 vs 890 ms; v36 was slower in all 10 rounds).
- With io_uring the regression goes away, but so does the gain: t_b
runs at master's speed, while t_id, which reads the same blocks,
is 3.1x faster.
The worker result does not come from the size of the worker pool.
With io_min_workers = io_max_workers = 8 or 32, and with eic 64, v36
stays 1.11x to 1.16x slower than master on t_b.
What EXPLAIN (IO) reports for t_b with v36 (range over the runs):
worker, eic 16: I/O count 21,510-24,845, waits 486-544
io_uring, eic 16: I/O count 64,898-65,087, waits 400-422
io_uring, eic 64: I/O count 106,357-106,766, waits 416-472
For t_id it is always 514 I/Os of 15.88 blocks, with 8-11 waits
under io_uring and 120-173 under worker.
The device itself saw almost the same reads in every case: 690
requests of about 110 kB for master and for v36 with io_uring, and
777-812 slightly smaller ones for v36 with worker. So, as
Andres said [2], no second read is started for a block that is
already being read. The repeats cost time inside the stream, not on
the device.
My reading of read_stream.c, which I have not measured separately:
io_count goes up every time StartReadBuffers() returns need_wait, and
that also happens when the block's read is already in progress from
an earlier request of the same stream. Such a request takes one of
the max_ios slots ("in-progress=15.97" with eic 16, 63.8 with eic 64)
without starting a read, so few distinct reads are in flight. A
larger eic lets more repeats into the window, not more reads. If that
is right, it is the part that deduplicating nearby requests would
remove.
Other results, for completeness:
- On the local NVMe without added latency, t_b showed no clear time
difference (the ranges overlap), which is why I added the delay.
- On an uncorrelated index (20k rows, 20,057 blocks), v36 was 2-3x
faster than master on the local NVMe, and 7-8x faster with 1 or
2 ms of latency (3.2-3.7 s against 23.4-24.7 s at 1 ms; 5.6 s
against 43.6-45.4 s at 2 ms).
Not measured: real cloud storage (the delay device adds latency
only, in whole milliseconds, with no IOPS or throughput limit), and
jitter widths other than +/-50 rows.
Attached are the scripts (the builds, the data, the block sequence,
the delay device and the runs) and the raw output of every run. That
includes one set that is not valid, an IOPS cap that btrfs did not
enforce, which is marked as such.
[1]
https://www.postgresql.org/message-id/[email protected]
[2]
https://www.postgresql.org/message-id/tpzzzmjo22mon54wi3443rl55jvdk6jqckkxmr32vbtqv2xigk@vu3ykzppyjsc
--
Manu
Scripts used for the measurements in the reply (bash + psql, Linux).
Order: build.sh (two installs from one master commit), setup.sh (one data
directory, 8M rows), blockseq.sql (the block sequence each index hands to the
read stream), slowdisk.sh (a block device with a fixed per-read delay),
bench.sh (one run per build and scenario), bench_latency.sh and
bench_ioconf.sh (the loops over read delay and I/O settings).
Paths assume ~/pgpf; port 5690; sudo is needed only by slowdisk.sh.
======== build.sh ========
#!/bin/bash
# Build two PostgreSQL installs from the same master commit: without and
# with the v36 index prefetching series. -O2, no assertions, so timings
# are comparable with the ones posted on the thread.
set -eu
BASE=${BASE:-4545cee303c}
SRC=$HOME/Proyectos/postgresql
W=$HOME/pgpf
build() { # name worktree
local name=$1 tree=$2
cd $tree
# --with-liburing was added after the first measurements (io_method=worker
# results do not depend on it); it makes io_method=io_uring available
./configure --prefix=$W/i-$name --without-icu --with-liburing CFLAGS='-O2' >
$W/configure-$name.log 2>&1
# without --enable-depend a changed pg_config.h rebuilds nothing: start clean
make -s clean > /dev/null 2>&1
make -j"$(nproc)" -s > $W/make-$name.log 2>&1
make -s install > $W/install-$name.log 2>&1
make -C contrib/pg_prewarm -s install >> $W/install-$name.log 2>&1
make -C contrib/pg_buffercache -s install >> $W/install-$name.log 2>&1
echo "$name built: $($W/i-$name/bin/postgres --version)"
}
V36=${V36:-$(cd "$(dirname "$0")" && pwd)/v36} # the ten v36-*.patch files
from the thread
[ -d $W/src-base ] || git -C $SRC worktree add -q --detach $W/src-base $BASE
if [ ! -d $W/src-v36 ]; then
git -C $SRC worktree add -q --detach $W/src-v36 $BASE
git -C $W/src-v36 am -q $V36/*.patch
fi
build base $W/src-base
build v36 $W/src-v36
echo BUILD-DONE
======== setup.sh ========
#!/bin/bash
# One data directory for all three builds (same catversion): the data is
# identical and only the server binary changes between runs.
#
# t.a is a permutation of id: index order unrelated to heap order.
# t.b is id plus a deterministic jitter of +/-50 rows: nearly correlated,
# so consecutive index entries keep returning to the same few heap
# pages (A, B, A, B), which the callback's "same block twice in a row"
# check does not collapse.
set -eu
W=$HOME/pgpf
PG=$W/i-base/bin
D=$W/data
PORT=5690
rm -rf $D
$PG/initdb -D $D -U postgres >/dev/null
cat >> $D/postgresql.conf <<EOF
port = $PORT
unix_socket_directories = '/tmp'
shared_buffers = 512MB
track_io_timing = on
max_parallel_workers_per_gather = 0
jit = off
autovacuum = off
EOF
$PG/pg_ctl -D $D -l $D/log -w start >/dev/null
$PG/psql -h /tmp -p $PORT -U postgres -XAq <<'SQL'
CREATE EXTENSION pg_prewarm;
CREATE TABLE t (id int, a int, b int, filler text);
INSERT INTO t
SELECT i,
(i::bigint * 2654435761 % 8000000)::int, -- permutation of
0..N-1
i + ((i::bigint * 7919) % 101)::int - 50, -- +/-50 row jitter
repeat('x', 120)
FROM generate_series(1, 8000000) i;
CREATE INDEX t_a ON t (a);
CREATE INDEX t_b ON t (b);
CREATE INDEX t_id ON t (id); -- same heap range,
no jitter
VACUUM (FREEZE, ANALYZE) t;
SELECT 'heap pages ' || pg_relation_size('t') / 8192,
'size ' || pg_size_pretty(pg_relation_size('t')),
'corr a ' || round(correlation::numeric, 3)
FROM pg_stats WHERE tablename = 't' AND attname = 'a';
SELECT 'corr b ' || round(correlation::numeric, 3) FROM pg_stats WHERE
tablename = 't' AND attname = 'b';
SQL
$PG/pg_ctl -D $D -m fast -w stop >/dev/null
echo SETUP-DONE
======== blockseq.sql ========
-- The sequence of heap block numbers an index scan hands to the read stream,
-- computed from the data, for the two indexes over the same heap range.
-- nbtree returns equal keys in heap TID order, so (key, ctid) is index order.
-- "handed to the stream": the callback skips a block equal to the one just
-- before it, so only changes of block number count.
-- "breaks": a change to a block that is not the next one, i.e. where two
-- consecutive requests cannot be combined into one I/O.
WITH scan AS (
SELECT 'id' AS idx, (ctid::text::point)[0]::bigint AS blk,
row_number() OVER (ORDER BY id, ctid) AS n
FROM t WHERE id BETWEEN 1000000 AND 1399999
UNION ALL
SELECT 'b', (ctid::text::point)[0]::bigint,
row_number() OVER (ORDER BY b, ctid)
FROM t WHERE b BETWEEN 1000000 AND 1399999
), seq AS (
SELECT idx, blk, lag(blk) OVER (PARTITION BY idx ORDER BY n) AS prev FROM scan
)
SELECT idx,
count(DISTINCT blk) AS
distinct_blocks,
count(*) FILTER (WHERE prev IS NULL OR blk <> prev) AS
handed_to_stream,
count(*) FILTER (WHERE blk <> prev AND blk <> prev + 1) AS breaks
FROM seq GROUP BY idx ORDER BY idx DESC;
SELECT attname, round(correlation::numeric, 4) AS correlation
FROM pg_stats WHERE tablename = 't' AND attname IN ('id', 'a', 'b') ORDER BY
attname;
SELECT pg_relation_size('t') / 8192 AS heap_pages;
======== slowdisk.sh ========
#!/bin/bash
# A block device with a fixed per-read latency, to stand in for a cloud
# volume (EBS gp3 reads take roughly 0.5-1 ms; a local NVMe ~0.05 ms).
#
# file (nocow, so btrfs neither compresses nor caches it separately)
# -> loop device with direct I/O (no second page cache below ext4)
# -> dm-delay (every read delayed by READ_MS, writes not delayed)
# -> ext4, mounted at $MNT
#
# dm-delay delays each bio by a timer, so concurrent reads overlap: this
# models latency, not a throughput cap, which is what prefetching hides.
# dm-delay only takes whole milliseconds.
#
# usage: slowdisk.sh up | down | setdelay <ms> | status
set -eu
W=$HOME/pgpf
IMG=$W/slowdisk.img
MNT=$W/slow
NAME=pgpf_slow
SIZE=6G
loopdev() { losetup -j "$IMG" -O NAME -n | head -1; }
table() { # read_ms
local dev sectors
dev=$(loopdev)
sectors=$(sudo blockdev --getsz "$dev")
echo "0 $sectors delay $dev 0 $1 $dev 0 0"
}
case ${1:-status} in
up)
sudo modprobe dm-delay
if [ ! -e "$IMG" ]; then
touch "$IMG"; chattr +C "$IMG" # must be set while the file is empty
fallocate -l $SIZE "$IMG"
fi
[ -n "$(loopdev)" ] || sudo losetup --direct-io=on -f "$IMG"
sudo dmsetup create $NAME --table "$(table 0)"
sudo blkid /dev/mapper/$NAME >/dev/null || sudo mkfs.ext4 -q
/dev/mapper/$NAME
mkdir -p "$MNT"
sudo mount -o noatime /dev/mapper/$NAME "$MNT"
sudo chown "$(id -u):$(id -g)" "$MNT"
;;
setdelay)
# swap the table in place; the filesystem stays mounted
sudo dmsetup suspend $NAME
sudo dmsetup load $NAME --table "$(table "$2")"
sudo dmsetup resume $NAME
;;
down)
mountpoint -q "$MNT" && sudo umount "$MNT"
sudo dmsetup remove $NAME 2>/dev/null || true
dev=$(loopdev); [ -z "$dev" ] || sudo losetup -d "$dev"
;;
status)
sudo dmsetup table $NAME 2>/dev/null || echo "no $NAME"
losetup -j "$IMG" || true
;;
esac
======== bench.sh ========
#!/bin/bash
# Plain index scans with I/O, three builds from one master commit:
# base master (4545cee303c)
# v36 master + v36 series (heap prefetching with READ_STREAM_DEFAULT)
# v36full v36 with that one call changed to READ_STREAM_FULL
#
# Method:
# - one data directory, only the server binary changes
# - build order rotated every round, so cache warm-up is not attributed
# to any one build
# - before every run: server stopped, every data file evicted from the
# kernel page cache (posix_fadvise DONTNEED), server started inside a
# memory cgroup so the table cannot live in the host page cache
#
# Scenarios:
# cold_uncorr t.a, index order unrelated to heap order, 20k rows
# cold_near t.b, nearly correlated (+/-50 row jitter), 400k rows
# cold_corr t.id, the same 400k rows and heap range, no jitter
# warm25_uncorr t.a after loading the index and 20% of the heap pages
# (8 of every 40 blocks) into shared_buffers, so hits and
# misses interleave along the scan
#
# Environment:
# SCENARIOS, BUILDS which to run
# D data directory (default ~/pgpf/data)
# PGOPTS extra server options, e.g. "-c io_method=io_uring"
# STATDEV a /sys/block name: also report the read requests that
# reached that device during the query
# IOPS, IODEV cgroup read IOPS cap; NOT enforced on btrfs here
#
# usage: bench.sh [rounds] [MemoryMax]
set -u
R=${1:-3}
MEM=${2:-900M}
W=$HOME/pgpf
D=${D:-$W/data} # D=$W/slow/data runs on the delayed device (slowdisk.sh)
PORT=5690
OUT=${OUT:-$(dirname "$0")/results.txt}
evict() {
python3 - "$D/base" <<'PY'
import os, sys, pathlib
for f in pathlib.Path(sys.argv[1]).rglob("*"):
if f.is_file():
try:
fd = os.open(f, os.O_RDONLY); os.fsync(fd)
os.posix_fadvise(fd, 0, 0, os.POSIX_FADV_DONTNEED); os.close(fd)
except OSError:
pass
PY
}
run() { # build scenario
local b=$1 s=$2 PG=$W/i-$1/bin col lo hi opts
$PG/pg_ctl -D $D -m fast -w stop >/dev/null 2>&1
sleep 1; evict
# IOPS=<n> caps read IOPS on the data device, like a provisioned cloud volume
systemd-run --user --scope -q -p MemoryMax=$MEM -p MemoryHigh=$MEM
--unit=pgpf-$$-$RANDOM \
${IOPS:+-p "IOReadIOPSMax=${IODEV:-/dev/nvme0n1} $IOPS"} \
$PG/pg_ctl -D $D -l $D/log ${PGOPTS:+-o "$PGOPTS"} -w start >/dev/null 2>&1
q() { $PG/psql -h /tmp -p $PORT -U postgres -XAtq -c "$1"; }
case $s in
cold_uncorr) col=a; lo=1000000; hi=1019999 ;;
cold_near) col=b; lo=1000000; hi=1399999 ;;
cold_corr) col=id; lo=1000000; hi=1399999 ;; # same heap region as
cold_near, no jitter
warm25_uncorr) col=a; lo=1000000; hi=1019999
q "SELECT pg_prewarm('t_a')" >/dev/null
q "SELECT sum(pg_prewarm('t', 'buffer', 'main', g, g + 7))
FROM generate_series(0, pg_relation_size('t') / 8192 -
8, 40) g" >/dev/null ;;
esac
opts="ANALYZE, BUFFERS"; [ $b != base ] && opts="$opts, IO"
# STATDEV=<name in /sys/block> adds what reached that device during the query:
# read requests completed, requests merged by the block layer, kB per request
local st0 st1 line
[ -n "${STATDEV:-}" ] && st0=$(cat /sys/block/$STATDEV/stat)
line=$($PG/psql -h /tmp -p $PORT -U postgres -XAtq <<SQL | awk -v b=$b -v
s=$s '
/Execution Time/ { sub(/.*Execution Time: /, ""); sub(/ ms/, ""); t = $0 }
/Buffers: shared/ && !buf { buf = $0; sub(/^ *Buffers: /, "", buf) }
/Prefetch:/ { pf = $0; sub(/^ */, "", pf) }
/I\/O:/ { io = $0; sub(/^ */, "", io) }
END { printf "%-14s %-8s %10s ms | %s | %s | %s", s, b, t, buf, pf, io }'
SET enable_seqscan = off; SET enable_bitmapscan = off; SET enable_indexonlyscan
= off;
EXPLAIN ($opts) SELECT sum(length(filler)) FROM t WHERE $col BETWEEN $lo AND
$hi;
SQL
)
if [ -n "${STATDEV:-}" ]; then
st1=$(cat /sys/block/$STATDEV/stat)
line="$line | dev: $(echo $st0 $st1 | awk '{ r = $18 - $1; m = $19 - $2; kb
= ($20 - $3) / 2
printf "reads=%d merged=%d kB/read=%.1f", r, m, r ? kb / r : 0 }')"
fi
echo "$line"
}
SCENARIOS=${SCENARIOS:-"cold_uncorr cold_near warm25_uncorr"}
BUILDS=${BUILDS:-"base v36 v36full"}
: > $OUT
for s in $SCENARIOS; do
for r in $(seq 1 $R); do
set -- $BUILDS
# rotate the build order by one position every round
for _ in $(seq 2 $r); do set -- "${@:2}" "$1"; done
for b in "$@"; do run $b $s | tee -a $OUT; done
done
done
$W/i-base/bin/pg_ctl -D $D -m fast -w stop >/dev/null 2>&1
echo BENCH-DONE
======== bench_latency.sh ========
#!/bin/bash
# Run bench.sh on the delayed device (slowdisk.sh) at several per-read
# latencies. One results file per latency.
# usage: bench_latency.sh [rounds] ["ms list"]
set -eu
B=$(cd "$(dirname "$0")" && pwd)
R=${1:-3}
export D=$HOME/pgpf/slow/data
export SCENARIOS=${SCENARIOS:-"cold_uncorr cold_near cold_corr"}
export BUILDS=${BUILDS:-"base v36"}
for ms in ${2:-0 1 2}; do
bash $B/slowdisk.sh setdelay $ms
echo "== read delay ${ms} ms"
OUT=$B/results_delay${ms}ms.txt bash $B/bench.sh $R
done
echo LATENCY-DONE
======== bench_ioconf.sh ========
#!/bin/bash
# Nearly correlated scan at 2 ms read latency, varying the settings that bound
# how many reads can be in flight: io_workers (io_method=worker) and
# effective_io_concurrency. One results file per setting.
# usage: bench_ioconf.sh [rounds]
set -eu
B=$(cd "$(dirname "$0")" && pwd)
R=${1:-5}
export D=$HOME/pgpf/slow/data
export STATDEV=$(basename "$(readlink -f /dev/mapper/pgpf_slow)")
export SCENARIOS=${SCENARIOS:-cold_near}
export BUILDS="base v36"
bash $B/slowdisk.sh setdelay 2
# PG19 sizes the I/O worker pool dynamically: io_min_workers (default 2) at
# start, one more every io_worker_launch_interval (100ms) up to io_max_workers
(8)
CONFS=${CONFS:-"io_min_workers=2 io_max_workers=8 effective_io_concurrency=16
io_min_workers=8 io_max_workers=8 effective_io_concurrency=16
io_min_workers=32 io_max_workers=32 effective_io_concurrency=16
io_min_workers=32 io_max_workers=32 effective_io_concurrency=64"}
while IFS= read -r conf; do
tag=$(echo "$conf" | sed -e 's/io_min_workers=\([0-9]*\)
io_max_workers=\([0-9]*\)/w\1-\2/' \
-e 's/io_method=//' -e 's/
effective_io_concurrency=/_eic/')
export PGOPTS=$(printf -- '-c %s ' $conf)
echo "== $conf"
OUT=$B/results_2ms_$tag.txt bash $B/bench.sh $R < /dev/null
done <<< "$CONFS"
echo IOCONF-DONE
Raw results: every run, as printed by bench.sh. Nothing was dropped.
Builds: master 4545cee303c ("base"), and the same commit with the v36 series
("v36"). "v36full" = v36 with the heap read stream opened with
READ_STREAM_FULL instead of READ_STREAM_DEFAULT (one line; measured only in
the first set). -O2, no assertions. The first four sets were run before the
builds were redone with --with-liburing; io_method=worker does not use it,
and the worker control in the last sets matches the earlier worker numbers.
Machine: AMD Ryzen AI 9 HX 370 (24 threads), 30 GB RAM, Linux 7.1.12,
Kingston SKC3000D NVMe. Data directory on btrfs with zstd compression for
the "local NVMe" sets; on ext4 over dm-delay over a loop device (direct I/O,
nocow backing file) for the "delay" sets. 8 kB O_DIRECT reads on that device
took 0.16 / 1.25 / 2.27 ms at a delay of 0 / 1 / 2 ms.
Table: 8M rows, 163,266 heap pages. pg_stats correlation: id 1.0000,
b 1.0000, a -0.0095. Each index is 21,937 pages.
Server: shared_buffers 512MB, track_io_timing on, jit off, autovacuum off,
max_parallel_workers_per_gather 0; defaults otherwise (io_method worker,
io_min_workers 2, io_max_workers 8, effective_io_concurrency 16) unless a
section says so. Server stopped, data files evicted from the page cache and
server started in a 900 MB memory cgroup before every run; build order
rotated each round.
Columns: scenario, build, execution time | EXPLAIN Buffers | EXPLAIN (IO)
Prefetch line | EXPLAIN (IO) I/O line | read requests that reached the
device during the query (only where "dev:" is shown; from /sys/block/dm-0/stat).
Scenarios: cold_uncorr = t.a BETWEEN 1000000 AND 1019999 (uncorrelated);
cold_near = t.b BETWEEN 1000000 AND 1399999 (+/-50 row jitter);
cold_corr = t.id BETWEEN 1000000 AND 1399999 (same rows' heap range, no
jitter); warm25_uncorr = cold_uncorr after pg_prewarm of the index and of 8
of every 40 heap blocks.
Block sequence for the 400k-row range (blockseq.sql):
index distinct blocks handed to the stream breaks in contiguity
id 8,164 8,164 0
b 8,166 136,837 127,380
======== local NVMe, uncorrelated and nearly correlated, 3 builds ========
file: results.txt
cold_uncorr base 1652.229 ms | shared read=20057 | |
cold_uncorr v36 841.913 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=2575 size=1.00 in-progress=15.99
cold_uncorr v36full 772.660 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=3031 size=1.00 in-progress=15.99
cold_uncorr v36 757.465 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=2642 size=1.00 in-progress=15.99
cold_uncorr v36full 809.596 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=3037 size=1.00 in-progress=15.99
cold_uncorr base 1394.250 ms | shared read=20057 | |
cold_uncorr v36full 707.809 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=2964 size=1.00 in-progress=15.99
cold_uncorr base 1600.562 ms | shared read=20057 | |
cold_uncorr v36 538.298 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=4346 size=1.00 in-progress=15.99
cold_near base 287.991 ms | shared hit=128671 read=9262 | |
cold_near v36 326.905 ms | shared hit=128664 read=9262 | Prefetch:
avg=207.18 max=271 capacity=272 | I/O: count=11858 waits=76 size=1.00
in-progress=15.96
cold_near v36full 256.034 ms | shared hit=128657 read=9262 | Prefetch:
avg=165.87 max=271 capacity=272 | I/O: count=15289 waits=65 size=1.00
in-progress=15.97
cold_near v36 288.212 ms | shared hit=128663 read=9262 | Prefetch:
avg=181.41 max=271 capacity=272 | I/O: count=13638 waits=53 size=1.00
in-progress=15.98
cold_near v36full 214.332 ms | shared hit=128671 read=9262 | Prefetch:
avg=153.73 max=240 capacity=272 | I/O: count=14896 waits=26 size=1.00
in-progress=15.96
cold_near base 290.064 ms | shared hit=128671 read=9262 | |
cold_near v36full 278.529 ms | shared hit=128666 read=9262 | Prefetch:
avg=184.40 max=271 capacity=272 | I/O: count=12868 waits=45 size=1.00
in-progress=15.95
cold_near base 243.609 ms | shared hit=128671 read=9262 | |
cold_near v36 196.073 ms | shared hit=128668 read=9262 | Prefetch:
avg=156.58 max=271 capacity=272 | I/O: count=14592 waits=33 size=1.00
in-progress=15.97
warm25_uncorr base 1457.063 ms | shared hit=4052 read=16005 | |
warm25_uncorr v36 500.662 ms | shared hit=4052 read=16005 | Prefetch:
avg=20.34 max=27 capacity=272 | I/O: count=15995 waits=2294 size=1.00
in-progress=15.99
warm25_uncorr v36full 670.477 ms | shared hit=4052 read=16005 | Prefetch:
avg=20.34 max=27 capacity=272 | I/O: count=15995 waits=2222 size=1.00
in-progress=15.99
warm25_uncorr v36 703.510 ms | shared hit=4052 read=16005 | Prefetch:
avg=20.33 max=27 capacity=272 | I/O: count=15995 waits=1884 size=1.00
in-progress=15.99
warm25_uncorr v36full 406.187 ms | shared hit=4052 read=16005 | Prefetch:
avg=20.34 max=27 capacity=272 | I/O: count=15995 waits=2675 size=1.00
in-progress=15.99
warm25_uncorr base 1492.717 ms | shared hit=4052 read=16005 | |
warm25_uncorr v36full 482.859 ms | shared hit=4052 read=16005 | Prefetch:
avg=20.34 max=27 capacity=272 | I/O: count=15995 waits=1966 size=1.00
in-progress=15.99
warm25_uncorr base 1513.032 ms | shared hit=4052 read=16005 | |
warm25_uncorr v36 500.280 ms | shared hit=4052 read=16005 | Prefetch:
avg=20.34 max=27 capacity=272 | I/O: count=15995 waits=2280 size=1.00
in-progress=15.99
======== local NVMe, correlated index ========
file: results_corr.txt
cold_corr base 195.436 ms | shared read=9260 | |
cold_corr v36 227.077 ms | shared read=9260 | Prefetch: avg=208.18
max=256 capacity=272 | I/O: count=514 waits=8 size=15.88 in-progress=13.38
cold_corr v36 230.955 ms | shared read=9260 | Prefetch: avg=155.80
max=256 capacity=272 | I/O: count=514 waits=8 size=15.88 in-progress=10.13
cold_corr base 189.830 ms | shared read=9260 | |
cold_corr base 222.918 ms | shared read=9260 | |
cold_corr v36 212.621 ms | shared read=9260 | Prefetch: avg=117.64
max=128 capacity=272 | I/O: count=514 waits=7 size=15.88 in-progress=7.77
cold_corr v36 149.056 ms | shared read=9260 | Prefetch: avg=202.57
max=256 capacity=272 | I/O: count=514 waits=8 size=15.88 in-progress=13.04
cold_corr base 179.225 ms | shared read=9260 | |
cold_near base 275.315 ms | shared hit=128671 read=9262 | |
cold_near v36 234.802 ms | shared hit=128662 read=9262 | Prefetch:
avg=171.57 max=271 capacity=272 | I/O: count=14082 waits=49 size=1.00
in-progress=15.98
cold_near v36 201.737 ms | shared hit=128670 read=9262 | Prefetch:
avg=167.34 max=257 capacity=272 | I/O: count=13772 waits=29 size=1.00
in-progress=15.98
cold_near base 227.889 ms | shared hit=128671 read=9262 | |
cold_near base 236.495 ms | shared hit=128671 read=9262 | |
cold_near v36 341.524 ms | shared hit=128653 read=9262 | Prefetch:
avg=215.64 max=271 capacity=272 | I/O: count=11808 waits=89 size=1.00
in-progress=15.97
cold_near v36 316.128 ms | shared hit=128662 read=9262 | Prefetch:
avg=210.53 max=271 capacity=272 | I/O: count=11376 waits=57 size=1.00
in-progress=15.95
cold_near base 243.181 ms | shared hit=128671 read=9262 | |
======== local NVMe, cgroup IOReadIOPSMax=3000 ========
file: results_iops3000.txt
NOT VALID: the cap was not enforced on this btrfs volume (20k random reads ran
at ~11k IOPS). Kept only for completeness.
cold_corr base 172.250 ms | shared read=9260 | |
cold_corr v36 125.666 ms | shared read=9260 | Prefetch: avg=235.44
max=256 capacity=272 | I/O: count=514 waits=8 size=15.88 in-progress=15.07
cold_corr v36 189.824 ms | shared read=9260 | Prefetch: avg=219.84
max=271 capacity=272 | I/O: count=514 waits=9 size=15.88 in-progress=13.86
cold_corr base 223.343 ms | shared read=9260 | |
cold_corr base 232.947 ms | shared read=9260 | |
cold_corr v36 231.199 ms | shared read=9260 | Prefetch: avg=117.51
max=128 capacity=272 | I/O: count=514 waits=7 size=15.88 in-progress=7.76
cold_corr v36 158.269 ms | shared read=9260 | Prefetch: avg=227.44
max=256 capacity=272 | I/O: count=514 waits=8 size=15.88 in-progress=14.58
cold_corr base 304.670 ms | shared read=9260 | |
cold_near base 287.228 ms | shared hit=128671 read=9262 | |
cold_near v36 317.635 ms | shared hit=128657 read=9262 | Prefetch:
avg=215.91 max=271 capacity=272 | I/O: count=10927 waits=61 size=1.00
in-progress=15.97
cold_near v36 355.832 ms | shared hit=128657 read=9262 | Prefetch:
avg=202.60 max=271 capacity=272 | I/O: count=12780 waits=86 size=1.00
in-progress=15.96
cold_near base 319.196 ms | shared hit=128671 read=9262 | |
cold_near base 255.153 ms | shared hit=128671 read=9262 | |
cold_near v36 249.823 ms | shared hit=128659 read=9262 | Prefetch:
avg=202.12 max=271 capacity=272 | I/O: count=12149 waits=83 size=1.00
in-progress=15.96
cold_near v36 387.327 ms | shared hit=128642 read=9262 | Prefetch:
avg=203.17 max=271 capacity=272 | I/O: count=13222 waits=151 size=1.00
in-progress=15.97
cold_near base 209.653 ms | shared hit=128671 read=9262 | |
======== delay device, read delay 0 ms ========
file: results_delay0ms.txt
cold_uncorr base 3805.275 ms | shared read=20057 | |
cold_uncorr v36 1028.881 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=5824 size=1.00 in-progress=15.99
cold_uncorr v36 899.596 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=7369 size=1.00 in-progress=15.99
cold_uncorr base 3127.393 ms | shared read=20057 | |
cold_uncorr base 3036.812 ms | shared read=20057 | |
cold_uncorr v36 993.370 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=7364 size=1.00 in-progress=15.99
cold_near base 291.340 ms | shared hit=128671 read=9262 | |
cold_near v36 251.756 ms | shared hit=128658 read=9262 | Prefetch:
avg=126.84 max=223 capacity=272 | I/O: count=18240 waits=92 size=1.00
in-progress=15.97
cold_near v36 193.829 ms | shared hit=128657 read=9262 | Prefetch:
avg=123.14 max=251 capacity=272 | I/O: count=19646 waits=105 size=1.00
in-progress=15.98
cold_near base 314.334 ms | shared hit=128671 read=9262 | |
cold_near base 311.838 ms | shared hit=128671 read=9262 | |
cold_near v36 339.489 ms | shared hit=128647 read=9262 | Prefetch:
avg=125.22 max=257 capacity=272 | I/O: count=18726 waits=127 size=1.00
in-progress=15.96
cold_corr base 707.670 ms | shared read=9260 | |
cold_corr v36 163.749 ms | shared read=9260 | Prefetch: avg=255.23
max=271 capacity=272 | I/O: count=514 waits=26 size=15.88 in-progress=15.42
cold_corr v36 216.618 ms | shared read=9260 | Prefetch: avg=209.31
max=256 capacity=272 | I/O: count=514 waits=8 size=15.88 in-progress=13.45
cold_corr base 208.080 ms | shared read=9260 | |
cold_corr base 284.302 ms | shared read=9260 | |
cold_corr v36 187.470 ms | shared read=9260 | Prefetch: avg=255.92
max=271 capacity=272 | I/O: count=514 waits=13 size=15.88 in-progress=15.47
======== delay device, read delay 1 ms ========
file: results_delay1ms.txt
cold_uncorr base 24141.171 ms | shared read=20057 | |
cold_uncorr v36 3182.943 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=5407 size=1.00 in-progress=15.99
cold_uncorr v36 3712.458 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=5254 size=1.00 in-progress=15.99
cold_uncorr base 23405.470 ms | shared read=20057 | |
cold_uncorr base 24746.832 ms | shared read=20057 | |
cold_uncorr v36 3278.661 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=5444 size=1.00 in-progress=15.99
cold_near base 339.626 ms | shared hit=128671 read=9262 | |
cold_near v36 405.476 ms | shared hit=128615 read=9262 | Prefetch:
avg=109.79 max=239 capacity=272 | I/O: count=21377 waits=311 size=1.00
in-progress=15.96
cold_near v36 367.895 ms | shared hit=128600 read=9262 | Prefetch:
avg=106.19 max=253 capacity=272 | I/O: count=22246 waits=313 size=1.00
in-progress=15.98
cold_near base 346.190 ms | shared hit=128671 read=9262 | |
cold_near base 432.407 ms | shared hit=128671 read=9262 | |
cold_near v36 470.594 ms | shared hit=128594 read=9262 | Prefetch:
avg=107.58 max=271 capacity=272 | I/O: count=22990 waits=413 size=1.00
in-progress=15.97
cold_corr base 361.479 ms | shared read=9260 | |
cold_corr v36 208.178 ms | shared read=9260 | Prefetch: avg=252.81
max=271 capacity=272 | I/O: count=514 waits=33 size=15.88 in-progress=15.32
cold_corr v36 229.028 ms | shared read=9260 | Prefetch: avg=254.71
max=271 capacity=272 | I/O: count=514 waits=94 size=15.88 in-progress=15.40
cold_corr base 424.259 ms | shared read=9260 | |
cold_corr base 387.988 ms | shared read=9260 | |
cold_corr v36 209.070 ms | shared read=9260 | Prefetch: avg=248.68
max=271 capacity=272 | I/O: count=514 waits=63 size=15.88 in-progress=15.08
======== delay device, read delay 2 ms ========
file: results_delay2ms.txt
cold_uncorr base 43637.677 ms | shared read=20057 | |
cold_uncorr v36 5556.318 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=5566 size=1.00 in-progress=15.99
cold_uncorr v36 5579.381 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=5483 size=1.00 in-progress=15.99
cold_uncorr base 45416.578 ms | shared read=20057 | |
cold_uncorr base 44532.883 ms | shared read=20057 | |
cold_uncorr v36 5590.942 ms | shared read=20057 | Prefetch: avg=15.99
max=16 capacity=272 | I/O: count=19997 waits=5528 size=1.00 in-progress=15.99
cold_near base 771.451 ms | shared hit=128671 read=9262 | |
cold_near v36 978.947 ms | shared hit=128560 read=9262 | Prefetch:
avg=104.92 max=271 capacity=272 | I/O: count=23412 waits=534 size=1.00
in-progress=15.98
cold_near v36 899.546 ms | shared hit=128563 read=9262 | Prefetch:
avg=103.43 max=271 capacity=272 | I/O: count=23438 waits=578 size=1.00
in-progress=15.98
cold_near base 735.301 ms | shared hit=128671 read=9262 | |
cold_near base 634.483 ms | shared hit=128671 read=9262 | |
cold_near v36 1039.431 ms | shared hit=128553 read=9262 | Prefetch:
avg=97.32 max=271 capacity=272 | I/O: count=25488 waits=614 size=1.00
in-progress=15.99
cold_corr base 695.125 ms | shared read=9260 | |
cold_corr v36 308.994 ms | shared read=9260 | Prefetch: avg=256.36
max=271 capacity=272 | I/O: count=514 waits=115 size=15.88 in-progress=15.49
cold_corr v36 314.678 ms | shared read=9260 | Prefetch: avg=254.43
max=271 capacity=272 | I/O: count=514 waits=143 size=15.88 in-progress=15.39
cold_corr base 734.187 ms | shared read=9260 | |
cold_corr base 674.151 ms | shared read=9260 | |
cold_corr v36 340.542 ms | shared read=9260 | Prefetch: avg=254.99
max=271 capacity=272 | I/O: count=514 waits=119 size=15.88 in-progress=15.42
======== delay 2 ms, with device request counts ========
file: results_delay2ms_dev.txt
cold_near base 788.897 ms | shared hit=128671 read=9262 | | |
dev: reads=697 merged=0 kB/read=109.2
cold_near v36 811.223 ms | shared hit=128574 read=9262 | Prefetch:
avg=98.97 max=271 capacity=272 | I/O: count=24048 waits=504 size=1.00
in-progress=15.97 | dev: reads=787 merged=0 kB/read=96.5
cold_near v36 732.594 ms | shared hit=128582 read=9262 | Prefetch:
avg=98.77 max=271 capacity=272 | I/O: count=23552 waits=477 size=1.00
in-progress=15.97 | dev: reads=756 merged=0 kB/read=100.6
cold_near base 651.234 ms | shared hit=128671 read=9262 | | |
dev: reads=692 merged=0 kB/read=109.9
cold_near base 839.158 ms | shared hit=128671 read=9262 | | |
dev: reads=692 merged=0 kB/read=109.9
cold_near v36 1287.441 ms | shared hit=128553 read=9262 | Prefetch:
avg=100.10 max=271 capacity=272 | I/O: count=24236 waits=541 size=1.00
in-progress=15.97 | dev: reads=874 merged=0 kB/read=87.0
cold_corr base 816.989 ms | shared read=9260 | | | dev: reads=695
merged=0 kB/read=109.5
cold_corr v36 324.828 ms | shared read=9260 | Prefetch: avg=256.17
max=271 capacity=272 | I/O: count=514 waits=157 size=15.88 in-progress=15.47 |
dev: reads=691 merged=0 kB/read=110.0
cold_corr v36 339.526 ms | shared read=9260 | Prefetch: avg=255.74
max=271 capacity=272 | I/O: count=514 waits=155 size=15.88 in-progress=15.46 |
dev: reads=690 merged=0 kB/read=109.9
cold_corr base 615.241 ms | shared read=9260 | | | dev: reads=692
merged=0 kB/read=109.7
cold_corr base 652.548 ms | shared read=9260 | | | dev: reads=692
merged=0 kB/read=109.7
cold_corr v36 327.421 ms | shared read=9260 | Prefetch: avg=255.68
max=271 capacity=272 | I/O: count=514 waits=145 size=15.88 in-progress=15.46 |
dev: reads=690 merged=0 kB/read=110.1
======== delay 2 ms, nearly correlated, 10 rounds ========
file: results_delay2ms_near10.txt
cold_near base 628.479 ms | shared hit=128671 read=9262 | | |
dev: reads=688 merged=0 kB/read=110.2
cold_near v36 842.861 ms | shared hit=128573 read=9262 | Prefetch:
avg=98.14 max=271 capacity=272 | I/O: count=24207 waits=492 size=1.00
in-progress=15.98 | dev: reads=809 merged=0 kB/read=94.0
cold_near v36 786.284 ms | shared hit=128578 read=9262 | Prefetch:
avg=96.68 max=271 capacity=272 | I/O: count=24434 waits=484 size=1.00
in-progress=15.98 | dev: reads=795 merged=0 kB/read=95.5
cold_near base 719.211 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near base 670.891 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 867.353 ms | shared hit=128560 read=9262 | Prefetch:
avg=92.20 max=271 capacity=272 | I/O: count=25906 waits=519 size=1.00
in-progress=15.95 | dev: reads=848 merged=0 kB/read=89.7
cold_near v36 731.318 ms | shared hit=128570 read=9262 | Prefetch:
avg=96.11 max=257 capacity=272 | I/O: count=24695 waits=483 size=1.00
in-progress=15.98 | dev: reads=767 merged=0 kB/read=99.2
cold_near base 711.721 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near base 723.261 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 911.945 ms | shared hit=128572 read=9262 | Prefetch:
avg=96.35 max=271 capacity=272 | I/O: count=24884 waits=547 size=1.00
in-progress=15.99 | dev: reads=883 merged=0 kB/read=86.1
cold_near v36 961.812 ms | shared hit=128552 read=9262 | Prefetch:
avg=104.96 max=271 capacity=272 | I/O: count=23347 waits=572 size=1.00
in-progress=15.97 | dev: reads=865 merged=0 kB/read=87.9
cold_near base 720.178 ms | shared hit=128671 read=9262 | | |
dev: reads=706 merged=0 kB/read=107.8
cold_near base 740.722 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 1038.626 ms | shared hit=128550 read=9262 | Prefetch:
avg=104.01 max=271 capacity=272 | I/O: count=23466 waits=537 size=1.00
in-progress=15.97 | dev: reads=886 merged=0 kB/read=86.0
cold_near v36 858.799 ms | shared hit=128564 read=9262 | Prefetch:
avg=99.06 max=271 capacity=272 | I/O: count=23972 waits=506 size=1.00
in-progress=15.99 | dev: reads=816 merged=0 kB/read=93.1
cold_near base 701.321 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near base 618.703 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 912.249 ms | shared hit=128557 read=9262 | Prefetch:
avg=101.50 max=271 capacity=272 | I/O: count=23776 waits=541 size=1.00
in-progress=15.99 | dev: reads=844 merged=0 kB/read=90.1
cold_near v36 1173.631 ms | shared hit=128549 read=9262 | Prefetch:
avg=117.41 max=271 capacity=272 | I/O: count=20690 waits=536 size=1.00
in-progress=15.98 | dev: reads=829 merged=0 kB/read=91.8
cold_near base 869.266 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
======== delay 2 ms, io_min_workers=2 io_max_workers=8, eic 16 ========
file: results_2ms_w2-8_eic16.txt
cold_near base 715.714 ms | shared hit=128671 read=9262 | | |
dev: reads=693 merged=0 kB/read=109.8
cold_near v36 648.691 ms | shared hit=128590 read=9262 | Prefetch:
avg=101.58 max=252 capacity=272 | I/O: count=23024 waits=415 size=1.00
in-progress=15.94 | dev: reads=735 merged=0 kB/read=103.5
cold_near v36 774.553 ms | shared hit=128580 read=9262 | Prefetch:
avg=100.16 max=271 capacity=272 | I/O: count=23397 waits=476 size=1.00
in-progress=15.97 | dev: reads=773 merged=0 kB/read=98.3
cold_near base 687.415 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near base 708.205 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 787.544 ms | shared hit=128575 read=9262 | Prefetch:
avg=89.96 max=204 capacity=272 | I/O: count=25970 waits=454 size=1.00
in-progress=15.99 | dev: reads=727 merged=0 kB/read=104.6
cold_near v36 879.530 ms | shared hit=128571 read=9262 | Prefetch:
avg=96.44 max=271 capacity=272 | I/O: count=24745 waits=541 size=1.00
in-progress=15.94 | dev: reads=836 merged=0 kB/read=91.0
cold_near base 715.530 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near base 667.619 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 813.518 ms | shared hit=128563 read=9262 | Prefetch:
avg=93.95 max=271 capacity=272 | I/O: count=25209 waits=504 size=1.00
in-progress=15.97 | dev: reads=820 merged=0 kB/read=92.8
======== delay 2 ms, io_min_workers=io_max_workers=8, eic 16 ========
file: results_2ms_w8-8_eic16.txt
cold_near base 680.033 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 765.969 ms | shared hit=128574 read=9262 | Prefetch:
avg=96.75 max=271 capacity=272 | I/O: count=24415 waits=490 size=1.00
in-progress=15.95 | dev: reads=782 merged=0 kB/read=97.3
cold_near v36 797.225 ms | shared hit=128570 read=9262 | Prefetch:
avg=98.43 max=271 capacity=272 | I/O: count=24208 waits=500 size=1.00
in-progress=15.97 | dev: reads=801 merged=0 kB/read=94.9
cold_near base 731.915 ms | shared hit=128671 read=9262 | | |
dev: reads=689 merged=0 kB/read=110.3
cold_near base 682.726 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 838.295 ms | shared hit=128567 read=9262 | Prefetch:
avg=95.81 max=271 capacity=272 | I/O: count=24863 waits=506 size=1.00
in-progress=15.99 | dev: reads=819 merged=0 kB/read=92.9
cold_near v36 752.924 ms | shared hit=128570 read=9262 | Prefetch:
avg=97.97 max=259 capacity=272 | I/O: count=24091 waits=513 size=1.00
in-progress=15.97 | dev: reads=790 merged=0 kB/read=96.3
cold_near base 694.124 ms | shared hit=128671 read=9262 | | |
dev: reads=686 merged=0 kB/read=110.8
cold_near base 755.660 ms | shared hit=128671 read=9262 | | |
dev: reads=688 merged=0 kB/read=110.2
cold_near v36 845.281 ms | shared hit=128565 read=9262 | Prefetch:
avg=99.84 max=271 capacity=272 | I/O: count=23835 waits=507 size=1.00
in-progress=15.94 | dev: reads=818 merged=0 kB/read=93.0
======== delay 2 ms, io_min_workers=io_max_workers=32, eic 16 ========
file: results_2ms_w32-32_eic16.txt
cold_near base 697.190 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 742.540 ms | shared hit=128597 read=9262 | Prefetch:
avg=96.79 max=203 capacity=272 | I/O: count=24309 waits=417 size=1.00
in-progress=15.98 | dev: reads=736 merged=0 kB/read=103.0
cold_near v36 855.282 ms | shared hit=128570 read=9262 | Prefetch:
avg=96.26 max=271 capacity=272 | I/O: count=24491 waits=509 size=1.00
in-progress=15.96 | dev: reads=810 merged=0 kB/read=93.8
cold_near base 683.933 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near base 658.507 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 677.703 ms | shared hit=128588 read=9262 | Prefetch:
avg=96.10 max=248 capacity=272 | I/O: count=24558 waits=454 size=1.00
in-progress=15.97 | dev: reads=737 merged=0 kB/read=103.0
cold_near v36 922.887 ms | shared hit=128558 read=9262 | Prefetch:
avg=106.31 max=271 capacity=272 | I/O: count=22762 waits=556 size=1.00
in-progress=15.98 | dev: reads=846 merged=0 kB/read=89.9
cold_near base 698.108 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.1
cold_near base 665.118 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 791.373 ms | shared hit=128577 read=9262 | Prefetch:
avg=97.25 max=271 capacity=272 | I/O: count=24259 waits=501 size=1.00
in-progress=15.98 | dev: reads=786 merged=0 kB/read=96.8
======== delay 2 ms, io_min_workers=io_max_workers=32, eic 64 ========
file: results_2ms_w32-32_eic64.txt
cold_near base 731.686 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 831.352 ms | shared hit=128643 read=9262 | Prefetch:
avg=184.70 max=375 capacity=376 | I/O: count=48512 waits=460 size=1.00
in-progress=63.79 | dev: reads=912 merged=0 kB/read=83.4
cold_near v36 913.928 ms | shared hit=128632 read=9262 | Prefetch:
avg=179.99 max=375 capacity=376 | I/O: count=49618 waits=484 size=1.00
in-progress=63.66 | dev: reads=965 merged=0 kB/read=78.8
cold_near base 697.416 ms | shared hit=128671 read=9262 | | |
dev: reads=704 merged=0 kB/read=108.2
cold_near base 743.645 ms | shared hit=128671 read=9262 | | |
dev: reads=691 merged=0 kB/read=110.1
cold_near v36 843.014 ms | shared hit=128630 read=9262 | Prefetch:
avg=184.61 max=375 capacity=376 | I/O: count=48340 waits=473 size=1.00
in-progress=63.76 | dev: reads=885 merged=0 kB/read=85.9
cold_near v36 715.381 ms | shared hit=128629 read=9262 | Prefetch:
avg=197.24 max=375 capacity=376 | I/O: count=45490 waits=379 size=1.00
in-progress=63.81 | dev: reads=805 merged=0 kB/read=94.4
cold_near base 739.173 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near base 713.214 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 816.469 ms | shared hit=128633 read=9262 | Prefetch:
avg=196.32 max=375 capacity=376 | I/O: count=45339 waits=371 size=1.00
in-progress=63.68 | dev: reads=803 merged=0 kB/read=94.7
======== delay 2 ms, io_method=worker, eic 16 (control, --with-liburing builds)
========
file: results_2ms_worker_eic16.txt
cold_near base 759.837 ms | shared hit=128671 read=9262 | | |
dev: reads=693 merged=0 kB/read=109.8
cold_near v36 894.134 ms | shared hit=128566 read=9262 | Prefetch:
avg=112.27 max=271 capacity=272 | I/O: count=21510 waits=544 size=1.00
in-progress=15.98 | dev: reads=812 merged=0 kB/read=93.7
cold_near v36 716.359 ms | shared hit=128569 read=9262 | Prefetch:
avg=96.38 max=271 capacity=272 | I/O: count=24133 waits=486 size=1.00
in-progress=15.94 | dev: reads=777 merged=0 kB/read=97.9
cold_near base 686.676 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near base 693.308 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 803.587 ms | shared hit=128570 read=9262 | Prefetch:
avg=96.29 max=271 capacity=272 | I/O: count=24499 waits=519 size=1.00
in-progress=15.96 | dev: reads=804 merged=0 kB/read=94.6
cold_near v36 801.003 ms | shared hit=128568 read=9262 | Prefetch:
avg=101.34 max=271 capacity=272 | I/O: count=23110 waits=486 size=1.00
in-progress=15.93 | dev: reads=787 merged=0 kB/read=96.7
cold_near base 713.368 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near base 679.883 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 809.360 ms | shared hit=128565 read=9262 | Prefetch:
avg=96.81 max=271 capacity=272 | I/O: count=24845 waits=518 size=1.00
in-progress=15.94 | dev: reads=808 merged=0 kB/read=94.1
cold_corr base 652.716 ms | shared read=9260 | | | dev: reads=693
merged=0 kB/read=109.8
cold_corr v36 271.868 ms | shared read=9260 | Prefetch: avg=255.71
max=271 capacity=272 | I/O: count=514 waits=142 size=15.88 in-progress=15.46 |
dev: reads=691 merged=0 kB/read=110.0
cold_corr v36 317.911 ms | shared read=9260 | Prefetch: avg=256.67
max=271 capacity=272 | I/O: count=514 waits=120 size=15.88 in-progress=15.51 |
dev: reads=691 merged=0 kB/read=110.0
cold_corr base 634.490 ms | shared read=9260 | | | dev: reads=693
merged=0 kB/read=109.8
cold_corr base 656.403 ms | shared read=9260 | | | dev: reads=693
merged=0 kB/read=109.8
cold_corr v36 342.476 ms | shared read=9260 | Prefetch: avg=255.58
max=271 capacity=272 | I/O: count=514 waits=148 size=15.88 in-progress=15.44 |
dev: reads=691 merged=0 kB/read=109.9
cold_corr v36 303.390 ms | shared read=9260 | Prefetch: avg=255.74
max=271 capacity=272 | I/O: count=514 waits=173 size=15.88 in-progress=15.46 |
dev: reads=691 merged=0 kB/read=110.0
cold_corr base 611.305 ms | shared read=9260 | | | dev: reads=693
merged=0 kB/read=109.8
cold_corr base 677.298 ms | shared read=9260 | | | dev: reads=693
merged=0 kB/read=109.8
cold_corr v36 337.760 ms | shared read=9260 | Prefetch: avg=256.39
max=271 capacity=272 | I/O: count=514 waits=137 size=15.88 in-progress=15.49 |
dev: reads=691 merged=0 kB/read=110.0
======== delay 2 ms, io_method=io_uring, eic 16 ========
file: results_2ms_io_uring_eic16.txt
cold_near base 608.865 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 680.972 ms | shared hit=127669 read=9262 | Prefetch:
avg=32.68 max=41 capacity=272 | I/O: count=65087 waits=405 size=1.00
in-progress=15.97 | dev: reads=690 merged=0 kB/read=110.2
cold_near v36 676.206 ms | shared hit=127674 read=9262 | Prefetch:
avg=32.57 max=41 capacity=272 | I/O: count=64898 waits=411 size=1.00
in-progress=15.94 | dev: reads=690 merged=0 kB/read=110.2
cold_near base 624.405 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near base 780.401 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 703.659 ms | shared hit=127674 read=9262 | Prefetch:
avg=32.57 max=41 capacity=272 | I/O: count=64898 waits=400 size=1.00
in-progress=15.94 | dev: reads=690 merged=0 kB/read=110.2
cold_near v36 722.234 ms | shared hit=127669 read=9262 | Prefetch:
avg=32.64 max=41 capacity=272 | I/O: count=65017 waits=401 size=1.00
in-progress=15.96 | dev: reads=689 merged=0 kB/read=110.2
cold_near base 712.393 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near base 697.989 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 665.212 ms | shared hit=127669 read=9262 | Prefetch:
avg=32.64 max=41 capacity=272 | I/O: count=65017 waits=422 size=1.00
in-progress=15.96 | dev: reads=690 merged=0 kB/read=110.2
cold_corr base 719.615 ms | shared read=9260 | | | dev: reads=692
merged=0 kB/read=109.7
cold_corr v36 246.525 ms | shared read=9260 | Prefetch: avg=236.38
max=256 capacity=272 | I/O: count=514 waits=8 size=15.88 in-progress=15.13 |
dev: reads=691 merged=0 kB/read=110.0
cold_corr v36 197.097 ms | shared read=9260 | Prefetch: avg=238.77
max=256 capacity=272 | I/O: count=514 waits=9 size=15.88 in-progress=15.28 |
dev: reads=690 merged=0 kB/read=110.2
cold_corr base 647.344 ms | shared read=9260 | | | dev: reads=692
merged=0 kB/read=109.8
cold_corr base 632.211 ms | shared read=9260 | | | dev: reads=693
merged=0 kB/read=109.8
cold_corr v36 206.986 ms | shared read=9260 | Prefetch: avg=238.52
max=256 capacity=272 | I/O: count=514 waits=8 size=15.88 in-progress=15.26 |
dev: reads=690 merged=0 kB/read=110.2
cold_corr v36 197.856 ms | shared read=9260 | Prefetch: avg=240.59
max=256 capacity=272 | I/O: count=514 waits=8 size=15.88 in-progress=15.39 |
dev: reads=693 merged=0 kB/read=109.7
cold_corr base 667.480 ms | shared read=9260 | | | dev: reads=693
merged=0 kB/read=109.8
cold_corr base 615.175 ms | shared read=9260 | | | dev: reads=693
merged=0 kB/read=109.8
cold_corr v36 282.744 ms | shared read=9260 | Prefetch: avg=249.05
max=271 capacity=272 | I/O: count=514 waits=11 size=15.88 in-progress=15.24 |
dev: reads=692 merged=0 kB/read=109.9
======== delay 2 ms, io_method=io_uring, eic 64 ========
file: results_2ms_io_uring_eic64.txt
cold_near base 678.754 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 741.750 ms | shared hit=128536 read=9262 | Prefetch:
avg=80.71 max=115 capacity=376 | I/O: count=106625 waits=465 size=1.00
in-progress=63.80 | dev: reads=690 merged=0 kB/read=110.2
cold_near v36 680.460 ms | shared hit=128536 read=9262 | Prefetch:
avg=80.23 max=114 capacity=376 | I/O: count=106422 waits=416 size=1.00
in-progress=63.67 | dev: reads=690 merged=0 kB/read=110.2
cold_near base 686.557 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near base 817.741 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 760.274 ms | shared hit=128511 read=9262 | Prefetch:
avg=80.54 max=113 capacity=376 | I/O: count=106530 waits=434 size=1.00
in-progress=63.77 | dev: reads=690 merged=0 kB/read=110.2
cold_near v36 672.421 ms | shared hit=128513 read=9262 | Prefetch:
avg=80.00 max=111 capacity=376 | I/O: count=106766 waits=443 size=1.00
in-progress=63.67 | dev: reads=690 merged=0 kB/read=110.2
cold_near base 665.140 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near base 725.470 ms | shared hit=128671 read=9262 | | |
dev: reads=690 merged=0 kB/read=110.2
cold_near v36 730.184 ms | shared hit=128530 read=9262 | Prefetch:
avg=80.41 max=113 capacity=376 | I/O: count=106357 waits=472 size=1.00
in-progress=63.69 | dev: reads=690 merged=0 kB/read=110.2
cold_corr base 649.543 ms | shared read=9260 | | | dev: reads=693
merged=0 kB/read=109.8
cold_corr v36 210.136 ms | shared read=9260 | Prefetch: avg=239.40
max=256 capacity=376 | I/O: count=514 waits=8 size=15.88 in-progress=15.32 |
dev: reads=692 merged=0 kB/read=109.9
cold_corr v36 202.363 ms | shared read=9260 | Prefetch: avg=239.90
max=256 capacity=376 | I/O: count=514 waits=8 size=15.88 in-progress=15.35 |
dev: reads=691 merged=0 kB/read=109.9
cold_corr base 673.980 ms | shared read=9260 | | | dev: reads=721
merged=0 kB/read=105.6
cold_corr base 638.536 ms | shared read=9260 | | | dev: reads=696
merged=0 kB/read=109.4
cold_corr v36 176.111 ms | shared read=9260 | Prefetch: avg=239.71
max=256 capacity=376 | I/O: count=514 waits=8 size=15.88 in-progress=15.34 |
dev: reads=692 merged=0 kB/read=109.9
cold_corr v36 224.432 ms | shared read=9260 | Prefetch: avg=239.96
max=256 capacity=376 | I/O: count=514 waits=8 size=15.88 in-progress=15.35 |
dev: reads=693 merged=0 kB/read=109.7
cold_corr base 656.058 ms | shared read=9260 | | | dev: reads=707
merged=0 kB/read=107.9
cold_corr base 708.272 ms | shared read=9260 | | | dev: reads=694
merged=0 kB/read=109.6
cold_corr v36 199.227 ms | shared read=9260 | Prefetch: avg=239.90
max=256 capacity=376 | I/O: count=514 waits=8 size=15.88 in-progress=15.35 |
dev: reads=691 merged=0 kB/read=110.0