diff --git a/beacon-chain/core/BUILD.bazel b/beacon-chain/core/BUILD.bazel index e0b53388f3..8f8d44dd68 100644 --- a/beacon-chain/core/BUILD.bazel +++ b/beacon-chain/core/BUILD.bazel @@ -9,7 +9,6 @@ go_library( "//endtoend/evaluators:__pkg__", "//fuzz:__pkg__", "//shared/attestationutil:__pkg__", - "//shared/benchutil/benchmark_files:__subpackages__", "//shared/depositutil:__pkg__", "//shared/interop:__pkg__", "//shared/keystore:__pkg__", @@ -17,6 +16,7 @@ go_library( "//shared/testutil:__pkg__", "//shared/testutil/altair:__pkg__", "//slasher:__subpackages__", + "//testing/benchmark/benchmark_files:__subpackages__", "//testing/spectest:__subpackages__", "//tools:__subpackages__", "//validator:__subpackages__", diff --git a/beacon-chain/core/helpers/BUILD.bazel b/beacon-chain/core/helpers/BUILD.bazel index 5f597aa852..afc2816663 100644 --- a/beacon-chain/core/helpers/BUILD.bazel +++ b/beacon-chain/core/helpers/BUILD.bazel @@ -21,7 +21,6 @@ go_library( "//endtoend/evaluators:__pkg__", "//fuzz:__pkg__", "//shared/attestationutil:__pkg__", - "//shared/benchutil/benchmark_files:__subpackages__", "//shared/depositutil:__pkg__", "//shared/interop:__pkg__", "//shared/keystore:__pkg__", @@ -29,6 +28,7 @@ go_library( "//shared/testutil:__pkg__", "//shared/testutil/altair:__pkg__", "//slasher:__subpackages__", + "//testing/benchmark/benchmark_files:__subpackages__", "//testing/spectest:__subpackages__", "//tools:__subpackages__", "//validator:__subpackages__", diff --git a/beacon-chain/core/transition/BUILD.bazel b/beacon-chain/core/transition/BUILD.bazel index ef1f72c369..98bfc4b5af 100644 --- a/beacon-chain/core/transition/BUILD.bazel +++ b/beacon-chain/core/transition/BUILD.bazel @@ -70,7 +70,7 @@ go_test( "transition_test.go", ], data = [ - "//shared/benchutil/benchmark_files:benchmark_data", + "//testing/benchmark/benchmark_files:benchmark_data", ], embed = [":go_default_library"], shard_count = 3, @@ -85,7 +85,6 @@ go_test( "//proto/prysm/v1alpha1:go_default_library", "//proto/prysm/v1alpha1/wrapper:go_default_library", "//shared/attestationutil:go_default_library", - "//shared/benchutil:go_default_library", "//shared/bls:go_default_library", "//shared/bytesutil:go_default_library", "//shared/hashutil:go_default_library", @@ -94,6 +93,7 @@ go_test( "//shared/testutil/assert:go_default_library", "//shared/testutil/require:go_default_library", "//shared/version:go_default_library", + "//testing/benchmark:go_default_library", "@com_github_google_gofuzz//:go_default_library", "@com_github_prysmaticlabs_eth2_types//:go_default_library", "@com_github_prysmaticlabs_go_bitfield//:go_default_library", @@ -122,9 +122,9 @@ go_test( "//beacon-chain/core/transition:go_default_library", "//beacon-chain/state/v1:go_default_library", "//proto/prysm/v1alpha1:go_default_library", - "//shared/benchutil:go_default_library", "//shared/params:go_default_library", "//shared/testutil/require:go_default_library", + "//testing/benchmark:go_default_library", "@org_golang_google_protobuf//proto:go_default_library", ], ) diff --git a/beacon-chain/core/transition/benchmarks_test.go b/beacon-chain/core/transition/benchmarks_test.go index db38e01ff0..80cbfde4cc 100644 --- a/beacon-chain/core/transition/benchmarks_test.go +++ b/beacon-chain/core/transition/benchmarks_test.go @@ -11,20 +11,20 @@ import ( v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1" ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/wrapper" - "github.com/prysmaticlabs/prysm/shared/benchutil" "github.com/prysmaticlabs/prysm/shared/params" "github.com/prysmaticlabs/prysm/shared/testutil/require" + "github.com/prysmaticlabs/prysm/testing/benchmark" "google.golang.org/protobuf/proto" ) var runAmount = 25 func BenchmarkExecuteStateTransition_FullBlock(b *testing.B) { - benchutil.SetBenchmarkConfig() - beaconState, err := benchutil.PreGenState1Epoch() + benchmark.SetBenchmarkConfig() + beaconState, err := benchmark.PreGenState1Epoch() require.NoError(b, err) cleanStates := clonedStates(beaconState) - block, err := benchutil.PreGenFullBlock() + block, err := benchmark.PreGenFullBlock() require.NoError(b, err) b.ResetTimer() @@ -35,12 +35,12 @@ func BenchmarkExecuteStateTransition_FullBlock(b *testing.B) { } func BenchmarkExecuteStateTransition_WithCache(b *testing.B) { - benchutil.SetBenchmarkConfig() + benchmark.SetBenchmarkConfig() - beaconState, err := benchutil.PreGenState1Epoch() + beaconState, err := benchmark.PreGenState1Epoch() require.NoError(b, err) cleanStates := clonedStates(beaconState) - block, err := benchutil.PreGenFullBlock() + block, err := benchmark.PreGenFullBlock() require.NoError(b, err) // We have to reset slot back to last epoch to hydrate cache. Since @@ -61,8 +61,8 @@ func BenchmarkExecuteStateTransition_WithCache(b *testing.B) { } func BenchmarkProcessEpoch_2FullEpochs(b *testing.B) { - benchutil.SetBenchmarkConfig() - beaconState, err := benchutil.PreGenstateFullEpochs() + benchmark.SetBenchmarkConfig() + beaconState, err := benchmark.PreGenstateFullEpochs() require.NoError(b, err) // We have to reset slot back to last epoch to hydrate cache. Since @@ -82,7 +82,7 @@ func BenchmarkProcessEpoch_2FullEpochs(b *testing.B) { } func BenchmarkHashTreeRoot_FullState(b *testing.B) { - beaconState, err := benchutil.PreGenstateFullEpochs() + beaconState, err := benchmark.PreGenstateFullEpochs() require.NoError(b, err) b.ResetTimer() @@ -93,7 +93,7 @@ func BenchmarkHashTreeRoot_FullState(b *testing.B) { } func BenchmarkHashTreeRootState_FullState(b *testing.B) { - beaconState, err := benchutil.PreGenstateFullEpochs() + beaconState, err := benchmark.PreGenstateFullEpochs() require.NoError(b, err) ctx := context.Background() @@ -110,7 +110,7 @@ func BenchmarkHashTreeRootState_FullState(b *testing.B) { } func BenchmarkMarshalState_FullState(b *testing.B) { - beaconState, err := benchutil.PreGenstateFullEpochs() + beaconState, err := benchmark.PreGenstateFullEpochs() require.NoError(b, err) natState, err := v1.ProtobufBeaconState(beaconState.InnerStateUnsafe()) require.NoError(b, err) @@ -134,7 +134,7 @@ func BenchmarkMarshalState_FullState(b *testing.B) { } func BenchmarkUnmarshalState_FullState(b *testing.B) { - beaconState, err := benchutil.PreGenstateFullEpochs() + beaconState, err := benchmark.PreGenstateFullEpochs() require.NoError(b, err) natState, err := v1.ProtobufBeaconState(beaconState.InnerStateUnsafe()) require.NoError(b, err) diff --git a/beacon-chain/state/BUILD.bazel b/beacon-chain/state/BUILD.bazel index f3103bb6fa..f043117966 100644 --- a/beacon-chain/state/BUILD.bazel +++ b/beacon-chain/state/BUILD.bazel @@ -12,10 +12,10 @@ go_library( "//fuzz:__pkg__", "//proto/testing:__subpackages__", "//shared/aggregation:__subpackages__", - "//shared/benchutil:__pkg__", "//shared/depositutil:__subpackages__", "//shared/testutil:__pkg__", "//slasher/rpc:__subpackages__", + "//testing/benchmark:__pkg__", "//testing/spectest:__subpackages__", "//tools/benchmark-files-gen:__pkg__", "//tools/exploredb:__pkg__", diff --git a/beacon-chain/state/v1/BUILD.bazel b/beacon-chain/state/v1/BUILD.bazel index 0aa4a8fa7e..4c2b9977ff 100644 --- a/beacon-chain/state/v1/BUILD.bazel +++ b/beacon-chain/state/v1/BUILD.bazel @@ -33,11 +33,11 @@ go_library( "//fuzz:__pkg__", "//proto/testing:__subpackages__", "//shared/aggregation:__subpackages__", - "//shared/benchutil:__pkg__", "//shared/depositutil:__subpackages__", "//shared/interop:__subpackages__", "//shared/testutil:__pkg__", "//slasher/rpc:__subpackages__", + "//testing/benchmark:__pkg__", "//testing/spectest:__subpackages__", "//tools/benchmark-files-gen:__pkg__", "//tools/pcli:__pkg__", diff --git a/shared/benchutil/BUILD.bazel b/testing/benchmark/BUILD.bazel similarity index 82% rename from shared/benchutil/BUILD.bazel rename to testing/benchmark/BUILD.bazel index 3a86ac1710..85a56ea539 100644 --- a/shared/benchutil/BUILD.bazel +++ b/testing/benchmark/BUILD.bazel @@ -3,8 +3,8 @@ load("@prysm//tools/go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", srcs = ["pregen.go"], - data = ["//shared/benchutil/benchmark_files:benchmark_data"], - importpath = "github.com/prysmaticlabs/prysm/shared/benchutil", + data = ["//testing/benchmark/benchmark_files:benchmark_data"], + importpath = "github.com/prysmaticlabs/prysm/testing/benchmark", visibility = ["//visibility:public"], deps = [ "//beacon-chain/state:go_default_library", diff --git a/shared/benchutil/README.md b/testing/benchmark/README.md similarity index 92% rename from shared/benchutil/README.md rename to testing/benchmark/README.md index 58880f4f56..844c9cf28e 100644 --- a/shared/benchutil/README.md +++ b/testing/benchmark/README.md @@ -1,5 +1,5 @@ # Benchmarks for Prysm State Transition -This package contains the functionality needed for benchmarking Prysms state transitions, this includes its block processing (with and without caching) and epoch processing functions. There is also a benchmark for HashTreeRoot on a large beacon state. +This package contains the functionality needed for benchmarking Prysm state transitions, this includes its block processing (with and without caching) and epoch processing functions. There is also a benchmark for HashTreeRoot on a large beacon state. ## Benchmark Configuration The following configs are in `config.go`: @@ -11,7 +11,7 @@ Due to the sheer size of the benchmarking configurations (16384 validators), the To generate new files to use for benchmarking, run the below command in the root of Prysm. ``` -bazel run //tools/benchmark-files-gen -- --output-dir $PRYSMPATH/shared/benchutil/benchmark_files/ --overwrite +bazel run //tools/benchmark-files-gen -- --output-dir $PRYSMPATH/testing/benchmark/benchmark_files/ --overwrite ``` ## Running the benchmarks diff --git a/shared/benchutil/benchmark_files/BUILD.bazel b/testing/benchmark/benchmark_files/BUILD.bazel similarity index 77% rename from shared/benchutil/benchmark_files/BUILD.bazel rename to testing/benchmark/benchmark_files/BUILD.bazel index bdd98a2d57..b3d2c84bb6 100644 --- a/shared/benchutil/benchmark_files/BUILD.bazel +++ b/testing/benchmark/benchmark_files/BUILD.bazel @@ -5,6 +5,6 @@ filegroup( ]), visibility = [ "//beacon-chain/core/transition:__pkg__", - "//shared/benchutil:__subpackages__", + "//testing/benchmark:__subpackages__", ], ) diff --git a/shared/benchutil/benchmark_files/bState1Epoch-128Atts-16384Vals.ssz b/testing/benchmark/benchmark_files/bState1Epoch-128Atts-16384Vals.ssz similarity index 100% rename from shared/benchutil/benchmark_files/bState1Epoch-128Atts-16384Vals.ssz rename to testing/benchmark/benchmark_files/bState1Epoch-128Atts-16384Vals.ssz diff --git a/shared/benchutil/benchmark_files/bState2Epochs-128Atts-16384Vals.ssz b/testing/benchmark/benchmark_files/bState2Epochs-128Atts-16384Vals.ssz similarity index 100% rename from shared/benchutil/benchmark_files/bState2Epochs-128Atts-16384Vals.ssz rename to testing/benchmark/benchmark_files/bState2Epochs-128Atts-16384Vals.ssz diff --git a/shared/benchutil/benchmark_files/fullBlock-128Atts-16384Vals.ssz b/testing/benchmark/benchmark_files/fullBlock-128Atts-16384Vals.ssz similarity index 100% rename from shared/benchutil/benchmark_files/fullBlock-128Atts-16384Vals.ssz rename to testing/benchmark/benchmark_files/fullBlock-128Atts-16384Vals.ssz diff --git a/shared/benchutil/pregen.go b/testing/benchmark/pregen.go similarity index 96% rename from shared/benchutil/pregen.go rename to testing/benchmark/pregen.go index 7d96559feb..0585f199f4 100644 --- a/shared/benchutil/pregen.go +++ b/testing/benchmark/pregen.go @@ -1,6 +1,6 @@ -// Package benchutil contains useful helpers +// Package benchmark contains useful helpers // for pregenerating filled data structures such as blocks/states for benchmarks. -package benchutil +package benchmark import ( "fmt" @@ -36,7 +36,7 @@ var BstateEpochFileName = fmt.Sprintf("bstateEpochs-%dAtts-%dVals.ssz", Attestat var FullBlockFileName = fmt.Sprintf("fullBlock-%dAtts-%dVals.ssz", AttestationsPerEpoch, ValidatorCount) func filePath(path string) string { - return fmt.Sprintf("shared/benchutil/benchmark_files/%s", path) + return fmt.Sprintf("testing/benchmark/benchmark_files/%s", path) } // PreGenState1Epoch unmarshals the pre-generated beacon state after 1 epoch of block processing and returns it. diff --git a/shared/benchutil/pregen_test.go b/testing/benchmark/pregen_test.go similarity index 95% rename from shared/benchutil/pregen_test.go rename to testing/benchmark/pregen_test.go index 607c25054c..93fe28f951 100644 --- a/shared/benchutil/pregen_test.go +++ b/testing/benchmark/pregen_test.go @@ -1,4 +1,4 @@ -package benchutil +package benchmark import ( "testing" diff --git a/tools/benchmark-files-gen/BUILD.bazel b/tools/benchmark-files-gen/BUILD.bazel index ec4cfe994f..ec81d4aa67 100644 --- a/tools/benchmark-files-gen/BUILD.bazel +++ b/tools/benchmark-files-gen/BUILD.bazel @@ -15,11 +15,11 @@ go_library( "//beacon-chain/state/v1:go_default_library", "//proto/prysm/v1alpha1:go_default_library", "//proto/prysm/v1alpha1/wrapper:go_default_library", - "//shared/benchutil:go_default_library", "//shared/fileutil:go_default_library", "//shared/interop:go_default_library", "//shared/params:go_default_library", "//shared/testutil:go_default_library", + "//testing/benchmark:go_default_library", "@com_github_pkg_errors//:go_default_library", "@com_github_prysmaticlabs_eth2_types//:go_default_library", ], diff --git a/tools/benchmark-files-gen/main.go b/tools/benchmark-files-gen/main.go index 217818598a..2f07024578 100644 --- a/tools/benchmark-files-gen/main.go +++ b/tools/benchmark-files-gen/main.go @@ -17,11 +17,11 @@ import ( v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1" ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/wrapper" - "github.com/prysmaticlabs/prysm/shared/benchutil" "github.com/prysmaticlabs/prysm/shared/fileutil" "github.com/prysmaticlabs/prysm/shared/interop" "github.com/prysmaticlabs/prysm/shared/params" "github.com/prysmaticlabs/prysm/shared/testutil" + "github.com/prysmaticlabs/prysm/testing/benchmark" ) var ( @@ -36,13 +36,13 @@ func main() { } if !*overwrite { - if _, err := os.Stat(path.Join(*outputDir, benchutil.BState1EpochFileName)); err == nil { + if _, err := os.Stat(path.Join(*outputDir, benchmark.BState1EpochFileName)); err == nil { log.Fatal("The file exists. Use a different file name or the --overwrite flag") } - if _, err := os.Stat(path.Join(*outputDir, benchutil.BstateEpochFileName)); err == nil { + if _, err := os.Stat(path.Join(*outputDir, benchmark.BstateEpochFileName)); err == nil { log.Fatal("The file exists. Use a different file name or the --overwrite flag") } - if _, err := os.Stat(path.Join(*outputDir, benchutil.FullBlockFileName)); err == nil { + if _, err := os.Stat(path.Join(*outputDir, benchmark.FullBlockFileName)); err == nil { log.Fatal("The file exists. Use a different file name or the --overwrite flag") } } @@ -66,13 +66,13 @@ func main() { log.Fatalf("Could not generate 2 full epoch state: %v", err) } // Removing the genesis state SSZ since its 10MB large and no longer needed. - if err := os.Remove(path.Join(*outputDir, benchutil.GenesisFileName)); err != nil { + if err := os.Remove(path.Join(*outputDir, benchmark.GenesisFileName)); err != nil { log.Fatal(err) } } func generateGenesisBeaconState() error { - genesisState, _, err := interop.GenerateGenesisState(context.Background(), 0, benchutil.ValidatorCount) + genesisState, _, err := interop.GenerateGenesisState(context.Background(), 0, benchmark.ValidatorCount) if err != nil { return err } @@ -80,17 +80,17 @@ func generateGenesisBeaconState() error { if err != nil { return err } - return fileutil.WriteFile(path.Join(*outputDir, benchutil.GenesisFileName), beaconBytes) + return fileutil.WriteFile(path.Join(*outputDir, benchmark.GenesisFileName), beaconBytes) } func generateMarshalledFullStateAndBlock() error { - benchutil.SetBenchmarkConfig() + benchmark.SetBenchmarkConfig() beaconState, err := genesisBeaconState() if err != nil { return err } - privs, _, err := interop.DeterministicallyGenerateKeys(0, benchutil.ValidatorCount) + privs, _, err := interop.DeterministicallyGenerateKeys(0, benchmark.ValidatorCount) if err != nil { return err } @@ -109,7 +109,7 @@ func generateMarshalledFullStateAndBlock() error { } attConfig := &testutil.BlockGenConfig{ - NumAttestations: benchutil.AttestationsPerEpoch / uint64(slotsPerEpoch), + NumAttestations: benchmark.AttestationsPerEpoch / uint64(slotsPerEpoch), } var atts []*ethpb.Attestation @@ -153,7 +153,7 @@ func generateMarshalledFullStateAndBlock() error { if err != nil { return err } - if err := fileutil.WriteFile(path.Join(*outputDir, benchutil.BState1EpochFileName), beaconBytes); err != nil { + if err := fileutil.WriteFile(path.Join(*outputDir, benchmark.BState1EpochFileName), beaconBytes); err != nil { return err } @@ -168,23 +168,23 @@ func generateMarshalledFullStateAndBlock() error { return err } - return fileutil.WriteFile(path.Join(*outputDir, benchutil.FullBlockFileName), blockBytes) + return fileutil.WriteFile(path.Join(*outputDir, benchmark.FullBlockFileName), blockBytes) } func generate2FullEpochState() error { - benchutil.SetBenchmarkConfig() + benchmark.SetBenchmarkConfig() beaconState, err := genesisBeaconState() if err != nil { return err } - privs, _, err := interop.DeterministicallyGenerateKeys(0, benchutil.ValidatorCount) + privs, _, err := interop.DeterministicallyGenerateKeys(0, benchmark.ValidatorCount) if err != nil { return err } attConfig := &testutil.BlockGenConfig{ - NumAttestations: benchutil.AttestationsPerEpoch / uint64(params.BeaconConfig().SlotsPerEpoch), + NumAttestations: benchmark.AttestationsPerEpoch / uint64(params.BeaconConfig().SlotsPerEpoch), } for i := types.Slot(0); i < params.BeaconConfig().SlotsPerEpoch*2-1; i++ { @@ -203,11 +203,11 @@ func generate2FullEpochState() error { return err } - return fileutil.WriteFile(path.Join(*outputDir, benchutil.BstateEpochFileName), beaconBytes) + return fileutil.WriteFile(path.Join(*outputDir, benchmark.BstateEpochFileName), beaconBytes) } func genesisBeaconState() (state.BeaconState, error) { - beaconBytes, err := ioutil.ReadFile(path.Join(*outputDir, benchutil.GenesisFileName)) + beaconBytes, err := ioutil.ReadFile(path.Join(*outputDir, benchmark.GenesisFileName)) if err != nil { return nil, errors.Wrap(err, "cannot read genesis state file") }