davidkel / provision-performance

1 stars 0 forks source link

Define the concept of a performance run pipeline #34

Open davidkel opened 2 years ago

davidkel commented 2 years ago

The ideal scenario

  1. Provision an identical node (VM/K8s/.Baremetal) setup in terms of CPU, Memory, Disk, Network each time or reuse an existing provisioned environment that doesn't change. Ensure there are no noisy neighbours if using virtualised environment
  2. Deploy a predefined Hyperledger Fabric network topology to your provisioned Nodes (reusing a previously deployed hyperledger fabric may be appropriate under some circumstances but never use the same channel)
  3. Create a channel
  4. Deploy Chaincode
  5. Deploy Caliper
  6. Run a specified workload
  7. Capture the caliper and prometheus metrics
  8. store those captured results in a database for history and retrieval
  9. optionally tear down the hyperledger fabric network
  10. optionally tear down the provisioned systems

An automated pipeline that, via some sort of desciptor of the benchmark required, automates these steps would be handy. This could be achieved in various ways including using Ansible which could help with various aspects of provisioning and deployment in different environments.

davidkel commented 2 years ago

storing captured results should be

  1. The Caliper report
  2. a snapshot of the prometheus server:
  3. capture nmon data (or njmon)
  4. maybe also have optional go profiling turned on and data captured as well