@@ -41,7 +41,7 @@ import Data.Int (Int64)
4141import Data.List (intercalate )
4242import qualified Data.Map.Strict as Map
4343import Data.Singletons
44- import Data.Word (Word16 , Word64 )
44+ import Data.Word (Word16 , Word32 , Word64 )
4545import qualified Debug.Trace as Debug
4646import qualified GHC.Stats as GC
4747import NoThunks.Class (noThunks )
@@ -182,11 +182,12 @@ data TraceEvent blk =
182182 | CountedBlocksEvent Int
183183 -- ^ triggered once during CountBLocks analysis,
184184 -- when blocks were counted
185- | HeaderSizeEvent BlockNo SlotNo Word16
185+ | HeaderSizeEvent BlockNo SlotNo Word16 Word32
186186 -- ^ triggered when header size has been measured
187187 -- * block's number
188188 -- * slot number when the block was forged
189189 -- * block's header size
190+ -- * block's size
190191 | MaxHeaderSizeEvent Word16
191192 -- ^ triggered once during ShowBlockTxsSize analysis,
192193 -- holding maximum encountered header size
@@ -238,10 +239,11 @@ instance (HasAnalysis blk, LedgerSupportsProtocol blk) => Show (TraceEvent blk)
238239 , " Known: " <> show known
239240 ]
240241 show (CountedBlocksEvent counted) = " Counted " <> show counted <> " blocks."
241- show (HeaderSizeEvent bn sn headerSize) = intercalate " \t " $ [
242+ show (HeaderSizeEvent bn sn hSz bSz) = intercalate " \t " $ [
242243 show bn
243244 , show sn
244- , " header size: " <> show headerSize
245+ , " header size: " <> show hSz
246+ , " block size: " <> show bSz
245247 ]
246248 show (MaxHeaderSizeEvent size) =
247249 " Maximum encountered header size = " <> show size
@@ -312,15 +314,16 @@ countTxOutputs AnalysisEnv { db, registry, startFrom, limit, tracer } = do
312314showHeaderSize :: forall blk . HasAnalysis blk => Analysis blk StartFromPoint
313315showHeaderSize AnalysisEnv { db, registry, startFrom, limit, tracer } = do
314316 maxHeaderSize <-
315- processAll db registry ((,) <$> GetHeader <*> GetHeaderSize ) startFrom limit 0 process
317+ processAll db registry ((,, ) <$> GetHeader <*> GetHeaderSize <*> GetBlockSize ) startFrom limit 0 process
316318 traceWith tracer $ MaxHeaderSizeEvent maxHeaderSize
317319 pure $ Just $ ResultMaxHeaderSize maxHeaderSize
318320 where
319- process :: Word16 -> (Header blk , Word16 ) -> IO Word16
320- process maxHeaderSize (hdr, headerSize) = do
321+ process :: Word16 -> (Header blk , Word16 , SizeInBytes ) -> IO Word16
322+ process maxHeaderSize (hdr, headerSize, blockSize ) = do
321323 let event = HeaderSizeEvent (blockNo hdr)
322324 (blockSlot hdr)
323325 headerSize
326+ (getSizeInBytes blockSize)
324327 traceWith tracer event
325328 return $ maxHeaderSize `max` headerSize
326329
@@ -548,7 +551,14 @@ benchmarkLedgerOps mOutfile ledgerAppMode AnalysisEnv {db, registry, startFrom,
548551 F. writeMetadata outFileHandle outFormat ledgerAppMode
549552 F. writeHeader outFileHandle outFormat
550553
551- void $ processAll db registry GetBlock startFrom limit initLedger (process outFileHandle outFormat)
554+ void $ processAll
555+ db
556+ registry
557+ ((,) <$> GetBlock <*> GetBlockSize )
558+ startFrom
559+ limit
560+ initLedger
561+ (process outFileHandle outFormat)
552562 pure Nothing
553563 where
554564 ccfg = topLevelConfigProtocol cfg
@@ -560,9 +570,9 @@ benchmarkLedgerOps mOutfile ledgerAppMode AnalysisEnv {db, registry, startFrom,
560570 IO. Handle
561571 -> F. OutputFormat
562572 -> ExtLedgerState blk
563- -> blk
573+ -> ( blk , SizeInBytes )
564574 -> IO (ExtLedgerState blk )
565- process outFileHandle outFormat prevLedgerState blk = do
575+ process outFileHandle outFormat prevLedgerState ( blk, sz) = do
566576 prevRtsStats <- GC. getRTSStats
567577 let
568578 -- Compute how many nanoseconds the mutator used from the last
@@ -604,6 +614,7 @@ benchmarkLedgerOps mOutfile ledgerAppMode AnalysisEnv {db, registry, startFrom,
604614 , DP. mut_headerApply = tHdrApp `div` 1000
605615 , DP. mut_blockTick = tBlkTick `div` 1000
606616 , DP. mut_blockApply = tBlkApp `div` 1000
617+ , DP. blockByteSize = getSizeInBytes sz
607618 , DP. blockStats = DP. BlockStats $ HasAnalysis. blockStats blk
608619 }
609620
0 commit comments