-
Notifications
You must be signed in to change notification settings - Fork 721
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
3851: workbench: support new tracing & add a Plutus workload profile r=deepfire a=deepfire 1. workbench: support new tracing & massage it to conform with legacy in terms of configuration 1. locli: support new tracing 1. new tracing: restore some structural compatibility with legacy 1. workbench: forge-stress-plutus profile 1. add `@mgmeier` to benchmarking things 1. Makefile tweaks for better automation 1. new tracing: add node state log messages 1. workbench: further improve derived calculations in profiles 1. a bunch of small workbench improvements here and there Co-authored-by: Kosyrev Serge <serge.kosyrev@iohk.io>
- Loading branch information
Showing
68 changed files
with
1,792 additions
and
824 deletions.
There are no files selected for viewing
Validating CODEOWNERS rules …
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,128 +1,84 @@ | ||
help: ## Print documentation | ||
@{ grep -hE '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST); echo -e '$(EXTRA_HELP)'; } | sed 's/^ //' | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' | ||
|
||
include lib.mk | ||
include nix.mk | ||
include legacy.mk | ||
|
||
PROJECT_NAME = cardano-node | ||
NUM_PROC = $(nproc --all) | ||
|
||
## One of: shey alra mary alzo | ||
ERA ?= alzo | ||
ERA ?= alzo | ||
|
||
CLUSTER_PROFILE ?= default-${ERA} | ||
ifneq "${CLUSTER_PROFILE}" "default-${ERA}" | ||
$(warning DEPRECATED: CLUSTER_PROFILE is deprecated, please use PROFILE) | ||
endif | ||
|
||
PROFILE ?= ${CLUSTER_PROFILE} | ||
PROFILE ?= default-${ERA} | ||
REV ?= master | ||
ARGS ?= | ||
CMD ?= | ||
|
||
|
||
help: ## Print documentation | ||
@grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' | ||
lint hlint: | ||
hlint . | ||
|
||
stylish-haskell: ## Apply stylish-haskell on all *.hs files | ||
@find . -type f -name "*.hs" -not -path '.git' -not -path '*.stack-work*' -print0 | xargs -0 stylish-haskell -i | ||
@find . -type f -name "*.hs" -not -path '.git' -print0 | xargs -0 stylish-haskell -i | ||
|
||
cabal-hashes: | ||
nix run .#checkCabalProject | ||
|
||
ghci: ## Run repl | ||
@stack ghci $(PROJECT_NAME):lib --haddock-deps --ghci-options=-fobject-code --nix | ||
|
||
ghcid: ## Run ghcid | ||
@ghcid --command "stack ghci $(PROJECT_NAME):lib --nix -j12 --ghci-options=-fobject-code" | ||
|
||
run-test: ## Build & run test | ||
@stack build --fast --nix && \ | ||
stack test --fast --nix | ||
|
||
test-ghci: ## Run repl on test suites | ||
@stack ghci $(PROJECT_NAME):lib $(PROJECT_NAME):test:$(PROJECT_NAME)-test --ghci-options=-fobject-code --nix | ||
|
||
test-ghcid: ## Run ghcid on test suites | ||
@ghcid --command "stack ghci --nix $(PROJECT_NAME):lib $(PROJECT_NAME):test:$(PROJECT_NAME)-test --ghci-options=-fobject-code" | ||
|
||
test-ghcid-nix: ## Run ghcid on test suites with Nix | ||
@ghcid --command="stack ghci --test --main-is $(PROJECT_NAME):test:$(PROJECT_NAME)-test --nix -j$(NUM_PROC)" | ||
|
||
bench-chainsync: PROFILE=chainsync-${ERA} | ||
bench-chainsync: cluster-shell-dev ## Enter Nix shell and start the chainsync benchmark | ||
|
||
## TODO: migrate to `nix develop` | ||
cluster-shell: ## Enter Nix shell and start the workbench cluster | ||
nix-shell --max-jobs 8 --cores 0 --show-trace --argstr profileName ${PROFILE} --arg 'autoStartCluster' true | ||
|
||
shell-dev: ARGS += --arg 'workbenchDevMode' true ## Enter Nix shell, dev mode (workbench run from checkout) | ||
cluster-shell: ARGS += --arg 'autoStartCluster' true ## Enter Nix shell, and start workbench cluster | ||
cluster-shell-dev: ARGS += --arg 'autoStartCluster' true --arg 'workbenchDevMode' true ## Enter Nix shell, dev mode, and start workbench cluster | ||
cluster-shell-trace: ARGS += --arg 'autoStartCluster' true --argstr 'autoStartClusterArgs' '--trace --trace-workbench' ## Enter Nix shell, start workbench cluster, with shell tracing | ||
cluster-shell-dev-trace: ARGS += --arg 'autoStartCluster' true --arg 'workbenchDevMode' true --argstr 'autoStartClusterArgs' '--trace --trace-workbench' ## Enter Nix shell, dev mode, start workbench cluster, with shell tracing | ||
fixed: PROFILE = fixed-${ERA} | ||
fixed: ARGS += --arg 'autoStartCluster' true | ||
forge-stress: PROFILE = forge-stress-${ERA} | ||
forge-stress: ARGS += --arg 'workbenchDevMode' true | ||
quick: PROFILE = quick-${ERA} | ||
quick: ARGS += --arg 'workbenchDevMode' true | ||
shell-dev cluster-shell-dev cluster-shell-trace cluster-shell-dev-trace fixed forge-stress quick: shell | ||
|
||
test-smoke: smoke ## Build the 'workbench-smoke-test', same as the Hydra job | ||
smoke: | ||
nix build -f 'default.nix' 'workbench-smoke-test' --out-link result-smoke-run --cores 0 | ||
test-analysis: smoke-analysis ## Build the 'workbench-smoke-analysis', same as the Hydra job | ||
smoke-analysis: | ||
nix build -f 'default.nix' 'workbench-smoke-analysis' --out-link result-smoke-analysis --cores 0 --show-trace | ||
ci-analysis: | ||
nix build -f 'default.nix' 'workbench-ci-analysis' --out-link result-ci-analysis --cores 0 --show-trace | ||
|
||
list-profiles: ## List workbench profiles | ||
nix build .#workbench.profile-names-json --json | jq '.[0].outputs.out' -r | xargs jq . | ||
show-profile: ## NAME=profile-name | ||
@test -n "${NAME}" || { echo 'HELP: to specify profile to show, add NAME=profle-name' && exit 1; } | ||
nix build .#all-profiles-json --json --option substitute false | jq '.[0].outputs.out' -r | xargs jq ".\"${NAME}\" | if . == null then error(\"\n###\n### Error: unknown profile: ${NAME} Please consult: make list-profiles\n###\") else . end" | ||
ps: list-profiles | ||
|
||
bump-cardano-node-workbench: ## Update the cardano-node-workbench flake input | ||
nix flake lock --update-input cardano-node-workbench | ||
bump-node-measured: ## Update the node-measured flake input | ||
nix flake lock --update-input node-measured | ||
bump-cardano-deployment: ## Sync the flake.lock to the CI check | ||
nix run nixpkgs#nixUnstable -- build .#hydraJobs.cardano-deployment | ||
membench-1: ## Membench: one iteration, current commit | ||
nix build .#membench-node-this-1.batch-report --out-link result-batch-1-report | ||
membench-1-at: ## Membench: one iteration, set commit by: make membench-1-at REV=[master] | ||
nix build .#membench-node-measured-1.batch-report --out-link result-batch-1-report --override-input node-measured github:input-output-hk/cardano-node/${REV} | ||
membench-5: ## Membench: 5 iterations, current commit | ||
nix build .#membench-node-this-5.batch-report --out-link result-batch-5-report | ||
membench-5-at: ## Membench: 5 iterations, set commit by: make membench-5-at REV=[master] | ||
nix build .#membench-node-this-5.batch-report --out-link result-batch-5-report --override-input node-measured github:input-output-hk/cardano-node/${REV} | ||
|
||
shell: ## Enter Nix shell, CI mode (workbench run from Nix store) | ||
nix-shell --max-jobs 8 --cores 0 --show-trace --argstr profileName ${PROFILE} ${ARGS} | ||
|
||
cli node: | ||
cabal --ghc-options="+RTS -qn8 -A32M -RTS" build cardano-$@ | ||
|
||
trace-documentation: | ||
cabal run -- exe:cardano-node trace-documentation --config 'configuration/cardano/mainnet-config-new-tracing.yaml' --output-file 'doc/new-tracing/tracers_doc_generated.md' | ||
|
||
BENCH_REPEATS ?= 3 | ||
BENCH_CONFIG ?= both | ||
BENCH_TAG ?= HEAD | ||
BENCH_XARGS ?= | ||
### | ||
### Workbench | ||
### | ||
## | ||
## Base targets: | ||
## | ||
shell: ## Nix shell, CI mode (from Nix store), vars: PROFILE, CMD | ||
nix-shell --max-jobs 8 --cores 0 --show-trace --argstr profileName ${PROFILE} ${ARGS} ${if ${CMD},--run "${CMD}"} | ||
shell-dev: shell | ||
shell-dev: ARGS += --arg 'workbenchDevMode' true ## Nix shell, dev mode (from checkout), vars: PROFILE, CMD | ||
|
||
list-profiles: ## List workbench profiles | ||
nix build .#workbench.profile-names-json --json | jq '.[0].outputs.out' -r | xargs jq . | ||
show-profile: ## NAME=profile-name | ||
@test -n "${NAME}" || { echo 'HELP: to specify profile to show, add NAME=profle-name' && exit 1; } | ||
nix build .#all-profiles-json --json --option substitute false | jq '.[0].outputs.out' -r | xargs jq ".\"${NAME}\" | if . == null then error(\"\n###\n### Error: unknown profile: ${NAME} Please consult: make list-profiles\n###\") else . end" | ||
ps: ## Plain-text list of profiles | ||
@nix build .#workbench.profile-names-json --json | jq '.[0].outputs.out' -r | xargs jq '.[]' --raw-output | ||
|
||
## | ||
## Profile-based cluster shells (autogenerated targets) | ||
## | ||
SHELL_PROFILES += fixed | ||
SHELL_PROFILES += quick quick-oldtracing | ||
|
||
SHELL_PROFILES += forge-stress forge-stress-plutus forge-stress-oldtracing | ||
|
||
SHELL_PROFILES += chainsync-early-byron chainsync-early-byron-oldtracing | ||
SHELL_PROFILES += chainsync-early-alonzo chainsync-early-alonzo-oldtracing | ||
|
||
## Note: to enable a shell for a profile, just add its name (one of names from 'make ps') to SHELL_PROFILES | ||
|
||
profile-chainsync: | ||
scripts/mainnet-via-fetcher.sh ${BENCH_XARGS} --node-config-${BENCH_CONFIG} --repeats ${BENCH_REPEATS} --nix --profile time --tag ${BENCH_TAG} | ||
$(eval $(call define_profile_targets,$(SHELL_PROFILES))) | ||
|
||
profile-chainsync-fast: BENCH_XARGS=--skip-prefetch | ||
profile-chainsync-fast: profile-chainsync | ||
|
||
### | ||
### Misc | ||
### | ||
clean-profile proclean: | ||
rm -f *.html *.prof *.hp *.stats *.eventlog | ||
|
||
clean: clean-profile | ||
rm -rf logs/ socket/ cluster.* | ||
|
||
full-clean: clean | ||
rm -rf db dist-newstyle .stack-work $(shell find . -name '*~' -or -name '*.swp') | ||
rm -rf db dist-newstyle $(shell find . -name '*~' -or -name '*.swp') | ||
|
||
cls: | ||
echo -en "\ec" | ||
|
||
.PHONY: bench-chainsync cabal-hashes clean cli cls cluster-profiles cluster-shell cluster-shell-dev cluster-shell-dev-trace cluster-shell-trace ghci ghcid help node run-test shell shell-dev stylish-haskell test-ghci test-ghcid test-ghcid-nix | ||
.PHONY: cabal-hashes clean cli cls cluster-profiles cluster-shell help node run-test shell shell-dev stylish-haskell |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.