This adds a new server parameter 'oplogBatchDelayMillis', which can be used to improve batching (and thus reduce I/O operations) on secondaries at the cost of increasing majority-write latency. The default is 0, no delay.
The combination of ending oplog batches when the commit point moves and oplog exhaust results in very small oplog batches when the secondaries are nearly caught up. This results in more iops on the secondary. This ticket will add a knob to delay oplog batching when we're caught up, which will improve batching at the expense of some w:majority latency. Experimentally a modest delay of 20ms was enough to restore full-sized batches when the oplog is being continuously written (e.g. multi-update). The default for this parameter will be 0.