@@ -884,17 +884,14 @@ supplyCredits conf c levels =
884884-- on the merging run.
885885--
886886-- Initially, 1 update supplies 1 credit. However, since merging runs have
887- -- different numbers of input runs/entries, we may have to a more or less
887+ -- different numbers of input runs\ /entries, we may have to a more or less
888888-- merging work than 1 merge step for each credit.
889- scaleCreditsForMerge :: MergePolicyForLevel -> Ref (MergingRun m h ) -> Credits -> MR. Credits
890- -- A single run is a trivially completed merge, so it requires no credits.
891- scaleCreditsForMerge LevelTiering _ (Credits c) =
892- -- A tiering merge has 5 runs at most (one could be held back to merged
893- -- again) and must be completed before the level is full (once 4 more
894- -- runs come in).
895- MR. Credits (c * (1 + 4 ))
896-
897- scaleCreditsForMerge LevelLevelling mr (Credits c) =
889+ scaleCreditsForMerge ::
890+ MergePolicyForLevel
891+ -> Ref (MergingRun m h )
892+ -> Credits
893+ -> MR. Credits
894+ scaleCreditsForMerge LevelLevelling _ (Credits c) =
898895 -- A levelling merge has 1 input run and one resident run, which is (up
899896 -- to) 4x bigger than the others. It needs to be completed before
900897 -- another run comes in.
@@ -904,6 +901,11 @@ scaleCreditsForMerge LevelLevelling mr (Credits c) =
904901 -- worst-case upper bound by looking at the sizes of the input runs.
905902 -- As as result, merge work would/could be more evenly distributed over
906903 -- time when the resident run is smaller than the worst case.
904+ MR. Credits (c * (1 + 4 ))
905+ scaleCreditsForMerge LevelTiering mr (Credits c) =
906+ -- A tiering merge has 5 runs at most (one could be held back to merged
907+ -- again) and must be completed before the level is full (once 4 more
908+ -- runs come in).
907909 let NumRuns n = MR. numRuns mr
908910 -- same as division rounding up: ceiling (c * n / 4)
909911 in MR. Credits ((c * n + 3 ) `div` 4 )
0 commit comments