Skip to content

Commit 70b56d3

Browse files
committed
LinearLeios: new parameters for LinearEB generation and validation CPU costs
1 parent effb92e commit 70b56d3

File tree

5 files changed

+24
-4
lines changed

5 files changed

+24
-4
lines changed

leios-trace-hs/src/LeiosConfig.hs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ data Config = Config
135135
, ebSizeBytesConstant :: SizeBytes
136136
, ebSizeBytesPerIb :: SizeBytes
137137
, ebBodyAvgSizeBytes :: SizeBytes
138+
, ebBodyValidationCpuTimeMsConstant :: DurationMs
139+
, ebBodyValidationCpuTimeMsPerByte :: DurationMs
138140
, ebDiffusionStrategy :: DiffusionStrategy
139141
, ebDiffusionMaxWindowSize :: Word16
140142
, ebDiffusionMaxHeadersToRequest :: Word16
@@ -211,7 +213,9 @@ instance Default Config where
211213
, ebValidationCpuTimeMs = 1.0
212214
, ebSizeBytesConstant = 240
213215
, ebSizeBytesPerIb = 32
214-
, ebBodyAvgSizeBytes = 5000000
216+
, ebBodyAvgSizeBytes = 2500000
217+
, ebBodyValidationCpuTimeMsConstant = 50.0
218+
, ebBodyValidationCpuTimeMsPerByte = 0.0005
215219
, ebDiffusionStrategy = PeerOrder
216220
, ebDiffusionMaxWindowSize = 100
217221
, ebDiffusionMaxHeadersToRequest = 100
@@ -291,6 +295,8 @@ configToKVsWith getter cfg =
291295
, get @"ebSizeBytesConstant" getter cfg
292296
, get @"ebSizeBytesPerIb" getter cfg
293297
, get @"ebBodyAvgSizeBytes" getter cfg
298+
, get @"ebBodyValidationCpuTimeMsConstant" getter cfg
299+
, get @"ebBodyValidationCpuTimeMsPerByte" getter cfg
294300
, get @"ebDiffusionStrategy" getter cfg
295301
, get @"ebDiffusionMaxWindowSize" getter cfg
296302
, get @"ebDiffusionMaxHeadersToRequest" getter cfg
@@ -382,6 +388,8 @@ instance FromJSON Config where
382388
ebSizeBytesConstant <- parseFieldOrDefault @Config @"ebSizeBytesConstant" obj
383389
ebSizeBytesPerIb <- parseFieldOrDefault @Config @"ebSizeBytesPerIb" obj
384390
ebBodyAvgSizeBytes <- parseFieldOrDefault @Config @"ebBodyAvgSizeBytes" obj
391+
ebBodyValidationCpuTimeMsConstant <- parseFieldOrDefault @Config @"ebBodyValidationCpuTimeMsConstant" obj
392+
ebBodyValidationCpuTimeMsPerByte <- parseFieldOrDefault @Config @"ebBodyValidationCpuTimeMsPerByte" obj
385393
ebDiffusionStrategy <- parseFieldOrDefault @Config @"ebDiffusionStrategy" obj
386394
ebDiffusionMaxWindowSize <- parseFieldOrDefault @Config @"ebDiffusionMaxWindowSize" obj
387395
ebDiffusionMaxHeadersToRequest <- parseFieldOrDefault @Config @"ebDiffusionMaxHeadersToRequest" obj

simulation/src/LeiosProtocol/Short.hs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ data LeiosDelays = LeiosDelays
6464
-- ^ hash matching and payload validation (incl. tx scripts)
6565
, endorseBlockGeneration :: !(EndorseBlock -> DiffTime)
6666
, endorseBlockValidation :: !(EndorseBlock -> DiffTime)
67+
, linearEndorseBlockGeneration :: !(InputBlock -> DiffTime)
68+
, linearEndorseBlockValidation :: !(InputBlock -> DiffTime)
6769
, voteMsgGeneration :: !(VoteMsg -> [EndorseBlock] -> DiffTime)
6870
, linearVoteMsgGeneration :: !(VoteMsg -> [InputBlock] -> DiffTime)
6971
, voteMsgValidation :: !(VoteMsg -> DiffTime)
@@ -269,6 +271,11 @@ convertConfig disk =
269271
+ disk.ibBodyValidationCpuTimeMsPerByte * fromIntegral ib.body.size
270272
, endorseBlockGeneration = const $ durationMsToDiffTime disk.ebGenerationCpuTimeMs
271273
, endorseBlockValidation = const $ durationMsToDiffTime disk.ebValidationCpuTimeMs
274+
, linearEndorseBlockGeneration = const $ durationMsToDiffTime disk.ebGenerationCpuTimeMs
275+
, linearEndorseBlockValidation = \ib ->
276+
durationMsToDiffTime $
277+
disk.ebBodyValidationCpuTimeMsConstant
278+
+ disk.ebBodyValidationCpuTimeMsPerByte * fromIntegral ib.body.size
272279
, -- TODO: can parallelize?
273280
voteMsgGeneration = \vm ebs ->
274281
assert (vm.endorseBlocks == map (.id) ebs) $
@@ -376,6 +383,8 @@ delaysAndSizesAsFull cfg@LeiosConfig{pipeline, voteSendStage} =
376383
, inputBlockValidation = const @DiffTime $ cfg.delays.inputBlockValidation fullIB
377384
, endorseBlockGeneration = const @DiffTime $ cfg.delays.endorseBlockGeneration fullEB
378385
, endorseBlockValidation = const @DiffTime $ cfg.delays.endorseBlockValidation fullEB
386+
, linearEndorseBlockGeneration = const @DiffTime $ cfg.delays.linearEndorseBlockGeneration fullIB
387+
, linearEndorseBlockValidation = const @DiffTime $ cfg.delays.linearEndorseBlockValidation fullIB
379388
, voteMsgGeneration =
380389
const $
381390
const @DiffTime $

simulation/src/LeiosProtocol/Short/Generate.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ leiosBlockGenerator LeiosGeneratorConfig{..} =
9292
i <- nextBlkId InputBlockId
9393
let header = mkInputBlockHeader leios i slot (SubSlotNo 0) nodeId (BlockHash $ blockHash rb)
9494
let !ib = mkInputBlock leios header ibData.txsPayload
95-
let !task2 = leios.delays.inputBlockGeneration ib
95+
let !task2 = leios.delays.linearEndorseBlockGeneration ib
9696
return [(task, Left (rbData.prevChain, rb)), (task2, Right ib)]
9797
execute' slot Propose{ibSlot, delay} wins = do
9898
ibData <- lift $ atomically buffers.newIBData

simulation/src/LeiosProtocol/Short/Node.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1100,7 +1100,7 @@ dispatchValidationSTM tracer cfg leiosState req =
11001100
valLinearEB x alreadyCertified completion =
11011101
let
11021102
decimate = if alreadyCertified then (/ 10) else id -- TODO better ratio
1103-
delay prefix = cpuTask prefix (decimate . cfg.leios.delays.inputBlockValidation) x
1103+
delay prefix = cpuTask prefix (decimate . cfg.leios.delays.linearEndorseBlockValidation) x
11041104
task = atomically $ do
11051105
completion [(convertLinearId x.id, x)]
11061106
adoptLinearEB cfg leiosState x

simulation/src/LeiosProtocol/Short/Sim.hs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,10 +477,13 @@ traceRelayLink1 connectionOptions =
477477
inputBlockValidation = const 0.1
478478
, -- \^ hash matching and payload validation (incl. tx scripts)
479479
endorseBlockValidation = const 0.005
480-
, voteMsgValidation = const 0.005
480+
, linearEndorseBlockValidation = const 1
481+
, -- \^ hash matching and payload validation (incl. tx scripts)
482+
voteMsgValidation = const 0.005
481483
, certificateGeneration = const 0.050
482484
, inputBlockGeneration = const 0
483485
, endorseBlockGeneration = const 0
486+
, linearEndorseBlockGeneration = const 0
484487
, voteMsgGeneration = const (const 0)
485488
, linearVoteMsgGeneration = const (const 0)
486489
, certificateValidation = const 0

0 commit comments

Comments
 (0)