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