Skip to content

Commit

Permalink
rptest: add tco tiers to AdvertisedTierConfigs
Browse files Browse the repository at this point in the history
  • Loading branch information
ballard26 committed Oct 18, 2023
1 parent 6e8ed3c commit 8deeee2
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 28 deletions.
88 changes: 60 additions & 28 deletions tests/rptest/redpanda_cloud_tests/omb_validation_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
KiB = 1024
MiB = KiB * KiB
GiB = KiB * MiB
KB = 10**3
MB = 10**6
GB = 10**9
minutes = 60
hours = 60 * minutes

Expand Down Expand Up @@ -82,6 +85,17 @@ def __init__(self, test_ctx: TestContext, *args, **kwargs):

self.rpk = RpkTool(self.redpanda)

self.base_validator = {
OMBSampleConfigurations.E2E_LATENCY_50PCT:
[OMBSampleConfigurations.lte(20)],
OMBSampleConfigurations.E2E_LATENCY_75PCT:
[OMBSampleConfigurations.lte(25)],
OMBSampleConfigurations.E2E_LATENCY_99PCT:
[OMBSampleConfigurations.lte(50)],
OMBSampleConfigurations.E2E_LATENCY_999PCT:
[OMBSampleConfigurations.lte(100)],
}

def _partition_count(self) -> int:
tier_config = self.redpanda.advertised_tier_config
machine_config = tier_config.machine_type_config
Expand All @@ -93,6 +107,9 @@ def _producer_count(self, ingress_rate) -> int:
def _consumer_count(self, egress_rate) -> int:
return max(egress_rate // (4 * MiB), 8)

def _mb_to_mib(self, mb):
return math.floor(0.9537 * mb)

@cluster(num_nodes=12)
def test_max_connections(self):
tier_config = self.redpanda.advertised_tier_config
Expand Down Expand Up @@ -140,15 +157,20 @@ def test_max_connections(self):
"acks": "all",
"linger.ms": 1,
"max.in.flight.requests.per.connection": 5,
"batch.size": 131072,
},
"consumer_config": {
"auto.offset.reset": "earliest",
"enable.auto.commit": "false",
"max.partition.fetch.bytes": 131072
},
}

validator = self.base_validator | {
OMBSampleConfigurations.AVG_THROUGHPUT_MBPS: [
OMBSampleConfigurations.gte(
self._mb_to_mib(producer_rate // (1 * MB))),
],
}

# ProducerSwarm parameters
#

Expand Down Expand Up @@ -183,13 +205,11 @@ def test_max_connections(self):
producer_kwargs[
'messages_per_second_per_producer'] = messages_per_sec_per_producer

benchmark = OpenMessagingBenchmark(
self._ctx,
self.redpanda,
driver,
(workload, OMBSampleConfigurations.UNIT_TEST_LATENCY_VALIDATOR),
num_workers=OMB_WORKERS,
topology="ensemble")
benchmark = OpenMessagingBenchmark(self._ctx,
self.redpanda,
driver, (workload, validator),
num_workers=OMB_WORKERS,
topology="ensemble")

# Create topic for swarm workers after OMB to avoid the reset
swarm_topic_name = "swarm_topic"
Expand Down Expand Up @@ -267,11 +287,18 @@ def test_max_partitions(self):
"warmup_duration_minutes": 1,
}

validator = self.base_validator | {
OMBSampleConfigurations.AVG_THROUGHPUT_MBPS: [
OMBSampleConfigurations.gte(
self._mb_to_mib(producer_rate // (1 * MB))),
],
}

benchmark = OpenMessagingBenchmark(
self._ctx,
self.redpanda,
"ACK_ALL_GROUP_LINGER_1MS_IDEM_MAX_IN_FLIGHT",
(workload, OMBSampleConfigurations.UNIT_TEST_LATENCY_VALIDATOR),
(workload, validator),
num_workers=10,
topology="ensemble")
benchmark.start()
Expand All @@ -288,6 +315,12 @@ def test_common_workload(self):
partitions = self._partition_count()
total_producers = self._producer_count(tier_config.ingress_rate)
total_consumers = self._consumer_count(tier_config.egress_rate)
validator = self.base_validator | {
OMBSampleConfigurations.AVG_THROUGHPUT_MBPS: [
OMBSampleConfigurations.gte(
self._mb_to_mib(tier_config.ingress_rate // (1 * MB))),
],
}

workload = {
"name": "CommonTestWorkload",
Expand Down Expand Up @@ -315,22 +348,18 @@ def test_common_workload(self):
"acks": "all",
"linger.ms": 1,
"max.in.flight.requests.per.connection": 5,
"batch.size": 131072,
},
"consumer_config": {
"auto.offset.reset": "earliest",
"enable.auto.commit": "false",
"max.partition.fetch.bytes": 131072
},
}

benchmark = OpenMessagingBenchmark(
self._ctx,
self.redpanda,
driver,
(workload, OMBSampleConfigurations.UNIT_TEST_LATENCY_VALIDATOR),
num_workers=10,
topology="ensemble")
benchmark = OpenMessagingBenchmark(self._ctx,
self.redpanda,
driver, (workload, validator),
num_workers=10,
topology="ensemble")
benchmark.start()
benchmark_time_min = benchmark.benchmark_time() + 5
benchmark.wait(timeout_sec=benchmark_time_min * 60)
Expand Down Expand Up @@ -377,12 +406,10 @@ def test_retention(self):
"acks": "all",
"linger.ms": 1,
"max.in.flight.requests.per.connection": 5,
"batch.size": 131072,
},
"consumer_config": {
"auto.offset.reset": "earliest",
"enable.auto.commit": "false",
"max.partition.fetch.bytes": 131072
},
"topic_config": {
"retention.bytes": retention_bytes,
Expand All @@ -391,13 +418,18 @@ def test_retention(self):
},
}

benchmark = OpenMessagingBenchmark(
self._ctx,
self.redpanda,
driver,
(workload, OMBSampleConfigurations.UNIT_TEST_LATENCY_VALIDATOR),
num_workers=10,
topology="ensemble")
validator = self.base_validator | {
OMBSampleConfigurations.AVG_THROUGHPUT_MBPS: [
OMBSampleConfigurations.gte(
self._mb_to_mib(producer_rate // (1 * MB))),
],
}

benchmark = OpenMessagingBenchmark(self._ctx,
self.redpanda,
driver, (workload, validator),
num_workers=10,
topology="ensemble")
benchmark.start()
benchmark_time_min = benchmark.benchmark_time() + 5
benchmark.wait(timeout_sec=benchmark_time_min * 60)
Expand Down
36 changes: 36 additions & 0 deletions tests/rptest/services/redpanda_cloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,18 +65,28 @@ class CloudTierName(Enum):
GCP_4 = 'tier-4-gcp'
GCP_5 = 'tier-5-gcp'

AWS_1_TCO_P5 = 'tco-p5-tier-1-aws'
AWS_2_TCO_P5 = 'tco-p5-tier-2-aws'
AWS_3_TCO_P5 = 'tco-p5-tier-3-aws'
GCP_1_TCO_P5 = 'tco-p5-tier-1-gcp'
GCP_2_TCO_P5 = 'tco-p5-tier-2-gcp'
GCP_3_TCO_P5 = 'tco-p5-tier-3-gcp'

@classmethod
def list(cls):
return list(map(lambda c: c.value, cls))


class MachineTypeName(Enum):
DOCKER = 'docker'
I3EN_LARGE = 'i3en.large'
I3EN_XLARGE = 'i3en.xlarge'
I3EN_2XLARGE = 'i3en.2xlarge'
I3EN_3XLARGE = 'i3en.3xlarge'
N2_STANDARD_4 = 'n2-standard-4'
N2_STANDARD_8 = 'n2-standard-8'
N2D_STANDARD_2 = 'n2d-standard-2'
N2D_STANDARD_4 = 'n2d-standard-4'

@classmethod
def list(cls):
Expand All @@ -90,11 +100,14 @@ def __init__(self, num_shards: int):

MachineTypeConfigs = {
MachineTypeName.DOCKER: MachineTypeConfig(num_shards=2),
MachineTypeName.I3EN_LARGE: MachineTypeConfig(num_shards=1),
MachineTypeName.I3EN_XLARGE: MachineTypeConfig(num_shards=3),
MachineTypeName.I3EN_2XLARGE: MachineTypeConfig(num_shards=7),
MachineTypeName.I3EN_3XLARGE: MachineTypeConfig(num_shards=11),
MachineTypeName.N2_STANDARD_4: MachineTypeConfig(num_shards=3),
MachineTypeName.N2_STANDARD_8: MachineTypeConfig(num_shards=7),
MachineTypeName.N2D_STANDARD_2: MachineTypeConfig(num_shards=1),
MachineTypeName.N2D_STANDARD_4: MachineTypeConfig(num_shards=3),
}


Expand Down Expand Up @@ -138,6 +151,10 @@ def machine_type_config(self) -> MachineTypeConfig:
MiB = kiB * kiB
GiB = MiB * kiB

KB = 10**3
MB = 10**6
GB = 10**9

# yapf: disable
AdvertisedTierConfigs = {
# +- ingress_rate
Expand Down Expand Up @@ -184,6 +201,25 @@ def machine_type_config(self) -> MachineTypeConfig:
CloudTierName.DOCKER: AdvertisedTierConfig(
3*MiB, 9*MiB, 3, 128*MiB, 20*GiB, 1, 25, 100, 2*GiB, MachineTypeName.DOCKER,
),
# TCO
CloudTierName.AWS_1_TCO_P5: AdvertisedTierConfig(
25*MB, 60*MB, 3, 128*MB, 125*GB, 20, 1000, 1500, 16*GiB, MachineTypeName.I3EN_LARGE,
),
CloudTierName.AWS_2_TCO_P5: AdvertisedTierConfig(
50*MB, 150*MB, 3, 128*MB, 250*GB, 50, 3000, 3750, 32*GiB, MachineTypeName.I3EN_XLARGE,
),
CloudTierName.AWS_3_TCO_P5: AdvertisedTierConfig(
100*MB, 200*MB, 6, 128*MB, 250*GB, 100, 6000, 7500, 32*GiB, MachineTypeName.I3EN_XLARGE,
),
CloudTierName.GCP_1_TCO_P5: AdvertisedTierConfig(
25*MB, 60*MB, 3, 128*MB, 125*GB, 20, 1000, 1500, 8*GiB, MachineTypeName.N2D_STANDARD_2,
),
CloudTierName.GCP_2_TCO_P5: AdvertisedTierConfig(
50*MB, 150*MB, 3, 128*MB, 250*GB, 50, 2800, 3750, 16*GiB, MachineTypeName.N2D_STANDARD_4,
),
CloudTierName.GCP_3_TCO_P5: AdvertisedTierConfig(
100*MB, 200*MB, 6, 128*MB, 250*GB, 100, 5600, 7500, 16*GiB, MachineTypeName.N2D_STANDARD_4,
),
}
# yapf: enable

Expand Down

0 comments on commit 8deeee2

Please sign in to comment.