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.
-
minimal(1 agent)
Warning Memory growing at 1171.88 MB/s
Additional Host Metrics
//nix/storeDHT 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(1 agent) -
write(1 agent)
Warning CPU p99 reached 95.7%
Warning Memory growing at 1025.19 MB/s
Critical Heavy swap usage (39.9% swap used)
Warning 24% of hosts overloaded (load5/ncpus > 1.0)
Additional Host Metrics
//boot/efi-boot/etc/hostname/etc/hosts/etc/resolv.conf/nix/storeFirst 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.Warning Memory growing at 178.77 MB/s
Additional Host Metrics
//efi-boot/nix/storeFull-Arc Create (Validated) / Zero-Arc Read
A full-arc/zero-arc mixed scenario where full-arc nodes create data that gets validated and zero-arc nodes read the data. The scenario has two roles:
full: A full-arc conductor that creates entries with a timestamp field. Those entries get validated and then retrieved by zero-arc nodes.zero: A zero-arc conductor that reads the entries created by the full-arc node(s) and records the time lag between when the entry had been created and when it was first discovered.
-
full(1 agent) -
zero(1 agent)
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)
Additional Host Metrics
/etc/hostname/etc/hosts/etc/resolv.confMixed Arc get_agent_activity
A mixed-arc scenario that measures the DHT's ability to propagate agent activity and make it available via get_agent_activity calls. The scenario has three roles:
zero_write: A zero-arc conductor that creates entries on its source chain.full_write: A full-arc conductor that creates entries on its source chain.zero_read: A zero-arc conductor that picks a random writer and repeatedly callsget_agent_activityto observe new entries appearing on the writer's chain, measuring the lag between creation and discovery.
-
full_write(1 agent) -
zero_read(1 agent) -
zero_write(1 agent)
get_agent_activity. This is measured per new action in the chain.get_agent_activity_full zome call timingget_agent_activity_full zome call that queries a writer's chain.get_agent_activity.behaviour:full_write
behaviour:zero_read
behaviour:zero_write
Warning CPU p99 reached 97.9%
Warning Memory growing at 1960.28 MB/s
Warning 80% of hosts overloaded (load5/ncpus > 1.0)
Additional Host Metrics
//boot/efi-boot/etc/hostname/etc/hosts/etc/resolv.conf/nix/storeMixed Arc must_get_agent_activity
A scenario where write agents create entries in batches of 10, while must_get_agent_activity agents each pick a random write agent and repeatedly attempt to create an entry that references the chain top of their latest batch. This reference means that the entry's validation function needs to make a must_get_agent_activity call.
The purpose of this scenario is to measure the time it takes for published agent activity data to be gossiped among authorities and become available to peers that query it via must_get_agent_activity.
This test is similar to Write Validated must_get_agent_activity, but some write agents are zero-arc and all must_get_agent_activity agents are zero-arc. This forces the must_get_agent_activity host call to go to the network.
-
full_write(1 agent) -
zero_must_get_agent_activity(1 agent) -
zero_write(1 agent)
action_seqwrite agent, aggregated across all reading agents. The reading dimension is collapsed by taking the maximum observed value for each write agent (any successful read counts as propagation). This reflects the DHT’s ability to propagate agent activity ops and make them available to querying peers.write agent's creation of a batch and a must_get_agent_activity agent's successful discovery of the batch and creation/self-validation of a new entry that depends on it.must_get_agent_activity agent was able to discover batches and create/self-validate new entries that depend on them.create_validated_sample_entry zome call timingwrite agent's source chain.must_get_agent_activity calls.behaviour:full_write
behaviour:zero_must_get_agent_activity
behaviour:zero_write
Warning CPU p99 reached 98.0%
Warning Memory growing at 2085.10 MB/s
Critical Heavy swap usage (22.3% swap used)
Warning 51% of hosts overloaded (load5/ncpus > 1.0)
Additional Host Metrics
//boot/efi-boot/etc/hostname/etc/hosts/etc/resolv.conf/nix/storeRemote 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)
Warning CPU p99 reached 92.9%
Warning Memory growing at 259.06 MB/s
Warning Moderate swap usage (16.5% swap used)
Warning 11% of hosts overloaded (load5/ncpus > 1.0)
Additional Host Metrics
//boot/efi-boot/etc/hostname/etc/hosts/etc/resolv.conf/nix/storeRemote Signals
This scenario tests the throughput of remote_signals operations.
-
default(1 agent)
Warning Memory growing at 34.99 MB/s
Critical Heavy swap usage (21.2% swap used)
Additional Host Metrics
//efi-boot/etc/hostname/etc/hosts/etc/resolv.conf/nix/storeSingle-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 rateWarning Memory growing at 31.07 MB/s
Warning Moderate swap usage (16.5% swap used)
Additional Host Metrics
/etc/hostname/etc/hosts/etc/resolv.confTwo-party countersigning
This scenario tests the performance of countersigning operations. There are two roles: initiate and participate. The participants commit an entry to advertise that they are willing to participate in sessions. They listen for sessions and participate in one at a time.
-
initiate(1 agent) -
participate(1 agent)
Warning CPU p99 reached 98.0%
Warning Memory growing at 324.99 MB/s
Warning 100% of hosts overloaded (load5/ncpus > 1.0)
Additional Host Metrics
/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)
Warning CPU p99 reached 96.8%
Warning Memory growing at 1233.26 MB/s
Critical Heavy swap usage (39.8% swap used)
Warning 55% of hosts overloaded (load5/ncpus > 1.0)
Additional Host Metrics
//efi-boot/etc/hostname/etc/hosts/etc/resolv.conf/nix/storeWrite/get_agent_activity
A scenario where write peers write entries, while get_agent_activity peers each query a single write agent's activity with get_agent_activity.
Before a target write peer and the requesting get_agent_activity peer are in sync, this will measure the get_agent_activity call performance over a network. Once a write peer reaches sync with a get_agent_activity peer, the write peer will publish their actions and entries, and so the get_agent_activity calls will likely have most of the data they need locally. At that point this measures the database query performance and code paths through host functions.
-
get_agent_activity(1 agent) -
write(1 agent)
get_agent_activity_full zome call timingwrite peer's source chain.Warning CPU p99 reached 97.5%
Warning Memory growing at 1561.03 MB/s
Critical Heavy swap usage (39.8% swap used)
Warning 79% of hosts overloaded (load5/ncpus > 1.0)
Additional Host Metrics
//efi-boot/etc/hostname/etc/hosts/etc/resolv.conf/nix/storeWrite/get_agent_activity with volatile conductors
A scenario where write peers write entries, while get_agent_activity_volatile peers each query a single write agents activity with get_agent_activity but shutdown and restart their conductors at semi-random intervals.
Before a target write peer and the requesting get_agent_activity_volatile peer are in sync, this will measure the get_agent_activity call performance over a network. Once a write peer reaches sync with a get_agent_activity peer, the write peer will publish their actions and entries, and so the get_agent_activity calls will likely have most of the data they need locally. At that point this measures the database query performance and code paths through host functions.
-
get_agent_activity_volatile(1 agent) -
write(1 agent)
action_seqget_agent_activity. This reflects the DHT's ability to propagate agent activity ops and make them available to querying peers.get_agent_activity_full zome call timingwrite peer's source chain.get_agent_activity_volatile peers.get_agent_activity_volatile conductor.get_agent_activity_volatile conductor was running before being stopped.get_agent_activity_volatile conductor was stopped before being started again.get_agent_activity_volatile peer reach their target arc in the moment before they were shutdown.get_agent_activity_volatile_agent:uhCAk-sey53EI_sCh7Gl3Rjm3dSpup5ur2xNYxnP8Pji2C8JdOVjK
get_agent_activity_volatile_agent:uhCAk0LAnKQJW4oSvKpTuWp3O3Hxjz85u19EtQsk3hV49y2uGg6wv
get_agent_activity_volatile_agent:uhCAk1LhmhWb_RkhpzESvsS6-ojfefwF8QUDyouBGKDz8Hnx1O03F
get_agent_activity_volatile_agent:uhCAk4RUBQ2Nr7_6VDbSTyv8c66HolMdWw4XqFfev3bbjahVjAquX
get_agent_activity_volatile_agent:uhCAk5dgj0pazcA95UxCi5k3y19hhZQvj-__99OBPqdb06z8HayhU
get_agent_activity_volatile_agent:uhCAk7FaonuX_tGSd6xK58ejoMAJb4zDo1LrAQ3h6BIIuP65EKwGM
get_agent_activity_volatile_agent:uhCAk7vuIB1pEY_D4MegWg7fvmvor-MSJBnqQnjh-w4l9m_A_k3qX
get_agent_activity_volatile_agent:uhCAk8TmsZmH_rmLMP58NsQ8OaCmC4ANzquUEtiZK8LpwUdLzOiO3
get_agent_activity_volatile_agent:uhCAk8XG_Fd_dY7x_d2hOJ0y9aYJSkGrdj2-ZBC7WJawgZTMcrs3B
get_agent_activity_volatile_agent:uhCAk9AR4YxN-RLmNapjWjBstynGNM38WP0o4iP9Bnk7rGskN51cK
get_agent_activity_volatile_agent:uhCAkA_ItLy8EK3pu-v3vrM9XybXHeZDiOsUnQJnilVyXduCwBMdy
get_agent_activity_volatile_agent:uhCAkBLpuMlXHomnCinRlpTTpYZ3cxR1qxg10Xp9R5kYpSrKUYhPG
get_agent_activity_volatile_agent:uhCAkBWUGNB-rTgV2IelCjM1SbPShXFjAh5MuBsXmVwqudW4Xeval
get_agent_activity_volatile_agent:uhCAkEbsgJSz8K5_-arh9bkZQunZxsgu1uOgcZIfFl6m0hhjqJKb1
get_agent_activity_volatile_agent:uhCAkFRIXZ__S7xmbtSYMBiUBUqe7URDwlxy-Ht-vHkCl-xiTLTfn
get_agent_activity_volatile_agent:uhCAkIA4UzkBnCH7rM1bxlGg1qDRlqo3Lwduc-3ZwgaJaTN6eu2jB
get_agent_activity_volatile_agent:uhCAkJJqUv6aF8jGGC_Zo5Y4N5nhANCdm4JukbCZHHWyxRWLpg4lo
get_agent_activity_volatile_agent:uhCAkLYXhoEbWxEHEcD3Zn2oXnouW4PWMLcgW__JZ8lbajGEalr7R
get_agent_activity_volatile_agent:uhCAkOUhZ4L6NTAV5_KSy-pnH62RMh9_Fr9zoRhXNvCLzF_556dbl
get_agent_activity_volatile_agent:uhCAkQywM8mdYGGTikgNVkE37Wnb81U2ulxWt9dndtKnRVKb-QhzE
get_agent_activity_volatile_agent:uhCAkRYdQxh6HA-yixXT2DLQPLVPkp3V02qNeZYt-sqoq_riOTCjC
get_agent_activity_volatile_agent:uhCAkS0_AsD3XjNqL5t5WCi1yYBb2tmQWiT2Lhfm_GzOAJ_LnopEq
get_agent_activity_volatile_agent:uhCAkT8VfleGBG9q7mOEVQvoGlfrnG23kRH5XQuD04ae8iPaSuiKb
get_agent_activity_volatile_agent:uhCAkTaceVnE3O-Hc0DcaqvZ7X1OIyyTVfJwFsvXkv8y2MFTXAjIh
get_agent_activity_volatile_agent:uhCAkTfaVzpltNNTkmREtfZOeKiQekQohIQod2JtWaxGPdHdwpMJH
get_agent_activity_volatile_agent:uhCAkUriV95ybkm9W4_juLGZp-3Ed0ZvU-Itw-ITcrBdpwd4U4pSU
get_agent_activity_volatile_agent:uhCAkVHnyQ3KPWqgez0jG6hB6FLLAKDoKysLAzIkeJiiuKon278Z4
get_agent_activity_volatile_agent:uhCAkVjzeUylYssR4Y1Qr2XUaNXHIOLDebxeyCWnJTxGUT8SuAN54
get_agent_activity_volatile_agent:uhCAkWkLB4dYj8SW4LQGdJytM4S8ivxKWNP0Lwr5Uou4zPl6N8uTm
get_agent_activity_volatile_agent:uhCAkWmKii7d5QYdsWuUL_SfXZLJTQ4KxexlH2XBTifQig9_nd3vJ
get_agent_activity_volatile_agent:uhCAkXkWfXe6-eg7On_eCcB4BEHGB44-Hc-QmPBHm09zEN6cMzehv
get_agent_activity_volatile_agent:uhCAkcszdt6glzh4kYlq0OB_LHOKheLZrLdYYGID4wzxSuzYOWCUg
get_agent_activity_volatile_agent:uhCAkekXi6YLZZOdmP7rDwxLqJy-nPkP3ABpPxlMC9DV76O3IG_Ts
get_agent_activity_volatile_agent:uhCAkhqwCeY3pGfDQxX9_4Oncw-mBWWhviwBF760V8doakx7z6ngs
get_agent_activity_volatile_agent:uhCAkhx8edmO3ErFUq4Zq0PPLl-0okVr3YbcOV2jDfKNghfm7Evnq
get_agent_activity_volatile_agent:uhCAkja-jXby3ALpxST-MzqG8vP1rqPeqiyysWD3wVmMdlXI9GjjM
get_agent_activity_volatile_agent:uhCAkkycWbrz6Ki5Wcbelo4404JuESHRu7_07lPs-AuPfFY-PUjLJ
get_agent_activity_volatile_agent:uhCAknGYE7GG2Ic6U8OBRdEDkj44otNU6py50cvfx4vxKW67ZLx9G
get_agent_activity_volatile_agent:uhCAkpusfr9WrsuKBEdhpzjZ3iStdB_rKt0HJm75VyTUtazSmMQ9v
get_agent_activity_volatile_agent:uhCAkqAT5MDGesVQayVWz5VJXoCvt7F_UbhQXY086n5cN4Je_h1rQ
get_agent_activity_volatile_agent:uhCAkt2E54nD2jP58RFeVbn2w8JGm1NAbEF60x30CEp4hRRnOPXHL
get_agent_activity_volatile_agent:uhCAkt42MJngdQPopV0pyjkQGD1xqRYrcoPTLVsbZYK_SOih7y1ab
get_agent_activity_volatile_agent:uhCAktxvhGAO9pY2k6oLDC1yC3wJGISCQhMkSPefYBqCwTx9hNyig
get_agent_activity_volatile_agent:uhCAkwWa1kWtS7YM9cJD8EoqjVn8c3EcYBmuWCcFsWlZMmhUJJnlk
get_agent_activity_volatile_agent:uhCAkxXUFEB_2G8TUAx6zjZbTQJvvTUoE81YK1ajaK6ZXpiSNR-0e
Write/Query
Creates an entry, then queries the source chain and performs a simple operation on the entries, then repeats.
-
default(1 agent)
chain_query_count_len zome call that queries the source chain.Warning Memory growing at 96.01 MB/s
Warning Moderate swap usage (14.1% swap used)
Additional Host Metrics
/etc/hostname/etc/hosts/etc/resolv.confWrite/Read
Creates an entry and reads it back, then repeats.
-
default(1 agent)
Warning CPU p99 reached 98.7%
Warning Memory growing at 4.58 MB/s
Additional Host Metrics
/etc/hostname/etc/hosts/etc/resolv.confWrite 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)
Warning Memory growing at 130.70 MB/s
Additional Host Metrics
/etc/hostname/etc/hosts/etc/resolv.confWrite Validated must_get_agent_activity
A scenario where write agents create entries in batches of 10, while must_get_agent_activity agents each pick a random write agent and repeatedly attempt to create an entry that references the chain top of their latest batch. This reference means that the entry's validation function needs to make a must_get_agent_activity call.
The purpose of this scenario is to measure the time it takes for published agent activity data to be gossiped among authorities and become available to peers that query it via must_get_agent_activity.
This test is similar to Mixed-Arc must_get_agent_activity, but all agents are full-arc.
-
must_get_agent_activity(1 agent) -
write(1 agent)
action_seqwrite agent, aggregated across all reading agents. The reading dimension is collapsed by taking the maximum observed value for each write agent (any successful read counts as propagation). This reflects the DHT’s ability to propagate agent activity ops and make them available to querying peers.write agent's creation of a batch and a must_get_agent_activity agent's successful discovery of the batch and creation/self-validation of a new entry that depends on it.must_get_agent_activity agent was able to discover batches and create/self-validate new entries that depend on them.create_validated_sample_entry zome call timingwrite agent's source chain.must_get_agent_activity calls.Warning CPU p99 reached 97.7%
Warning Memory growing at 1097.10 MB/s
Critical Heavy swap usage (21.2% swap used)
Warning 81% of hosts overloaded (load5/ncpus > 1.0)
Additional Host Metrics
//boot/efi-boot/etc/hostname/etc/hosts/etc/resolv.conf/nix/storeZero-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(1 agent) -
zero_read(1 agent) -
zero_write(1 agent)
get_timed_entries_network zome function.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(1 agent) -
zero(1 agent)
get_timed_local_entries zome function.Warning CPU p99 reached 98.0%
Warning Memory growing at 1378.40 MB/s
Critical Heavy swap usage (21.2% swap used)
Warning 87% of hosts overloaded (load5/ncpus > 1.0)
Additional Host Metrics
//boot/efi-boot/etc/hostname/etc/hosts/etc/resolv.conf/nix/storeZero-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(1 agent) -
zero(1 agent)
get_timed_local_entries zome function.Warning CPU p99 reached 98.3%
Warning Memory growing at 1515.18 MB/s
Warning Moderate swap usage (14.1% swap used)
Warning 85% of hosts overloaded (load5/ncpus > 1.0)
Additional Host Metrics
//efi-boot/etc/hostname/etc/hosts/etc/resolv.conf/nix/store