@@ -884,17 +884,14 @@ supplyCredits conf c levels =
884
884
-- on the merging run.
885
885
--
886
886
-- 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
888
888
-- 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) =
898
895
-- A levelling merge has 1 input run and one resident run, which is (up
899
896
-- to) 4x bigger than the others. It needs to be completed before
900
897
-- another run comes in.
@@ -904,6 +901,11 @@ scaleCreditsForMerge LevelLevelling mr (Credits c) =
904
901
-- worst-case upper bound by looking at the sizes of the input runs.
905
902
-- As as result, merge work would/could be more evenly distributed over
906
903
-- 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).
907
909
let NumRuns n = MR. numRuns mr
908
910
-- same as division rounding up: ceiling (c * n / 4)
909
911
in MR. Credits ((c * n + 3 ) `div` 4 )
0 commit comments