Changelog · Plugin

VoxelBench 2.0.1

The disk test no longer pins your CPU or piles up memory A patch release with a single fix, for the first test of /bench start: the disk test. Everything else is identical to 2.0.0. What was wrong The random 4K phases of the disk test allocated a new off-heap buffer for every…

Wby Wasab_II
September 26, 2026
0

The disk test no longer pins your CPU or piles up memory

A patch release with a single fix, for the first test of /bench start: the disk test. Everything else is identical to 2.0.0.

What was wrong

The random 4K phases of the disk test allocated a new off-heap buffer for every single read and write — 500,000 of them per phase, two phases per pass, three passes: about 24 GB of native memory reserved over a standard run, for a 1 GB test file. That memory only comes back when the garbage collector reclaims the buffers, and they weigh so little on the heap that a large, mostly empty heap may not be collected for a long time.

  • CPU at full load. Allocating and clearing all that memory cost 6 to 7 seconds of CPU per 250,000 operations in our measurement.
  • Memory that kept growing. Up to the size of your heap could pile up in native memory during the test — on a container with a tight memory limit, enough to get the server killed.
  • A test that never finished. With ZGC and -XX:+DisableExplicitGC, once the direct-memory limit was reached, every allocation waited for a collection that never came: the disk test stalled with the CPU at full load.

What changed

Each thread of the disk test now reuses one buffer for all its operations. In the same measurement: 0.2 to 0.3 seconds of CPU instead of 6 to 7, and nothing held in memory.

Random 4K results may rise on fast disks: the allocation used to count in the measured time, and no longer does. The other disk results, and every other test, are measured exactly as in 2.0.0.

Upgrade

Drop the new jar in plugins/ and restart. No config or data migration.

How did you find this article?
Sign in to react