]> Sergey Matveev's repositories - public-inbox.git/commit
init: add -j / --jobs parameter
authorEric Wong <e@yhbt.net>
Sun, 21 Jun 2020 00:21:31 +0000 (00:21 +0000)
committerEric Wong <e@yhbt.net>
Tue, 23 Jun 2020 00:22:14 +0000 (00:22 +0000)
commitb0372059b451c01fba1fdfe8a1879fbd5c7ca53d
tree442baa8adaac3d590f3d1e85f4936a2f97600f1c
parenta5c21c6e800be4755848621ba223594b0bde4d95
init: add -j / --jobs parameter

On a powerful (by my standards) machine with 16GB RAM and an
7200 RPM HDD marketed for "enterprise" use, indexing a 8.1G (in
git) LKML snapshot from Sep 2019 did not finish after 7 days
with the default number (3) of Xapian shards (`--jobs=4') and
`--batch-size=10m'.

Indexing starts off fast, but progressively get slower as
contents of the inbox (including Xapian + SQLite DBs) could no
longer be cached by the kernel.  Once the on-disk size
increased, HDD seek contention between the Xapian shard workers
slowed the process down to a crawl.

With a single shard, it still took around 3.5 days to index on
the HDD.  That's not good, but it's far better than not
finishing after 7 days.  So allow unfortunate HDD users to
easily specify a single shard on public-inbox-init.

For reference, a freshly TRIM-ed low-end TLC SSD on the SATA II
bus on the same machine indexes that same snapshot of LKML in
~7 hours with 3 shards and the same 10m batch size.  In the past,
a higher-end consumer grade MLC SSDs on similar hardware indexed
a similarly sized-data set in ~4 hours.
Documentation/public-inbox-init.pod
script/public-inbox-init
t/v2mirror.t