App Install
Measure app installation speed. This scenario has two roles:
minimal: Installs a simple app which implements initialisation callbacks but otherwise doesn't contain a lot of code.large: Installs a larger app that contains some dependencies and some generated data as padding to make the bundle larger.
These are intended to catch a compilation slowdown or issues with copying around large WASMs (e.g. accidental cloning or tracing). In each case, the behaviour will uninstall the app it installed so that it can re-install it on the next iteration.
-
large(1 agent)
DHT Sync Lag
Measure lag time between an agent publishing data and other peers being able to see it. This scenario has two roles:
write: A simple job that just creates entries with a timestamp field. Those entries are linked to a known base hash. For each write, the metricws.custom.dht_sync_sent_countis incremented.record_lag: A job that repeatedly queries for links from the known base hash. It keeps track of records that it has seen and when a new record is found, and calculates the time difference between the timestamp of the new record and the current time. That time difference is then recorded as a custom metric calledwt.custom.dht_sync_lag.
After each behaviour loop the metric ws.custom.dht_sync_recv_count is incremented.
-
record_lag(5 agents) -
write(5 agents)
agent:uhCAkIWwXSkevmxuslJGhVHB_YSt7ZpdIp_AAfFkLSSHqflurKx4c
agent:uhCAkQXkx-7AerCoDBVObH9CvrgoEC0adzH5dOdfsR2WPvh5CBCFh
agent:uhCAkiFhBjnXM75tOZ_M7hRX3OtGkalDyJ3cMGo_prGs30GVOkxzt
agent:uhCAkiaSi34_iDAnVfmuoshbuTgkEe_MoCklPBxXwcIlaNj_eTfnb
agent:uhCAkpV68deBb98Vsm2yaOth-cmq2LYzrXVhvarNz3UMraz1e_KlW
agent:uhCAkcUgovBnSum65plQSkkL7lgboevWS176L-DN3-damlT-_1-G2
agent:uhCAkcqMDalUcMraNFnOsQD3lhiVc0H6glToSOaHEEsJ8TTJbL0F7
agent:uhCAkdl3tr6gav8MaHyh9dMP6SLFXEYO93dvybo1OJnqhOWJqx0-7
agent:uhCAkj6muLUDIFl41K78trpPO6Ta7LVC5Ou16wvroieqVR1rfaTZW
agent:uhCAksN6_q7KV-15NYDyQi-Pr1Qf-m25b_Iluv1wVtBiC6rl_m44a
agent:uhCAkcUgovBnSum65plQSkkL7lgboevWS176L-DN3-damlT-_1-G2
agent:uhCAkcqMDalUcMraNFnOsQD3lhiVc0H6glToSOaHEEsJ8TTJbL0F7
agent:uhCAkdl3tr6gav8MaHyh9dMP6SLFXEYO93dvybo1OJnqhOWJqx0-7
agent:uhCAkj6muLUDIFl41K78trpPO6Ta7LVC5Ou16wvroieqVR1rfaTZW
agent:uhCAksN6_q7KV-15NYDyQi-Pr1Qf-m25b_Iluv1wVtBiC6rl_m44a
First Call
This scenario installs a simple app which implements the init callback, and measures the time elapsed between start of install and calling init. It will uninstall the app it installed so that it can re-install it on the next iteration. This is required to re-run the initialisation callback.
- Default (1 agent)
init.Local Signals
This scenario is for testing the speed and reliability of local signals. It uses a zome with a function that will emit 10,000 signals. The scenario measures how long it takes to send the signals and how many have been received by the time the zome call ends.
- Default (1 agent)
No scenario template for mixed_arc_get_agent_activity!
No scenario template for mixed_arc_must_get_agent_activity!
Remote Call Rate
Test the throughput of remote_call operations. Each agent in this scenario waits for a certain number of peers to be available or for up to two minutes, whichever happens first, before starting its behaviour.
- Default (1 agent)
agent:uhCAk9UUIzwv9RKZNwbJakNk-yfIBxYQoL_qdLFq5x7A1I77y1bzB
agent:uhCAktmPhUu4YcpA6iJxNQ2WVURqZrUeJTCFgHZs3XFxmdIHdjT_o
agent:uhCAk9UUIzwv9RKZNwbJakNk-yfIBxYQoL_qdLFq5x7A1I77y1bzB
agent:uhCAktmPhUu4YcpA6iJxNQ2WVURqZrUeJTCFgHZs3XFxmdIHdjT_o
Remote Signals
This scenario tests the throughput of remote_signals operations.
- Default (1 agent)
Single-write, many-read
Creates an entry in the agent setup, then read one's own record back. This tests the maximum read performance for reading back local data when the chain is short.
- Default (1 agent)
read call timingread call rate (10s)Validation Receipts
Creates an entry, wait for required validation receipts, then repeat. Records the amount of time it took to accumulate the required number of receipts for all DHT operations. This is measured to the nearest 20ms so that we don't keep the agent too busy checking for receipts.
Each agent in this scenario waits for a certain number of peers to be available or for up to two minutes, whichever happens first, before starting its behaviour.
By default, this scenario will wait for a complete set of validation receipts before committing the next record. If the NO_VALIDATION_COMPLETE environment variable is set, it will instead publish new records on every round, building up an ever-growing list of action hashes to check on.
- Default (1 agent)
agent:uhCAk-odAucb4daTi9JpxoCoZaBnsaU5DjPv-L_lNCzRdjvvy0Whzop_type:RegisterAgentActivity
agent:uhCAk-odAucb4daTi9JpxoCoZaBnsaU5DjPv-L_lNCzRdjvvy0Whzop_type:StoreEntry
agent:uhCAk-odAucb4daTi9JpxoCoZaBnsaU5DjPv-L_lNCzRdjvvy0Whzop_type:StoreRecord
agent:uhCAk33IB03ohK0IaMvrzbGpf5yQCFlAAvmqsfGewjbbIcKX2Vcrwop_type:RegisterAgentActivity
agent:uhCAk33IB03ohK0IaMvrzbGpf5yQCFlAAvmqsfGewjbbIcKX2Vcrwop_type:StoreEntry
agent:uhCAk33IB03ohK0IaMvrzbGpf5yQCFlAAvmqsfGewjbbIcKX2Vcrwop_type:StoreRecord
agent:uhCAk5bwIeG1bumFx9pOxNa0mohugBifMrbNkxby7pxADWJ6fok8Yop_type:RegisterAgentActivity
agent:uhCAk5bwIeG1bumFx9pOxNa0mohugBifMrbNkxby7pxADWJ6fok8Yop_type:StoreEntry
agent:uhCAk5bwIeG1bumFx9pOxNa0mohugBifMrbNkxby7pxADWJ6fok8Yop_type:StoreRecord
agent:uhCAkI5_E6zE30FsKtRYmTq2UQfLJfvn736vtwdrG3kPjqJyedvl-op_type:RegisterAgentActivity
agent:uhCAkI5_E6zE30FsKtRYmTq2UQfLJfvn736vtwdrG3kPjqJyedvl-op_type:StoreEntry
agent:uhCAkI5_E6zE30FsKtRYmTq2UQfLJfvn736vtwdrG3kPjqJyedvl-op_type:StoreRecord
agent:uhCAkQYb7Dkf7WvVk0WjSv5wrFHh3rYDQL86GB8mQATXzlbyDdxeuop_type:RegisterAgentActivity
agent:uhCAkQYb7Dkf7WvVk0WjSv5wrFHh3rYDQL86GB8mQATXzlbyDdxeuop_type:StoreEntry
agent:uhCAkQYb7Dkf7WvVk0WjSv5wrFHh3rYDQL86GB8mQATXzlbyDdxeuop_type:StoreRecord
agent:uhCAkb8uAQG77jTW3795mQkNGEMgklU25iyeH00UDLNYz0DZ2zhb8op_type:RegisterAgentActivity
agent:uhCAkb8uAQG77jTW3795mQkNGEMgklU25iyeH00UDLNYz0DZ2zhb8op_type:StoreEntry
agent:uhCAkb8uAQG77jTW3795mQkNGEMgklU25iyeH00UDLNYz0DZ2zhb8op_type:StoreRecord
agent:uhCAkbhsSsKkM2x41oMsleP3ADEN9nfuMEn6h7wG2EIYv_eYyjFMLop_type:RegisterAgentActivity
agent:uhCAkbhsSsKkM2x41oMsleP3ADEN9nfuMEn6h7wG2EIYv_eYyjFMLop_type:StoreEntry
agent:uhCAkbhsSsKkM2x41oMsleP3ADEN9nfuMEn6h7wG2EIYv_eYyjFMLop_type:StoreRecord
agent:uhCAkkrcoKrriWaYDaBgghLM2tiUhDanvTxhIKuzBn15xkoqWpMYwop_type:RegisterAgentActivity
agent:uhCAkkrcoKrriWaYDaBgghLM2tiUhDanvTxhIKuzBn15xkoqWpMYwop_type:StoreEntry
agent:uhCAkkrcoKrriWaYDaBgghLM2tiUhDanvTxhIKuzBn15xkoqWpMYwop_type:StoreRecord
agent:uhCAkmTno-0uELG9z88UxahGXZ2akyU8GCDX5oP7WEIiqzi-6ZNhwop_type:RegisterAgentActivity
agent:uhCAkmTno-0uELG9z88UxahGXZ2akyU8GCDX5oP7WEIiqzi-6ZNhwop_type:StoreEntry
agent:uhCAkmTno-0uELG9z88UxahGXZ2akyU8GCDX5oP7WEIiqzi-6ZNhwop_type:StoreRecord
agent:uhCAkz1kUJ0Mv5UxB6fJj-cVLDo1lBOweLdywFo-t8OyqSPFAJk_kop_type:RegisterAgentActivity
agent:uhCAkz1kUJ0Mv5UxB6fJj-cVLDo1lBOweLdywFo-t8OyqSPFAJk_kop_type:StoreEntry
agent:uhCAkz1kUJ0Mv5UxB6fJj-cVLDo1lBOweLdywFo-t8OyqSPFAJk_kop_type:StoreRecord
agent:uhCAk-odAucb4daTi9JpxoCoZaBnsaU5DjPv-L_lNCzRdjvvy0Whzop_type:RegisterAgentActivity
agent:uhCAk-odAucb4daTi9JpxoCoZaBnsaU5DjPv-L_lNCzRdjvvy0Whzop_type:StoreEntry
agent:uhCAk-odAucb4daTi9JpxoCoZaBnsaU5DjPv-L_lNCzRdjvvy0Whzop_type:StoreRecord
agent:uhCAk33IB03ohK0IaMvrzbGpf5yQCFlAAvmqsfGewjbbIcKX2Vcrwop_type:RegisterAgentActivity
agent:uhCAk33IB03ohK0IaMvrzbGpf5yQCFlAAvmqsfGewjbbIcKX2Vcrwop_type:StoreEntry
agent:uhCAk33IB03ohK0IaMvrzbGpf5yQCFlAAvmqsfGewjbbIcKX2Vcrwop_type:StoreRecord
agent:uhCAk5bwIeG1bumFx9pOxNa0mohugBifMrbNkxby7pxADWJ6fok8Yop_type:RegisterAgentActivity
agent:uhCAk5bwIeG1bumFx9pOxNa0mohugBifMrbNkxby7pxADWJ6fok8Yop_type:StoreEntry
agent:uhCAk5bwIeG1bumFx9pOxNa0mohugBifMrbNkxby7pxADWJ6fok8Yop_type:StoreRecord
agent:uhCAkI5_E6zE30FsKtRYmTq2UQfLJfvn736vtwdrG3kPjqJyedvl-op_type:RegisterAgentActivity
agent:uhCAkI5_E6zE30FsKtRYmTq2UQfLJfvn736vtwdrG3kPjqJyedvl-op_type:StoreEntry
agent:uhCAkI5_E6zE30FsKtRYmTq2UQfLJfvn736vtwdrG3kPjqJyedvl-op_type:StoreRecord
agent:uhCAkQYb7Dkf7WvVk0WjSv5wrFHh3rYDQL86GB8mQATXzlbyDdxeuop_type:RegisterAgentActivity
agent:uhCAkQYb7Dkf7WvVk0WjSv5wrFHh3rYDQL86GB8mQATXzlbyDdxeuop_type:StoreEntry
agent:uhCAkQYb7Dkf7WvVk0WjSv5wrFHh3rYDQL86GB8mQATXzlbyDdxeuop_type:StoreRecord
agent:uhCAkb8uAQG77jTW3795mQkNGEMgklU25iyeH00UDLNYz0DZ2zhb8op_type:RegisterAgentActivity
agent:uhCAkb8uAQG77jTW3795mQkNGEMgklU25iyeH00UDLNYz0DZ2zhb8op_type:StoreEntry
agent:uhCAkb8uAQG77jTW3795mQkNGEMgklU25iyeH00UDLNYz0DZ2zhb8op_type:StoreRecord
agent:uhCAkbhsSsKkM2x41oMsleP3ADEN9nfuMEn6h7wG2EIYv_eYyjFMLop_type:RegisterAgentActivity
agent:uhCAkbhsSsKkM2x41oMsleP3ADEN9nfuMEn6h7wG2EIYv_eYyjFMLop_type:StoreEntry
agent:uhCAkbhsSsKkM2x41oMsleP3ADEN9nfuMEn6h7wG2EIYv_eYyjFMLop_type:StoreRecord
agent:uhCAkkrcoKrriWaYDaBgghLM2tiUhDanvTxhIKuzBn15xkoqWpMYwop_type:RegisterAgentActivity
agent:uhCAkkrcoKrriWaYDaBgghLM2tiUhDanvTxhIKuzBn15xkoqWpMYwop_type:StoreEntry
agent:uhCAkkrcoKrriWaYDaBgghLM2tiUhDanvTxhIKuzBn15xkoqWpMYwop_type:StoreRecord
agent:uhCAkmTno-0uELG9z88UxahGXZ2akyU8GCDX5oP7WEIiqzi-6ZNhwop_type:RegisterAgentActivity
agent:uhCAkmTno-0uELG9z88UxahGXZ2akyU8GCDX5oP7WEIiqzi-6ZNhwop_type:StoreEntry
agent:uhCAkmTno-0uELG9z88UxahGXZ2akyU8GCDX5oP7WEIiqzi-6ZNhwop_type:StoreRecord
agent:uhCAkz1kUJ0Mv5UxB6fJj-cVLDo1lBOweLdywFo-t8OyqSPFAJk_kop_type:RegisterAgentActivity
agent:uhCAkz1kUJ0Mv5UxB6fJj-cVLDo1lBOweLdywFo-t8OyqSPFAJk_kop_type:StoreEntry
agent:uhCAkz1kUJ0Mv5UxB6fJj-cVLDo1lBOweLdywFo-t8OyqSPFAJk_kop_type:StoreRecord
Write/Query
Creates an entry, then queries the source chain and performs a simple operation on the entries, then repeats.
- Default (1 agent)
Write/Read
Creates an entry and reads it back, then repeats.
- Default (1 agent)
Write validated
Creates an entry, updates it and links the create to the update, then repeats. Each of the three actions is validated by the included hApp.
- Default (1 agent)
Write Validated must_get_agent_activity
A scenario where write agents create entries, while must_get_agent_activity agents create entries which are validated with a must_get_agent_activity call for a single write agent's activity.
Before a target write peer and the requesting peer are in sync, the must_get_agent_activity request will go over the network. Once a write peer reaches sync with the requesting must_get_agent_activity peer, the write peer will publish their actions and entries, and so the must_get_agent_activity calls will likely have the data it needs locally. At that point this measures the database query performance and code paths through host functions.
-
must_get_agent_activity(1 agent) -
write(1 agent)
action_seqmust_get_agent_activity peer's source chain top over the run.create_validated_sample_entry zome call timingwrite agent's source chain.agent:uhCAkTegQFTu0yBsX4ztI4jIAGPNheKglB-PQn81oG4Z46vXkgYJ0
Zero-Arc Create and Read
A zero-arc/full-arc mixed scenario with two types of zero-arc nodes -- ones that create data and ones that read data -- as well as full arc nodes to "relay" the data. The scenario has three roles:
zero_write: A zero-arc conductor that just creates entries with a timestamp field. Those entries are linked to a known base hash so thatzero_readnodes can retrieve them.zero_read: A zero-arc conductor that reads the entries created by the zero-arc node(s) and records the time lag between when the entry had been created and when it was first discovered.full: A full-arc conductor that is just here to serve entries to zero arc nodes.
-
full(3 agents) -
zero_read(3 agents) -
zero_write(3 agents)
agent:uhCAk3J4wR0K9Wu5-sGjLFjmeufoYEoeRkgvqgl_vzVPwXSKbhmYw
agent:uhCAkVVrRqxOqs1yKrfX7xsQxJeDo0wdPVuJ8gsSn3P9jwDOP4DHf
agent:uhCAkzxAV2owLdppoUUgPKT6boQT5YJ2mQpZzvB4MpcFp-6VEPU8P
get_timed_local_entries zome function.agent:uhCAkIThW9guLeFlIr8wdEqMyAuXCXzqB9VQuFpwxl6XwEgcNfkfU
agent:uhCAkK8BIrWCVKkMtQdLxdg7fxcDWcmb_F7BoOo5o7BGzgFnYK64R
agent:uhCAksv1RtVhw2i5ZocwfhZNBPLFw411Df0flhKwKvHBtDmuC6LUE
agent:uhCAkIThW9guLeFlIr8wdEqMyAuXCXzqB9VQuFpwxl6XwEgcNfkfU
agent:uhCAkK8BIrWCVKkMtQdLxdg7fxcDWcmb_F7BoOo5o7BGzgFnYK64R
agent:uhCAksv1RtVhw2i5ZocwfhZNBPLFw411Df0flhKwKvHBtDmuC6LUE
Zero-Arc Create Data
zero: A zero-arc conductor that just creates entries with a timestamp field. Those entries are linked to a known base hash so that full-arc nodes can retrieve them.full: A full-arc conductor that reads the entries created by the zero-arc node(s) and records the time lag between when the entry had been created and when it was first discovered.
-
full(4 agents) -
zero(6 agents)
agent:uhCAkC-yQB21JyGtVkurJncMp8IedwC2AkcToCawTfBDwOfcLpf5l
agent:uhCAkJ94O7EKHappwSPHlUFqeWATQfctmQg77T3rEvizxrrk9VplM
agent:uhCAkOyvf_-T9wHmdxl-SPKggFffANcC7fU4yicK0p11LWL8FKh4L
agent:uhCAkY-PAXJJzfbiufH_D6hYrm75C9QVqXt2TxdNTZhPMXc5QM8mz
agent:uhCAkfp7CiDQsB1CRAbHy6CFwN1GQLm8_nhyXT7KNSQJs-DREX5GE
agent:uhCAkhz766sL56CWXrtuBXaTak6dJJYZHT91LL8FknbhZxMS__joJ
get_timed_local_entries zome function.agent:uhCAkGdpW2sAEpVzdXGn7PtnDyxuK-A-u0lF3d1FDKCn940YTLnkQ
agent:uhCAkfVtFvmc8pxdXlsOE9Pzfz3lf6kZ_oBMgum9UJe1mlSedFrf9
agent:uhCAkrVaC1XYmO4k84TyMnMkCmEag3NeKeezkDVSthmd68sdinyRt
agent:uhCAkyW3a095v6k1uvGzCTi-QE6NEnhNSxU_CIYj02MEza6tGAKBn
agent:uhCAkGdpW2sAEpVzdXGn7PtnDyxuK-A-u0lF3d1FDKCn940YTLnkQ
agent:uhCAkfVtFvmc8pxdXlsOE9Pzfz3lf6kZ_oBMgum9UJe1mlSedFrf9
agent:uhCAkrVaC1XYmO4k84TyMnMkCmEag3NeKeezkDVSthmd68sdinyRt
agent:uhCAkyW3a095v6k1uvGzCTi-QE6NEnhNSxU_CIYj02MEza6tGAKBn
Zero-arc Create Data (Validated)
A zero-arc/full-arc mixed scenario where zero-arc nodes create data that gets validated and full-arc nodes read the data. The scenario has two roles:
zero: A zero-arc conductor that just creates entries with a timestamp field. Those entries are linked to a known base hash so that full-arc nodes can retrieve them.full: A full-arc conductor that reads the entries created by the zero-arc node(s) and records the time lag between when the entry had been created and when it was first discovered.
-
full(4 agents) -
zero(6 agents)
agent:uhCAk2MtWdst661DdPEPX7tlovLDfzAN9uqMSMH6CcgxE5IF8RtpR
agent:uhCAk5kiuXS1sWQkQz6r8kHqXrdgOEa0q4sGV1-QpsItzSDmpz3FZ
agent:uhCAkUt7nRcO4zM2Qm0H3zin8maknbPryrqnEi_D9lYHNPimd2np6
agent:uhCAkkZQ5C01R0otdJUVSv3_eUfJ5Qv7qkYkjrCq0g6JLhAykXbMj
agent:uhCAknST8eSbUQQxQKrytEMffhqN4Lj6fitL3Vcu0AHJIrjZnBDPE
agent:uhCAkst6DOJj8W2kUPwrGuBERFp9l_RJF6V56K_VaktBus68Wq0PN
get_timed_local_entries zome function.agent:uhCAkCFqmQp4ewN7huDCZdhDRBfS9tqsWBLTY8vh90IhYMiFdAMbN
agent:uhCAkYbxX2nA6JE9cz-sDKrqsSnJLAqoQMvcfSnd4YDQS_qduhRh-
agent:uhCAkaRoMwVNmVvbkWd3v7P9j1Tsp8Mbq8JGCGIos7cMNtgbA-JHN
agent:uhCAkCFqmQp4ewN7huDCZdhDRBfS9tqsWBLTY8vh90IhYMiFdAMbN
agent:uhCAkYbxX2nA6JE9cz-sDKrqsSnJLAqoQMvcfSnd4YDQS_qduhRh-
agent:uhCAkaRoMwVNmVvbkWd3v7P9j1Tsp8Mbq8JGCGIos7cMNtgbA-JHN
Zome Call, Single Value
Calls a zome function that returns a fixed value. This tests the maximum performance of zome calls when the zome function is not calling into Holochain other otherwise doing any work.
- Default (1 agent)