Skip to content

Commit

Permalink
wb | profiles: new utxoscale-solo profile family
Browse files Browse the repository at this point in the history
  • Loading branch information
mgmeier committed May 8, 2024
1 parent f255977 commit a26fb90
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 3 deletions.
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ PROFILES_NOMAD_PERF += plutus-nomadperf fast-nomadperf latency-nomadperf
PROFILES_NOMAD_PERF_NOP2P := default-nomadperf-nop2p oldtracing-nomadperf-nop2p ci-test-nomadperf-nop2p ci-bench-nomadperf-nop2p
PROFILES_NOMAD_PERF_NOP2P += value-nomadperf-nop2p value-oldtracing-nomadperf-nop2p plutus-nomadperf-nop2p fast-nomadperf-nop2p
PROFILES_NOMAD_PERFSSD := fast-nomadperfssd
# single node profiles on the NomadSSD cluster on AWS
PROFILES_UTXOSCALE_SOLO := utxoscale-solo-24M64G-nomadperfssd utxoscale-solo-12M64G-nomadperfssd utxoscale-solo-12M16G-nomadperfssd

LOCAL_PROFILES += $(PROFILES_BASE)
LOCAL_PROFILES += $(PROFILES_FAST)
Expand All @@ -120,6 +122,7 @@ LOCAL_PROFILES += $(PROFILES_VENDOR)
CLOUD_PROFILES += $(PROFILES_NOMAD_PERF)
CLOUD_PROFILES += $(PROFILES_NOMAD_PERF_NOP2P)
CLOUD_PROFILES += $(PROFILES_NOMAD_PERFSSD)
CLOUD_PROFILES += $(PROFILES_UTXOSCALE_SOLO)


## Note: to enable a shell for a profile, just add its name (one of names from 'make ps') to SHELL_PROFILES
Expand Down
63 changes: 61 additions & 2 deletions nix/workbench/profile/prof1-variants.jq
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
import "epoch-timeline" as timeline;

## For the Nomad perf-ssd cluster, we might want to artificially
## cap the large RAM resources the instances provide.
def nomad_memory_limit($limit):
{ nomad:
{ resources:
{ producer:
{ memory: $limit
, memory_max: $limit
}
}
}
};

def all_profile_variants:
1024 as $Ki
| 1000000 as $M
Expand Down Expand Up @@ -281,8 +294,8 @@ def all_profile_variants:
} as $compressed_timescale
|
{ genesis:
{ epoch_length: 1800
, parameter_k: 9
{ epoch_length: 1200
, parameter_k: 6
}
} as $small_timescale
|
Expand Down Expand Up @@ -547,6 +560,10 @@ def all_profile_variants:
($model_timescale * $nomad_perf_tps_saturation_value *
{ scenario: "fixed-loaded"
}) as $scenario_nomad_perf
|
($small_timescale * $nomad_perf_tps_saturation_value *
{ scenario: "fixed-loaded"
}) as $scenario_nomad_perfssd_solo
|
($model_timescale * $model_tps_saturation_value *
{ scenario: "fixed-loaded"
Expand Down Expand Up @@ -636,6 +653,23 @@ def all_profile_variants:
($scenario_latency * $compose_fiftytwo * $dataset_empty * $no_filtering *
{ desc: "AWS c5-2xlarge cluster, stop when all latency services stop"
}) as $nomad_perf_latency_base
|
($scenario_nomad_perfssd_solo * $solo * $dataset_24m *
{ node:
{ shutdown_on_slot_synced: 7200
}
, analysis:
{ filters: ["epoch3+", "size-full"]
}
, generator:
{ epochs: 6
}
, genesis:
{ funds_balance: 20000000000000
, max_block_size: 88000
}
, desc: "AWS c5[d]-9xlarge utxoscale dataset, 6 epochs"
}) as $nomad_perfssd_solo_base
|
($scenario_model * $quadruplet * $dataset_current * $for_7ep *
{ node:
Expand Down Expand Up @@ -715,6 +749,13 @@ def all_profile_variants:
### Actual profiles
##

### Profile templates
###
# UTxO scaling on a single node, mainnet blocksize, ~2h runtime (6 epochs) - default: 24mio UTxO, 64GB RAM cap
($nomad_perfssd_solo_base * $nomad_perfssd_unicircle * $costmodel_v8_preview * $p2p
) as $utxoscale_solo_template
|

### First, auto-named profiles:
###
## Short slots:
Expand Down Expand Up @@ -970,6 +1011,24 @@ def all_profile_variants:
{ name: "fast-nomadperfssd"
}

## P&T NomadSSD cluster: UTxO scale benchmarks on a single node
, $utxoscale_solo_template *
{ name: "utxoscale-solo-24M64G-nomadperfssd"
}
, $utxoscale_solo_template *
{ name: "utxoscale-solo-12M64G-nomadperfssd"
, genesis:
{ utxo: (12 * $M)
}
}
, $utxoscale_solo_template *
{ name: "utxoscale-solo-12M16G-nomadperfssd"
, genesis:
{ utxo: (12 * $M)
}
, cluster: nomad_memory_limit(16384)
}

## Model value variant: 7 epochs (128GB RAM needed; 16GB for testing locally)
, $model_base * $costmodel_v8_preview *
{ name: "model-value"
Expand Down
12 changes: 11 additions & 1 deletion nix/workbench/profile/prof3-derived.jq
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,16 @@ def add_derived_params:
| .era as $era
| .node as $node
| .genesis.shelley.protocolParams as $pparams
| .cluster.nomad as $nomad

## The perf-ssd machines have abundant physical RAM, and Nomad uses cgroups to constrain resources.
## To also influence RTS / GC behaviour, -M needs to be used, as the RTS infers a heap limit from
## the system's ulimit, not the cgroup limit.
| $node.rts_flags_override as $rtsflags
| (if $nomad.class == "perf-ssd"
then $rtsflags + [("-M" + ($nomad.resources.producer.memory_max | tostring) + "M")]
else $rtsflags
end) as $rtsflags_derived

## Absolute durations:
| ($gsis.epoch_length * $gsis.slot_duration) as $epoch_duration
Expand Down Expand Up @@ -191,7 +201,7 @@ def add_derived_params:
{ tx_count: $generator_tx_count
}
, node:
{
{ rts_flags_override: $rtsflags_derived
}
, analysis:
{ minimum_chain_density: ($gsis.active_slots_coeff * 0.5)
Expand Down

0 comments on commit a26fb90

Please sign in to comment.