Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement some much-needed improvements for the UHS load-generators #280

Draft
wants to merge 4 commits into
base: trunk
Choose a base branch
from

Conversation

HalosGhost
Copy link
Collaborator

@HalosGhost HalosGhost commented Jul 11, 2024

This first commit brings targeted-load for the 2PC load-gen; another commit will follow updating the atomizer load-gen as well.

cf. #279

I've been locally testing using variants of the configuration below:

Configuration
shard0_count=1
shard0_start=0
shard0_end=255
shard0_0_endpoint="0.0.0.0:5002"
shard0_0_raft_endpoint="0.0.0.0:5003"
shard0_0_readonly_endpoint="0.0.0.0:5004"
shard0_audit_log="shard0_audit_log"
shard1_count=1
shard1_start=128
shard1_end=255
shard1_0_endpoint="0.0.0.0:5005"
shard1_0_raft_endpoint="0.0.0.0:5006"
shard1_0_readonly_endpoint="0.0.0.0:5007"
shard1_audit_log="shard1_audit_log"
coordinator0_count=1
coordinator0_0_endpoint="0.0.0.0:6001"
coordinator0_0_raft_endpoint="0.0.0.0:6002"
coordinator1_count=1
coordinator1_0_endpoint="0.0.0.0:6003"
coordinator1_0_raft_endpoint="0.0.0.0:6004"
sentinel0_endpoint="0.0.0.0:7003"
sentinel1_endpoint="0.0.0.0:8003"
sentinel2_endpoint="0.0.0.0:9003"
sentinel3_endpoint="0.0.0.0:9004"
coordinator0_loglevel="TRACE"
coordinator1_loglevel="TRACE"
sentinel0_loglevel="TRACE"
sentinel1_loglevel="TRACE"
sentinel2_loglevel="TRACE"
sentinel3_loglevel="TRACE"
shard0_loglevel="WARN"
shard1_loglevel="TRACE"
twophase-gen0_loglevel="TRACE"
loadgen0_loglevel="DEBUG"
stxo_cache_depth=0
window_size=100000
batch_size=3000
watchtower_block_cache_size=100
watchtower_error_cache_size=10000000
audit_interval=900
attestation_threshold=2
target_block_interval=250
election_timeout_upper=1000
election_timeout_lower=500
heartbeat=250
raft_max_batch=100000
snapshot_distance=0
batch_delay=1

seed_privkey="a0f36553548b3a66c003413140d7b59e43464ca11af66f25a6e746be501596b7"
seed_value=10
seed_from=0
seed_to=10000

loadgen_sendtx_input_count=2
loadgen_sendtx_output_count=2
loadgen_invalid_tx_rate=0.000000
loadgen_fixed_tx_rate=0.07
loadgen_tps_target=850
loadgen_tps_step_time=3.0
loadgen_tps_step_percentage=0.05
loadgen_tps_step_start=0.2

shard_count=1
coordinator_count=2
loadgen_count=1
sentinel_count=2

2pc=1
sentinel0_private_key="1ffed20f548336af31ddc58fb8db7ef6195b91d1851021cf9fc3b8b196f58fc0"
sentinel0_public_key="6e4fae7a0c180ff20f54698136e4585bf7be045cd5ad621f5c8881871e29c024"
sentinel1_private_key="a94d4bfed8d8679a97f74964c2e19b07098d291ae4967f8f0417821c18253b0e"
sentinel1_public_key="3f8f5f79191ef88d25ede8453f09cb8e1ae5b7b1d98aece1cb25e9d047eca505"
sentinel2_private_key="1ffed20f548336af31ddc58fb8db7ef6195b91d1851021cf9fc3b8b196f58fc0"
sentinel2_public_key="6e4fae7a0c180ff20f54698136e4585bf7be045cd5ad621f5c8881871e29c024"
sentinel3_private_key="a94d4bfed8d8679a97f74964c2e19b07098d291ae4967f8f0417821c18253b0e"
sentinel3_public_key="3f8f5f79191ef88d25ede8453f09cb8e1ae5b7b1d98aece1cb25e9d047eca505"

@HalosGhost HalosGhost requested a review from maurermi July 11, 2024 20:22
@HalosGhost HalosGhost force-pushed the feat/targeted-load branch 3 times, most recently from 7c32062 to 4c60e65 Compare July 12, 2024 21:46
@HalosGhost HalosGhost marked this pull request as ready for review July 12, 2024 21:46
@HalosGhost
Copy link
Collaborator Author

@maurermi, this doesn't yet include the atomizer updates; but I'd love a review before I dive into that side.

The types and configuration have been modified to mirror the exact current behavior of the test controller (so any currently deployed test controller should be able to now leverage targeted-load schedules in 2PC with no redeployment). Let me know if you want our TC spun up at any point this next week to give a t-ACK.

Copy link
Collaborator

@maurermi maurermi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

T-ACK. Confirmed that these changes work locally for allowing the 2PC-loadgen to ramp up its workload as specified. There is a noticeable load "spike" at the beginning of the test that we will need to address (as discussed out of band) but as this stands it is a significant improvement to the 2PC load generator that can be used as it stands.

@HalosGhost HalosGhost marked this pull request as draft July 19, 2024 20:57
@HalosGhost
Copy link
Collaborator Author

(pulled to draft as I implement equivalent changes for the atomizer)

This sets up the 2PC load-generator to read the config values the Test
Controller already supports* to limit throughput to a set amount,
optionally increasing it according to a definable schedule. Among
other benefits, this allows the tester to constrain load-generators
directly rather than by relying on the preseed count to artifically
reduce their load.

This also includes the relevant config changes to enable respected
per-loadgen log-levels.

Signed-off-by: Sam Stuewe <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants