@@ -26,8 +26,8 @@ var AllClusterOptions = [...]string{"single_region", "single_region_multi_store"
26
26
// SingleRegionConfig is a simple cluster config with a single region and 3
27
27
// zones, all have the same number of nodes.
28
28
var SingleRegionConfig = ClusterInfo {
29
- NodeCPURateCapacityNanos : config .DefaultNodeCPURateCapacityNanos , // 8vpucs
30
- StoreDiskCapacityBytes : config .DefaultStoreDiskCapacityBytes , // 1024 GiB
29
+ NodeCPURateCapacityNanos : [] uint64 { config .DefaultNodeCPURateCapacityNanos } , // 8vpucs
30
+ StoreDiskCapacityBytes : config .DefaultStoreDiskCapacityBytes , // 1024 GiB
31
31
Regions : []Region {
32
32
{
33
33
Name : "US" ,
@@ -43,8 +43,8 @@ var SingleRegionConfig = ClusterInfo{
43
43
// SingleRegionMultiStoreConfig is a simple cluster config with a single region
44
44
// and 3 zones, all zones have 1 node and 5 stores per node.
45
45
var SingleRegionMultiStoreConfig = ClusterInfo {
46
- NodeCPURateCapacityNanos : config .DefaultNodeCPURateCapacityNanos , // 8 vcpus
47
- StoreDiskCapacityBytes : config .DefaultStoreDiskCapacityBytes , // 1024 GiB
46
+ NodeCPURateCapacityNanos : [] uint64 { config .DefaultNodeCPURateCapacityNanos } , // 8 vcpus
47
+ StoreDiskCapacityBytes : config .DefaultStoreDiskCapacityBytes , // 1024 GiB
48
48
Regions : []Region {
49
49
{
50
50
Name : "US" ,
@@ -59,8 +59,8 @@ var SingleRegionMultiStoreConfig = ClusterInfo{
59
59
60
60
// MultiRegionConfig is a perfectly balanced cluster config with 3 regions.
61
61
var MultiRegionConfig = ClusterInfo {
62
- NodeCPURateCapacityNanos : config .DoubleDefaultNodeCPURateCapacityNanos , // 16 vcpus
63
- StoreDiskCapacityBytes : config .DoubleDefaultStoreDiskCapacityBytes , // 2048 GiB
62
+ NodeCPURateCapacityNanos : [] uint64 { config .DoubleDefaultNodeCPURateCapacityNanos } , // 16 vcpus
63
+ StoreDiskCapacityBytes : config .DoubleDefaultStoreDiskCapacityBytes , // 2048 GiB
64
64
Regions : []Region {
65
65
{
66
66
Name : "US_East" ,
@@ -91,8 +91,8 @@ var MultiRegionConfig = ClusterInfo{
91
91
92
92
// ComplexConfig is an imbalanced multi-region cluster config.
93
93
var ComplexConfig = ClusterInfo {
94
- NodeCPURateCapacityNanos : config .DoubleDefaultNodeCPURateCapacityNanos , // 16 vcpus
95
- StoreDiskCapacityBytes : config .DoubleDefaultStoreDiskCapacityBytes , // 2048 GiB
94
+ NodeCPURateCapacityNanos : [] uint64 { config .DoubleDefaultNodeCPURateCapacityNanos } , // 16 vcpus
95
+ StoreDiskCapacityBytes : config .DoubleDefaultStoreDiskCapacityBytes , // 2048 GiB
96
96
Regions : []Region {
97
97
{
98
98
Name : "US_East" ,
@@ -282,7 +282,7 @@ type Region struct {
282
282
type ClusterInfo struct {
283
283
Regions []Region
284
284
StoreDiskCapacityBytes int64
285
- NodeCPURateCapacityNanos int64
285
+ NodeCPURateCapacityNanos NodeCPURateCapacities
286
286
}
287
287
288
288
func (c ClusterInfo ) String () (s string ) {
@@ -300,7 +300,7 @@ func (c ClusterInfo) String() (s string) {
300
300
}
301
301
buf .WriteString ("]\n " )
302
302
}
303
- buf .WriteString (fmt .Sprintf ("store_disk_capacity=%d bytes, node_cpu_rate_capacity=%d cpu-ns/sec " ,
303
+ buf .WriteString (fmt .Sprintf ("store_disk_capacity=%d bytes, node_cpu_rate_capacity=%s " ,
304
304
c .StoreDiskCapacityBytes , c .NodeCPURateCapacityNanos ))
305
305
return buf .String ()
306
306
}
@@ -361,6 +361,7 @@ func LoadClusterInfo(c ClusterInfo, settings *config.SimulationSettings) State {
361
361
s := newState (settings )
362
362
// A new state has a single range - add the replica load for that range.
363
363
s .clusterinfo = c
364
+ var nodeIdx int
364
365
for _ , r := range c .Regions {
365
366
regionTier := roachpb.Tier {
366
367
Key : "region" ,
@@ -375,7 +376,17 @@ func LoadClusterInfo(c ClusterInfo, settings *config.SimulationSettings) State {
375
376
Tiers : []roachpb.Tier {regionTier , zoneTier },
376
377
}
377
378
for i := 0 ; i < z .NodeCount ; i ++ {
378
- node := s .AddNode (c .NodeCPURateCapacityNanos , locality )
379
+ var cpuCap uint64
380
+ if len (c .NodeCPURateCapacityNanos ) == 1 {
381
+ // As a special case, if only one CPU is specified, use it for all nodes.
382
+ cpuCap = c .NodeCPURateCapacityNanos [0 ]
383
+ } else {
384
+ // Otherwise, expect a CPU capacity for each node. Crash if this is
385
+ // not the case.
386
+ cpuCap = c .NodeCPURateCapacityNanos [nodeIdx ]
387
+ }
388
+ nodeIdx += 1
389
+ node := s .AddNode (int64 (cpuCap ), locality )
379
390
storesRequired := z .StoresPerNode
380
391
if storesRequired < 1 {
381
392
panic (fmt .Sprintf ("storesPerNode cannot be less than one but found %v" , storesRequired ))
0 commit comments