This series reduces memory usage for repairing a 97 million inode filesystem
for ~7.3 GB to ~5.3 (that is the resident set, virtual memory requirements
are about 300MB higher for both). The main change is linking against the
tcmalloc library from the Google perftools, with uses more efficient data
structures, and is able to garbage collect freed memory from the per-thread
queues. At least for xfs_repair it doesn't scale noticably better than
ptmalloc, as the final runtime is only minimally faster, and probably not
significant. Given that xfs_repair generally is I/O bound that is to be
I'd love to build with tcmalloc by default instead of requiring the
./configure opt-in, but I'm missing the autoconf-foo to not break the
build in case it isn't present. The same applies to using the
libtcmalloc_minimal variant that doesn't include some of the debugging
infrastructure - if anyone has the autoconf foo to use it alternatively
it would be great to also offer it.
The two preceding patches just remove some useless internal freelist
and make sure we actuall return memory to the system pool.