G - горутина (структура g): стек, функция, состояние. M - поток ОС (thread), выполняет код Go. P - логический процессор (структура p): очередь локальных горутин, кеш и т.д. У каждого P может быть свой M; M без P не выполняет пользовательский код.