суббота, 16 февраля 2019 г.

Go FAQ: Как можно контролировать количество процессоров, используемых в Go программе?

Количество процессоров, доступных одновременно для выполнения go-процедур (goroutines), управляется переменной среды оболочки GOMAXPROCS, значение по умолчанию - количество доступных процессорных ядер. Поэтому программы с возможностью параллельного выполнения должны получить все процессоры по умолчанию на многопроцессорной машине. Чтобы изменить количество параллельных процессоров, установите переменную среды или используйте одноименную функцию runtime пакета для настройки использования различного количества потоков во время выполнения. Установка его в 1 исключает возможность истинного параллелизма, заставляя независимые go-процедуры (goroutines) выполняться по очереди.

Среда выполнения (runtime) может выделить больше потоков, чем значение GOMAXPROCS для обслуживания нескольких невыполненных запросов ввода/вывода. GOMAXPROCS влияет только на количество go-процедур (goroutines), которые могут реально выполниться сразу; произвольно больше может быть заблокировано в системных вызовах.

Планировщик go-процедур (goroutines) в Go не так хорош, как это должно быть, хотя это со временем улучшилось. В будущем он может лучше оптимизировать использование потоков операционной системы. На данный момент, если есть проблемы с производительностью, настройка GOMAXPROCS для каждого приложения может помочь.


Читайте также:


Комментариев нет:

Отправить комментарий