Mongoose storage performance testing tool - base functionality
Mongoose is a distributed storage performance testing tool. This repo contains the basic functionality only. See the
extensions for the actual use.
Using fibers allows to sustain millions of concurrent operations easily without
significant performance degradation.
The distributed mode in Mongoose was designed as P2P network. Each peer/node performs
independently as much as possible. This eliminates the excess network interaction between the nodes which may be a
bottleneck.
CRUD operations and the extensions: Noop, Copy, etc
Complex Load Steps
Allows to validate the data read back from the storage successfully even after the data items have been randomly
updated multiple times before
Custom Payload Data
Scenarios allow to organize the load steps in the required order and reuse the complex performance tests
The metrics reported by Mongoose are designed to be most useful for the performance analysis. The following metrics are
available:
Counts
Rates
Timing distributions for:
Actual concurrency
It’s possible to limit the rate and measure the sustained actual concurrency
The average metrics output is being done periodically while a load step is running. The summary metrics output is
done once when a load step is finished. Also, it’s possible to obtain the highest precision metrics (for each operation,
so called I/O trace records).
Mongoose is designed to be agnostic to the particular extensions implementations. This allows to support any storage,
scenario language, different load step kinds.
The load step is needed to define how to generate the load (operations type/order/ratio/etc).
Mongoose basically includes the linear load step implementation which may be considered as a straightforward way to
generate a load. Other load step implementations allow to specify some custom and more complex load pattern. See the
known load step extensions among the bundle components
either among the additional extensions.
The storage driver is used by Mongoose to interact with the given storage. It translates the Mongoose’s abstract
operations into the actual I/O requests and executes them. Mongoose basically includes the dummy storage driver only
which does nothing actually and useful only for demo/testing purposes. See the known storage driver extensions among the
bundle components either among the
additional extensions.
Any Mongoose scenario may be written using any JSR-223 compliant scripting language. Javascript support is available
out-of-the-box.
This repo (mongoose-base
) containts only base functionality. All extentions and additional mongoose tools located into the independent repos and the corresponding components. Each component has its own documentation, CI versioning.