go1.5でGOMAXPROCS
go1.5では、GOMAXPROCSの値(デフォルト)がCPU数に設定されるようになります。従来は1。
以下のコードで調べてみました。
$ cat maxproc.go package main import ( "fmt" "runtime" ) func main() { fmt.Printf("cpu: %d\n", runtime.NumCPU()) fmt.Printf("GOMAXPROCS: %d\n", runtime.GOMAXPROCS(0)) }
実行結果は以下のようになりました。確かにCPU数が設定されています。
CPUのコア数は2(CPU情報)ですが、ハイパースレッディングでOSからはCPUの数が4に見えています。
$ go run maxproc.go cpu: 4 GOMAXPROCS: 4
go1.5では並列GCになったため、GOMAXPROCSのデフォルト値が変更されたのかもしれません。
CPU情報
Max OS Xには、/proc/cpuinfoがないかわりに、以下のコマンドで調べることができます。情報源。
$ system_profiler SPHardwareDataType Hardware: Hardware Overview: Model Name: MacBook Pro Model Identifier: MacBookPro11,1 Processor Name: Intel Core i5 Processor Speed: 2.6 GHz Number of Processors: 1 Total Number of Cores: 2 L2 Cache (per Core): 256 KB L3 Cache: 3 MB Memory: 8 GB Boot ROM Version: MBP111.0138.B15 SMC Version (system): 2.16f68 Serial Number (system): C02N472TG3QJ Hardware UUID: 54F92B52-8888-5792-A4BC-D35AAE1A8537