runtime.GOMAXPROCS не работает должным образом

У меня есть простая программа Go -

main.go -

package main

import (
    "log"
    "runtime"
    "time"
)

func main() {
    runtime.GOMAXPROCS(1)
    log.Println("running")
    time.Sleep(10 * time.Minute)
}

Я строю двоичный файл, как это -

GOOS=linux go build

и запустить его в машине Centos -

# ./test
2017/10/27 14:20:15 running

Интересно, почему для этой простой программы используются 2 разных ядра (1 и 6), даже если GOMAXPROCS установлено на 1.

процесс с использованием 2 ядер процессора

Иногда 3-4 ядра также используются.

Есть идеи по этому поводу?

Спасибо.

1 ответ

Вы запускаете четыре процесса. Ядро распределяет их по ядрам. GOMAXPROCS не имеет к этому никакого отношения; это влияет только на количество потоков для одного процесса и только на пользовательский код.

Другие вопросы по тегам