mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-10-31 23:08:32 +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]
 | 
