From b9b726933f0accc8a23f227d3ed4fc8a761f8cf7 Mon Sep 17 00:00:00 2001 From: Federico Mastellone Date: Tue, 11 Feb 2025 00:02:24 +0000 Subject: [PATCH] wb | profiles playground with "calibrate-blockmem-x1.5" and "calibrate-blockmem-x2" --- Makefile | 4 + bench/cardano-profile/cardano-profile.cabal | 3 + .../data/all-profiles-coay.json | 20 ++--- .../overlays/budget/block/memory/double.json | 7 ++ .../budget/block/memory/oneandahalf.json | 7 ++ .../block/steps/double.json} | 0 .../block/steps/half.json} | 0 .../Benchmarking/Profile/Playground.hs | 85 +++++++++++++++++++ .../Benchmarking/Profile/Primitives.hs | 29 ++++++- 9 files changed, 142 insertions(+), 13 deletions(-) create mode 100644 bench/cardano-profile/data/genesis/overlays/budget/block/memory/double.json create mode 100644 bench/cardano-profile/data/genesis/overlays/budget/block/memory/oneandahalf.json rename bench/cardano-profile/data/genesis/overlays/{doublebudget.json => budget/block/steps/double.json} (100%) rename bench/cardano-profile/data/genesis/overlays/{stepshalf.json => budget/block/steps/half.json} (100%) create mode 100644 bench/cardano-profile/src/Cardano/Benchmarking/Profile/Playground.hs diff --git a/Makefile b/Makefile index e833f85422e..7e7b31bc9d0 100644 --- a/Makefile +++ b/Makefile @@ -82,6 +82,10 @@ include wb_profiles.mk $(eval $(call define_profile_targets, $(LOCAL_PROFILES))) $(eval $(call define_profile_targets_nomadcloud,$(CLOUD_PROFILES))) +# Dynamic local/supervisor profile targets. +playground-%: + nix-shell -A 'workbench-shell' --max-jobs 8 --cores 0 --show-trace --argstr profileName $*-${ERA} --argstr backendName supervisor + ### ### Misc ### diff --git a/bench/cardano-profile/cardano-profile.cabal b/bench/cardano-profile/cardano-profile.cabal index 1eb05780223..35f58861334 100644 --- a/bench/cardano-profile/cardano-profile.cabal +++ b/bench/cardano-profile/cardano-profile.cabal @@ -16,6 +16,8 @@ build-type: Simple data-files: data/all-profiles-coay.json data/genesis/epoch-timeline.json data/genesis/overlays/*.json + data/genesis/overlays/budget/block/memory/*.json + data/genesis/overlays/budget/block/steps/*.json data/presets/*.json data/test/ci-test-bage.json data/test/default-coay/*.json @@ -61,6 +63,7 @@ library , Cardano.Benchmarking.Profile.Extra.Scaling , Cardano.Benchmarking.Profile.Extra.Voting , Cardano.Benchmarking.Profile.NodeSpecs + , Cardano.Benchmarking.Profile.Playground , Cardano.Benchmarking.Profile.Primitives , Cardano.Benchmarking.Profile.Vocabulary , Cardano.Benchmarking.Profile.Types diff --git a/bench/cardano-profile/data/all-profiles-coay.json b/bench/cardano-profile/data/all-profiles-coay.json index 6d20a0b50c2..a78d92beed8 100644 --- a/bench/cardano-profile/data/all-profiles-coay.json +++ b/bench/cardano-profile/data/all-profiles-coay.json @@ -45215,7 +45215,7 @@ "pparamsEpoch": 300, "pparamsOverlays": [ "v8-preview", - "doublebudget" + "budget/block/steps/double" ], "shelley": { "activeSlotsCoeff": 0.05, @@ -45664,7 +45664,7 @@ "pparamsEpoch": 300, "pparamsOverlays": [ "v8-preview", - "stepshalf" + "budget/block/steps/half" ], "shelley": { "activeSlotsCoeff": 0.05, @@ -60436,7 +60436,7 @@ "pparamsEpoch": 300, "pparamsOverlays": [ "v8-preview", - "doublebudget" + "budget/block/steps/double" ], "shelley": { "activeSlotsCoeff": 0.05, @@ -60871,7 +60871,7 @@ "pparamsEpoch": 300, "pparamsOverlays": [ "v8-preview", - "stepshalf" + "budget/block/steps/half" ], "shelley": { "activeSlotsCoeff": 0.05, @@ -61937,7 +61937,7 @@ "pparamsEpoch": 300, "pparamsOverlays": [ "v8-preview", - "doublebudget" + "budget/block/steps/double" ], "shelley": { "activeSlotsCoeff": 0.05, @@ -62386,7 +62386,7 @@ "pparamsEpoch": 300, "pparamsOverlays": [ "v8-preview", - "stepshalf" + "budget/block/steps/half" ], "shelley": { "activeSlotsCoeff": 0.05, @@ -63466,7 +63466,7 @@ "pparamsEpoch": 300, "pparamsOverlays": [ "v8-preview", - "doublebudget" + "budget/block/steps/double" ], "shelley": { "activeSlotsCoeff": 0.05, @@ -63915,7 +63915,7 @@ "pparamsEpoch": 300, "pparamsOverlays": [ "v8-preview", - "stepshalf" + "budget/block/steps/half" ], "shelley": { "activeSlotsCoeff": 0.05, @@ -68230,7 +68230,7 @@ "pool_coin": 1000000000000000, "pparamsEpoch": 507, "pparamsOverlays": [ - "doublebudget" + "budget/block/steps/double" ], "shelley": { "activeSlotsCoeff": 0.05, @@ -69131,7 +69131,7 @@ "pool_coin": 1000000000000000, "pparamsEpoch": 507, "pparamsOverlays": [ - "stepshalf" + "budget/block/steps/half" ], "shelley": { "activeSlotsCoeff": 0.05, diff --git a/bench/cardano-profile/data/genesis/overlays/budget/block/memory/double.json b/bench/cardano-profile/data/genesis/overlays/budget/block/memory/double.json new file mode 100644 index 00000000000..fd471897b7e --- /dev/null +++ b/bench/cardano-profile/data/genesis/overlays/budget/block/memory/double.json @@ -0,0 +1,7 @@ +{ + "alonzo": { + "maxBlockExUnits": { + "exUnitsMem": 124000000 + } + } +} diff --git a/bench/cardano-profile/data/genesis/overlays/budget/block/memory/oneandahalf.json b/bench/cardano-profile/data/genesis/overlays/budget/block/memory/oneandahalf.json new file mode 100644 index 00000000000..0aee0a4328d --- /dev/null +++ b/bench/cardano-profile/data/genesis/overlays/budget/block/memory/oneandahalf.json @@ -0,0 +1,7 @@ +{ + "alonzo": { + "maxBlockExUnits": { + "exUnitsMem": 93000000 + } + } +} diff --git a/bench/cardano-profile/data/genesis/overlays/doublebudget.json b/bench/cardano-profile/data/genesis/overlays/budget/block/steps/double.json similarity index 100% rename from bench/cardano-profile/data/genesis/overlays/doublebudget.json rename to bench/cardano-profile/data/genesis/overlays/budget/block/steps/double.json diff --git a/bench/cardano-profile/data/genesis/overlays/stepshalf.json b/bench/cardano-profile/data/genesis/overlays/budget/block/steps/half.json similarity index 100% rename from bench/cardano-profile/data/genesis/overlays/stepshalf.json rename to bench/cardano-profile/data/genesis/overlays/budget/block/steps/half.json diff --git a/bench/cardano-profile/src/Cardano/Benchmarking/Profile/Playground.hs b/bench/cardano-profile/src/Cardano/Benchmarking/Profile/Playground.hs new file mode 100644 index 00000000000..81bb0a814ff --- /dev/null +++ b/bench/cardano-profile/src/Cardano/Benchmarking/Profile/Playground.hs @@ -0,0 +1,85 @@ +{-# LANGUAGE Trustworthy #-} +{-# LANGUAGE OverloadedStrings #-} + +-------------------------------------------------------------------------------- + +module Cardano.Benchmarking.Profile.Playground ( + profilesNoEraPlayground +) where + +-------------------------------------------------------------------------------- + +import Prelude +import Data.Function ((&)) +-- Package: aeson. +import qualified Data.Aeson as Aeson +import qualified Data.Aeson.KeyMap as KeyMap +-- Package: self. +import qualified Cardano.Benchmarking.Profile.Builtin.Miniature as M +import qualified Cardano.Benchmarking.Profile.Primitives as P +import qualified Cardano.Benchmarking.Profile.Types as Types +import qualified Cardano.Benchmarking.Profile.Vocabulary as V + +-------------------------------------------------------------------------------- + +-- Corrections to fill the block memory budget with 4 txs per block. +calibrate15x :: Aeson.Object +calibrate15x = + KeyMap.fromList [ + ("genesis", Aeson.Object $ KeyMap.fromList [ + ("alonzo", Aeson.Object $ KeyMap.fromList [ + ("maxTxExUnits", Aeson.Object $ KeyMap.fromList [ + ("exUnitsMem", Aeson.Number 23250000) + ]) + ]) + ]) + , ("generator", Aeson.Object $ KeyMap.fromList [ + -- "ns":"Mempool.RejectedTx","data":{"err":{"fee":1000000,"kind":"FeeTooSmallUTxO","minimum":1892175} + ("tx_fee", Aeson.Number 1892175) + ]) + ] + +-- Corrections to fill the block memory budget with 4 txs per block. +calibrate2x :: Aeson.Object +calibrate2x = + KeyMap.fromList [ + ("genesis", Aeson.Object $ KeyMap.fromList [ + ("alonzo", Aeson.Object $ KeyMap.fromList [ + ("maxTxExUnits", Aeson.Object $ KeyMap.fromList [ + ("exUnitsMem", Aeson.Number 31000000) + ]) + ]) + ]) + , ("generator", Aeson.Object $ KeyMap.fromList [ + -- "ns":"Mempool.RejectedTx","data":{"err":{"fee":2463202,"kind":"FeeTooSmallUTxO","minimum":2463246} + ("tx_fee", Aeson.Number 2463246) + ]) + ] + +profilesNoEraPlayground :: [Types.Profile] +profilesNoEraPlayground = + ------------------------------------------------------------------------------ + -- ci-bench like: 2 nodes, FixedLoaded and "--shutdown-on-block-synced 15" + ------------------------------------------------------------------------------ + let ciBenchLike = + P.empty & M.base . P.dreps 0 + . P.uniCircle . P.loopback . V.hosts 2 + . M.benchDuration + . P.traceForwardingOn . P.newTracing + . P.p2pOn + . V.clusterDefault -- TODO: "cluster" should be "null" here. + . V.genesisVariantVoltaire + -- Cloud Plutus workload + . V.plutusTypeLoop . V.plutusBase . P.tps 0.85 + . P.analysisSizeSmall + mem15x = P.budgetBlockMemoryOneAndAHalf + mem2x = P.budgetBlockMemoryDouble + in [ + -- Voltaire (like cloud profiles) + -- Baseline. + ciBenchLike & P.name "calibrate-volt" + , ciBenchLike & P.name "calibrate-blockmem-x1.5-volt" . mem15x + , ciBenchLike & P.name "calibrate-blockmem-x1.5-volt-fill" . mem15x . P.overlay calibrate15x + , ciBenchLike & P.name "calibrate-blockmem-x2-volt" . mem2x + , ciBenchLike & P.name "calibrate-blockmem-x2-volt-fill" . mem2x . P.overlay calibrate2x + ] diff --git a/bench/cardano-profile/src/Cardano/Benchmarking/Profile/Primitives.hs b/bench/cardano-profile/src/Cardano/Benchmarking/Profile/Primitives.hs index a92156f5fb0..1ca66daecc4 100644 --- a/bench/cardano-profile/src/Cardano/Benchmarking/Profile/Primitives.hs +++ b/bench/cardano-profile/src/Cardano/Benchmarking/Profile/Primitives.hs @@ -42,7 +42,16 @@ module Cardano.Benchmarking.Profile.Primitives ( , pparamsEpoch -- Overlays to use. , v8Preview, v9Preview, v10Preview - , stepHalf, doubleBudget, blocksize64k + -- Budget overlays: + -- -- Block: + -- -- -- Steps: + , stepHalf, doubleBudget + -- -- -- Memory: + , budgetBlockMemoryOneAndAHalf, budgetBlockMemoryDouble + -- -- TX: + + -- Others + , blocksize64k , voting -- Customize the "shelley", "alonzo" or "conway" properties. , shelley, alonzo, conway @@ -430,11 +439,25 @@ v9Preview = helper_addOverlayOrDie "v9-preview" v10Preview :: HasCallStack => Types.Profile -> Types.Profile v10Preview = helper_addOverlayOrDie "v10-preview" +-- Budget: + +-- Steps: + +-- budgetBlockStepsHalf stepHalf :: HasCallStack => Types.Profile -> Types.Profile -stepHalf = helper_addOverlayOrDie "stepshalf" +stepHalf = helper_addOverlayOrDie "budget/block/steps/half" +-- budgetBlockStepsDouble doubleBudget :: HasCallStack => Types.Profile -> Types.Profile -doubleBudget = helper_addOverlayOrDie "doublebudget" +doubleBudget = helper_addOverlayOrDie "budget/block/steps/double" + +-- Memory + +budgetBlockMemoryOneAndAHalf :: HasCallStack => Types.Profile -> Types.Profile +budgetBlockMemoryOneAndAHalf = helper_addOverlayOrDie "budget/block/memory/oneandahalf" + +budgetBlockMemoryDouble :: HasCallStack => Types.Profile -> Types.Profile +budgetBlockMemoryDouble = helper_addOverlayOrDie "budget/block/memory/double" -- used to manually reduce block size for e.g. Conway; has to be applied *AFTER* any v?-preview overlay. blocksize64k :: HasCallStack => Types.Profile -> Types.Profile