Documentation

Documentation
V5 Documentation

RDI Storage Settings

Global-level NCrunch configuration setting Introduced NCrunch v5.0
ID/Tag in config file: RdiStorageSettings

Purpose

This setting controls how RDI should store data collected during test execution.

Data collected by RDI include the values and entire execution path of all threads and processes responsible for the execution of every test, up to configured data limits. When configured for aggressive collection, this can be hundreds of gigabytes of data for a large solution, potentially reaching terabytes in extreme situations.

To manage such a volume of data, RDI storage is highly configurable. It is possible to specify multiple storage paths, allowing data to be striped across multiple drives for better scalability and performance. Storage limits and pruning thresholds can be configured per storage path, allowing asymmetrical storage of data. Storage paths are usually system-wide and are shared by multiple solutions.

There is no default value for this setting, and RDI will not collect or report any data without at least one configured storage path. To use RDI, you must configure a storage path with sensible limits. When RDI is enabled but no storage path is configured, a warning will be shown in the Tests Window.

When using distributed processing with RDI, every grid node must specify RDI storage settings with a storage path configured. Any RDI-enabled test run on a grid node without storage settings will result in warnings being shown in the Tests Window.

Pruning

When adding a storage path, there is an option to set a pruning threshold, which is a percentage value determining at what point NCrunch should attempt to prune old data from the storage directory. When the amount of data in the directory reaches the threshold, a background thread will run inside the NCrunch engine process to clear up additional space.

Pruning targets only RDI data stored for solutions that are not currently being used by NCrunch. As multiple NCrunch sessions can exist (for example, if you have two IDEs open with different solutions), there is coordination between these sessions to avoid instability.

Recommendations

The performance of RDI-enabled tests is heavily dependent on the speed of the drive being used to store data. A modern NVME drive is highly recommended, the faster the better.

RDI can cycle a lot of data in its storage paths. Depending on your settings and the size of your solution, this may have an impact on the lifespan of your SSD. If you are heavily using RDI, it is recommended you avoid placing storage paths on the same drive as critical data on your system. With consumer grade SSDs now being widely available at very reasonable prices, it can be very worth purchasing a dedicated drive just for RDI.

Usually, pruning happens fast enough that a storage path will not reach its storage data limit. If you experience problems with limits being reached, it may be worth trying a lower pruning threshold to force cleanup to happen sooner.

Test log data being unavailable is a common symptom of RDI not having enough storage space. If you experience this often, consider increasing your storage limits or assigning additional storage paths on other drives.

Our own experimentation has shown there does not seem to be any significant improvement in performance in using a RAM Disk for RDI storage as opposed to a modern SSD.

Trial NCrunch
Take NCrunch for a spin
Do your fingers a favour and supercharge your testing workflow
Free Download