@@ -26,8 +26,8 @@ var AllClusterOptions = [...]string{"single_region", "single_region_multi_store"
2626// SingleRegionConfig is a simple cluster config with a single region and 3
2727// zones, all have the same number of nodes.
2828var 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
3131 Regions : []Region {
3232 {
3333 Name : "US" ,
@@ -43,8 +43,8 @@ var SingleRegionConfig = ClusterInfo{
4343// SingleRegionMultiStoreConfig is a simple cluster config with a single region
4444// and 3 zones, all zones have 1 node and 5 stores per node.
4545var 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
4848 Regions : []Region {
4949 {
5050 Name : "US" ,
@@ -59,8 +59,8 @@ var SingleRegionMultiStoreConfig = ClusterInfo{
5959
6060// MultiRegionConfig is a perfectly balanced cluster config with 3 regions.
6161var 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
6464 Regions : []Region {
6565 {
6666 Name : "US_East" ,
@@ -91,8 +91,8 @@ var MultiRegionConfig = ClusterInfo{
9191
9292// ComplexConfig is an imbalanced multi-region cluster config.
9393var 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
9696 Regions : []Region {
9797 {
9898 Name : "US_East" ,
@@ -282,7 +282,7 @@ type Region struct {
282282type ClusterInfo struct {
283283 Regions []Region
284284 StoreDiskCapacityBytes int64
285- NodeCPURateCapacityNanos int64
285+ NodeCPURateCapacityNanos NodeCPURateCapacities
286286}
287287
288288func (c ClusterInfo ) String () (s string ) {
@@ -300,7 +300,7 @@ func (c ClusterInfo) String() (s string) {
300300 }
301301 buf .WriteString ("]\n " )
302302 }
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 " ,
304304 c .StoreDiskCapacityBytes , c .NodeCPURateCapacityNanos ))
305305 return buf .String ()
306306}
@@ -361,6 +361,7 @@ func LoadClusterInfo(c ClusterInfo, settings *config.SimulationSettings) State {
361361 s := newState (settings )
362362 // A new state has a single range - add the replica load for that range.
363363 s .clusterinfo = c
364+ var nodeIdx int
364365 for _ , r := range c .Regions {
365366 regionTier := roachpb.Tier {
366367 Key : "region" ,
@@ -375,7 +376,17 @@ func LoadClusterInfo(c ClusterInfo, settings *config.SimulationSettings) State {
375376 Tiers : []roachpb.Tier {regionTier , zoneTier },
376377 }
377378 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 )
379390 storesRequired := z .StoresPerNode
380391 if storesRequired < 1 {
381392 panic (fmt .Sprintf ("storesPerNode cannot be less than one but found %v" , storesRequired ))
0 commit comments