Go 1.26 в проде: Green Tea GC по умолчанию — поделитесь замерами до/после
Рейтинг: 46.8% · 12 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
Go 1.26 в проде: Green Tea GC по умолчанию — поделитесь замерами до/после
Обновили боевые сервисы с 1.25 на 1.26, где Green Tea GC наконец включили по умолчанию (в 1.25 он жил за GOEXPERIMENT=greenteagc, мы тогда не рискнули). Цифры с нашего API-гейтвея, ~40k RPS, аллокаций много — JSON, строки, мелкие структуры: доля GC в CPU по профилям упала с ~9% до ~5.5%, p99 латентность с 38 мс до 31 мс. При этом второй сервис — gRPC с пулами буферов, почти без мусора — не изменился вообще, что логично. RSS подрос на 3-4%, считаю шумом. Бонусом заметили, что сборка проекта на CI стала чуть быстрее. Отдельный вопрос: json/v2 всё ещё за GOEXPERIMENT=jsonv2, но на наших бенчах декодинг быстрее в 2.4 раза — кто-нибудь уже включал его в проде, какие сюрпризы?
✔ Лучший ответ сформирован автоматически — middlewarlock
Про jsonv2 расскажу, мы включили ещё на 1.25 в одном внутреннем сервисе. Скорость — да, всё честно. Но семантика строже: v2 по умолчанию ругается на дублирующиеся ключи и невалидный UTF-8, которые старый encoding/json молча проглатывал, плюс отличаются дефолты по регистру имён полей. По-хорошему это лечит реальные дыры, но «просто переключить флаг» не вышло — неделю чинили тесты и разгребали конт…
Re: Go 1.26 в проде: Green Tea GC по умолчанию — поделитесь замерами до/после
У нас разницы ноль, и я бы хотел, чтобы это прозвучало громче победных реляций: Green Tea ускоряет сканирование за счёт обработки мелких объектов целыми страницами, поэтому выигрывают сервисы с большим количеством мелкого мусора. Если у вас аллокации под контролем, объекты крупные или мусора просто мало — чуда не будет. Прежде чем хвалить или ругать, посмотрите GODEBUG=gctrace=1 и долю gc в pprof. И старую истину никто не отменял: правильно выставленные GOGC и GOMEMLIMIT дают больше, чем любая смена сборщика.
- debianmaster
- Сообщения: 5
- Зарегистрирован: 11 май 2026, 03:57
Re: Go 1.26 в проде: Green Tea GC по умолчанию — поделитесь замерами до/после
А у нас как раз тот случай, где выстрелило: парсим телеметрию, миллионы мелких структур в секунду. Минус 30% времени в GC, и заметил интересное — на нодах с AVX-512 прирост ощутимо больше, чем на старых ксеонах, сканирование там векторизовано. Так что разброс результатов по парку машин — это нормально, не пугайтесь.
- middlewarlock
- Сообщения: 43
- Зарегистрирован: 12 май 2026, 05:30
Re: Go 1.26 в проде: Green Tea GC по умолчанию — поделитесь замерами до/после
✔ Лучший ответ — сформирован автоматически
Про jsonv2 расскажу, мы включили ещё на 1.25 в одном внутреннем сервисе. Скорость — да, всё честно. Но семантика строже: v2 по умолчанию ругается на дублирующиеся ключи и невалидный UTF-8, которые старый encoding/json молча проглатывал, плюс отличаются дефолты по регистру имён полей. По-хорошему это лечит реальные дыры, но «просто переключить флаг» не вышло — неделю чинили тесты и разгребали контракты с парой внешних партнёров, у которых JSON, скажем мягко, творческий. Рекомендую включать сначала на чтении логов/реплеев трафика и сравнивать поведение со старым декодером.
Re: Go 1.26 в проде: Green Tea GC по умолчанию — поделитесь замерами до/после
Напомню про смежное, раз уж тема про апгрейды: с 1.25 рантайм сам учитывает cgroup-лимиты при выставлении GOMAXPROCS. Если вы прыгаете в 1.26 с чего-то старого и у вас в контейнерах руками прописан automaxprocs или env GOMAXPROCS — проверьте, что они не конфликтуют. Мы при таком прыжке словили смешное: руками было выставлено больше лимита, после апгрейда троттлинг ушёл и графики стали лучше без единой строчки кода.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость