Browse Source

etcdmain: explicitly set gomaxprocs and log its value

Prashanth Balasubramanian 10 years ago
parent
commit
1e15b05e4c
1 changed files with 9 additions and 0 deletions
  1. 9 0
      etcdmain/etcd.go

+ 9 - 0
etcdmain/etcd.go

@@ -23,6 +23,8 @@ import (
 	"os"
 	"path"
 	"reflect"
+	"runtime"
+	"strconv"
 	"time"
 
 	"github.com/coreos/etcd/discovery"
@@ -70,6 +72,13 @@ func Main() {
 
 	var stopped <-chan struct{}
 
+	GoMaxProcs := 1
+	if envMaxProcs, err := strconv.Atoi(os.Getenv("GOMAXPROCS")); err == nil {
+		GoMaxProcs = envMaxProcs
+	}
+	log.Printf("main: setting maximum number of CPUs to %d, total number of available CPUs is %d", GoMaxProcs, runtime.NumCPU())
+	runtime.GOMAXPROCS(GoMaxProcs)
+
 	// TODO: check whether fields are set instead of whether fields have default value
 	if cfg.name != defaultName && cfg.initialCluster == initialClusterFromName(defaultName) {
 		cfg.initialCluster = initialClusterFromName(cfg.name)