ISSUE SUMMARY
The parallelCollectionScan command pre-fetches the first extent for each cursor upon construction of the cursors. During cursor iteration, when a cursor needs to hop to the next extent, it also pre-fetches that extent. This can result in pre-fetching of large amounts of data. Performance tests show that disabling pre-fetching is more performant overall in most cases.
USER IMPACT
For large numbers of cursors with a big collection, this can mean aggressive pre-fetching of many gigabytes. This can cause large, unwanted spikes in disk IO.
WORKAROUNDS
None.
AFFECTED VERSIONS
All production releases up to version 2.6.3 are affected by this issue.
FIX VERSION
The fix is included in the 2.6.4 production release.
RESOLUTION DETAILS
Pre-fetching was disabled for the parallelCollectionScan command.
Original description
The parallelCollectionScan command pre-fetches the first extent for each cursor upon construction of the cursors. During cursor iteration, when a cursor needs to hop to the next extent, it also pre-fetches that extent.
For large numbers of cursors with a big collection, this can mean aggressive pre-fetching of many gigabytes. This can cause large, unwanted spikes in disk IO.