Как органичение количества используемых процессоров связано с машиной

«Как органичение количества используемых процессоров связано с машиной» — вопрос из категории Linux, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go можно ограничить количество используемых процессоров с помощью runtime.GOMAXPROCS(n), где n — желаемое количество. Это влияет на планировщик горутин, но не на физические ограничения машины.

Пример:

package main

import (
    "fmt"
    "runtime"
)

func main() {
    fmt.Println("До:", runtime.GOMAXPROCS(0)) // Текущее значение
    runtime.GOMAXPROCS(2)                    // Устанавливаем лимит
    fmt.Println("После:", runtime.GOMAXPROCS(0))
}

Нюансы:

  • Если n < 1, значение не меняется.
  • По умолчанию GOMAXPROCS равен количеству ядер CPU.
  • Ограничение не гарантирует точное использование n ядер (ОС может распределять нагрузку иначе).