В Kubernetes будет ли контейнер Go в модуле использовать все доступные ядра? - PullRequest
0 голосов
/ 08 апреля 2020

Сценарий: на 16-ядерном узле служба / контейнер Go запускается в модуле вместе с другим, где другому назначается 4 рабочих, а для контейнера go установлено использование GOMAXPROCS.

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

kube top показывает, что ожидается в режиме ожидания:

POD        NAME            CPU(cores)   MEMORY(bytes)
pod-go-py  go-service      1m           862Mi
pod-go-py  py-service      4m           489Mi

fmt.Println(runtime.NumCPU()) показывает 16 ядро доступно. Так что я могу верить, что программа Go будет использовать их все в запросах? Я также представляю, как я масштабирую стручки на узле, что я должен помнить о дросселировании.

...