mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-12-26 16:45:18 +00:00
340 lines
7.0 KiB
Plaintext
340 lines
7.0 KiB
Plaintext
|
# Init a multi-level compaction, because multi level write amp is lower
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=1
|
||
|
L2
|
||
|
a.SET.3-c.SET.4 size=1
|
||
|
L3
|
||
|
c.SET.3-d.SET.2 size=1
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L2
|
||
|
000002:[a#3,1-c#4,1]
|
||
|
L3
|
||
|
000003:[c#3,1-d#2,1]
|
||
|
init-multi-level(1,2,3)
|
||
|
Original WriteAmp 2.00; ML WriteAmp 1.50
|
||
|
Original OverlappingRatio 1.00; ML OverlappingRatio 0.50
|
||
|
|
||
|
# Verify that the input level size should not affect the decision to conduct a multi
|
||
|
# level compaction.
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=10
|
||
|
L2
|
||
|
a.SET.3-c.SET.4 size=1
|
||
|
L3
|
||
|
c.SET.3-d.SET.2 size=1
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L2
|
||
|
000002:[a#3,1-c#4,1]
|
||
|
L3
|
||
|
000003:[c#3,1-d#2,1]
|
||
|
init-multi-level(1,2,3)
|
||
|
Original WriteAmp 1.10; ML WriteAmp 1.09
|
||
|
Original OverlappingRatio 0.10; ML OverlappingRatio 0.09
|
||
|
|
||
|
# Don't init a multi-level compaction because write amp from multi level compaction is larger
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=1
|
||
|
L2
|
||
|
a.SET.3-c.SET.4 size=1
|
||
|
L3
|
||
|
c.SET.3-d.SET.2 size=3
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L2
|
||
|
000002:[a#3,1-c#4,1]
|
||
|
|
||
|
# Init a multi-level compaction, but note that the second files in L2 and L3 do not get
|
||
|
# chosen, as they don't overlap with the original compaction.
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=6
|
||
|
L2
|
||
|
a.SET.3-c.SET.4 size=5
|
||
|
e.SET.1-h.SET.4 size=4
|
||
|
L3
|
||
|
c.SET.3-d.SET.2 size=6
|
||
|
e.SET.2-h.SET.4 size=4
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L2
|
||
|
000002:[a#3,1-c#4,1]
|
||
|
L3
|
||
|
000004:[c#3,1-d#2,1]
|
||
|
init-multi-level(1,2,3)
|
||
|
Original WriteAmp 1.83; ML WriteAmp 1.55
|
||
|
Original OverlappingRatio 0.83; ML OverlappingRatio 0.55
|
||
|
|
||
|
# Init a multi-level compaction without an overlapping file in the lowest level.
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=6
|
||
|
L2 max-size=5
|
||
|
a.SET.3-c.SET.4 size=5
|
||
|
L3
|
||
|
e.SET.3-f.SET.2 size=100
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L2
|
||
|
000002:[a#3,1-c#4,1]
|
||
|
init-multi-level(1,2,3)
|
||
|
Original WriteAmp 1.83; ML WriteAmp 1.00
|
||
|
Original OverlappingRatio 0.83; ML OverlappingRatio 0.00
|
||
|
|
||
|
# Init a multi-level compaction with no file in the lowest level.
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=6
|
||
|
L2
|
||
|
a.SET.3-c.SET.4 size=5
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L2
|
||
|
000002:[a#3,1-c#4,1]
|
||
|
init-multi-level(1,2,3)
|
||
|
Original WriteAmp 1.83; ML WriteAmp 1.00
|
||
|
Original OverlappingRatio 0.83; ML OverlappingRatio 0.00
|
||
|
|
||
|
|
||
|
# Don't init a multi-level compaction, as the single level compaction results in a move (
|
||
|
# write amp is 1) while the multi level compaction results in a Write Amp greater than 1
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=6
|
||
|
L2
|
||
|
e.SET.3-f.SET.2 size=100
|
||
|
L3
|
||
|
a.SET.3-c.SET.4 size=5
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
|
||
|
# Init a multi-level compaction, without an overlapping file in the (tie goes to the ML compaction!)
|
||
|
# intermediate and output levels
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=6
|
||
|
L2
|
||
|
e.SET.3-f.SET.2 size=1
|
||
|
L3
|
||
|
e.SET.4-f.SET.5 size=5
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
init-multi-level(1,2,3)
|
||
|
Original WriteAmp 1.00; ML WriteAmp 1.00
|
||
|
Original OverlappingRatio 0.00; ML OverlappingRatio 0.00
|
||
|
|
||
|
|
||
|
# Init a multi-level compaction which expands the intermediate level with a file that only
|
||
|
# overlaps with the lowest level. (I.e. it gets included during second setupInputs call)
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=3
|
||
|
L2
|
||
|
a.SET.2-b.SET.3 size=5
|
||
|
c.SET.2-d.SET.3 size=3
|
||
|
L3
|
||
|
a.SET.3-c.SET.4 size=3
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L2
|
||
|
000002:[a#2,1-b#3,1]
|
||
|
000003:[c#2,1-d#3,1]
|
||
|
L3
|
||
|
000004:[a#3,1-c#4,1]
|
||
|
init-multi-level(1,2,3)
|
||
|
Original WriteAmp 2.67; ML WriteAmp 1.27
|
||
|
Original OverlappingRatio 1.67; ML OverlappingRatio 0.27
|
||
|
|
||
|
# Init a multi-level compaction which DOES NOT expand the input level with a file that
|
||
|
# only overlaps with the lowest level, even if it doesn't expand the output level keyspan.
|
||
|
# TODO(msbutler): include this file in the compaction
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=1
|
||
|
c.SET.2-d.SET.3 size=10
|
||
|
L2
|
||
|
a.SET.2-b.SET.3 size=1
|
||
|
L3
|
||
|
a.SET.3-c.SET.4 size=1
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L2
|
||
|
000003:[a#2,1-b#3,1]
|
||
|
L3
|
||
|
000004:[a#3,1-c#4,1]
|
||
|
init-multi-level(1,2,3)
|
||
|
Original WriteAmp 2.00; ML WriteAmp 1.50
|
||
|
Original OverlappingRatio 1.00; ML OverlappingRatio 0.50
|
||
|
|
||
|
# Verify an expansion of the output level in the initial setupInputs will init a multi-level
|
||
|
# compaction. i.e. without the initial expansion, the multil level compaction would not have
|
||
|
# occurred.
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.5-b.SET.6 size=1
|
||
|
L2
|
||
|
a.SET.3-c.SET.4 size=1
|
||
|
c.SET.3-d.SET.2 size=1
|
||
|
L3
|
||
|
c.SET.4-d.SET.4 size=3
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#5,1-b#6,1]
|
||
|
L2
|
||
|
000002:[a#3,1-c#4,1]
|
||
|
000003:[c#3,1-d#2,1]
|
||
|
L3
|
||
|
000004:[c#4,1-d#4,1]
|
||
|
init-multi-level(1,2,3)
|
||
|
Original WriteAmp 3.00; ML WriteAmp 2.00
|
||
|
Original OverlappingRatio 2.00; ML OverlappingRatio 1.00
|
||
|
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.5-b.SET.6 size=1
|
||
|
L2
|
||
|
a.SET.3-c.SET.4 size=1
|
||
|
L3
|
||
|
c.SET.4-d.SET.4 size=3
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#5,1-b#6,1]
|
||
|
L2
|
||
|
000002:[a#3,1-c#4,1]
|
||
|
|
||
|
|
||
|
# Verify the second setupInputs call does not add an intermediate file if doing so would expand the
|
||
|
# output level (i.e. the pc.grow logic).
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=1
|
||
|
L2
|
||
|
a.SET.2-b.SET.3 size=1
|
||
|
d.SET.2-f.SET.2 size=1
|
||
|
L3
|
||
|
b.SET.1-d.SET.1 size=1
|
||
|
e.SET.4-f.SET.5 size=1
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L2
|
||
|
000002:[a#2,1-b#3,1]
|
||
|
L3
|
||
|
000004:[b#1,1-d#1,1]
|
||
|
init-multi-level(1,2,3)
|
||
|
Original WriteAmp 2.00; ML WriteAmp 1.50
|
||
|
Original OverlappingRatio 1.00; ML OverlappingRatio 0.50
|
||
|
|
||
|
# Verify the max number of input levels equals 2.
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=6
|
||
|
L2
|
||
|
a.SET.3-c.SET.4 size=5
|
||
|
L3
|
||
|
c.SET.3-d.SET.2 size=2
|
||
|
L4
|
||
|
c.SET.4-d.SET.3 size=1
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L2
|
||
|
000002:[a#3,1-c#4,1]
|
||
|
L3
|
||
|
000003:[c#3,1-d#2,1]
|
||
|
init-multi-level(1,2,3)
|
||
|
Original WriteAmp 1.83; ML WriteAmp 1.18
|
||
|
Original OverlappingRatio 0.83; ML OverlappingRatio 0.18
|
||
|
|
||
|
# Don't init multi-level compaction if the max size limit exceeded by initial setupInputs.
|
||
|
setup-inputs avail-bytes=10 a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=6
|
||
|
L2
|
||
|
a.SET.5-b.SET.6 size=5
|
||
|
L3
|
||
|
a.SET.3-d.SET.4 size=3
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L2
|
||
|
000002:[a#5,1-b#6,1]
|
||
|
|
||
|
# During second setupInputs call, allow output level expansion even if max size
|
||
|
# limit is exceeded, but not conduct intermediate level expansion.
|
||
|
#
|
||
|
# TODO(msbutler): If second setup inputs exceeds maxSize limits, should the first compaction get
|
||
|
# returned?
|
||
|
setup-inputs avail-bytes=20 a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=4
|
||
|
L2
|
||
|
a.SET.5-b.SET.6 size=5
|
||
|
c.SET.4-e.SET.3 size=8
|
||
|
L3
|
||
|
a.SET.3-d.SET.4 size=2
|
||
|
d.SET.2-e.SET.2 size=2
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L2
|
||
|
000002:[a#5,1-b#6,1]
|
||
|
L3
|
||
|
000004:[a#3,1-d#4,1]
|
||
|
000005:[d#2,1-e#2,1]
|
||
|
init-multi-level(1,2,3)
|
||
|
Original WriteAmp 2.25; ML WriteAmp 1.44
|
||
|
Original OverlappingRatio 1.25; ML OverlappingRatio 0.44
|
||
|
|
||
|
# Don't init a multi-level compaction if the start level is L5.
|
||
|
setup-inputs a a
|
||
|
L5
|
||
|
a.SET.1-b.SET.2 size=6
|
||
|
L6
|
||
|
a.SET.3-c.SET.4 size=5
|
||
|
----
|
||
|
L5
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L6
|
||
|
000002:[a#3,1-c#4,1]
|
||
|
|
||
|
# Don't init a multi-level compaction if the start level is L0.
|
||
|
setup-inputs a a
|
||
|
L0
|
||
|
a.SET.1-b.SET.2 size=6
|
||
|
L1
|
||
|
a.SET.3-c.SET.4 size=5
|
||
|
----
|
||
|
L0
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L1
|
||
|
000002:[a#3,1-c#4,1]
|
||
|
|
||
|
# Verify a multi level compaction will not init on a compacting file.
|
||
|
setup-inputs a a
|
||
|
L1
|
||
|
a.SET.1-b.SET.2 size=1
|
||
|
L2
|
||
|
a.SET.3-c.SET.4 size=1
|
||
|
L3
|
||
|
c.SET.3-d.SET.2 size=1 compacting
|
||
|
----
|
||
|
L1
|
||
|
000001:[a#1,1-b#2,1]
|
||
|
L2
|
||
|
000002:[a#3,1-c#4,1]
|