Сделал open-source инструмент для визуализации сборщика мусо
Недавно закончил разрабатывать свой open-source проект на Go - gcscope.
Это терминальный инструмент, который показывает, как во время работы программы ведёт себя сборщик мусора в Go.
Сборщик мусора - это часть рантайма, которая автоматически очищает память от объектов, которые программе больше не нужны. Обычно он работает “где-то внутри”, и разработчик о нём почти не думает. Но если сервис начинает тормозить, растёт потребление памяти или появляются странные задержки, становится интересно: что вообще происходит с памятью? Как часто запускается очистка? Есть ли паузы? Меняется ли поведение после правок в коде или настройках? Мне захотелось сделать это более наглядным.
Существуют pprof, Prometheus, Grafana и другие инструменты для анализа производительности. Но я не нашёл простого способа именно посмотреть на работу сборщика мусора как на живую картинку в терминале. Так появился gcscope. Он показывает поведение GC в реальном времени: как часто он срабатывает, как меняется память, где появляются паузы и что происходило во время последних циклов очистки.
Проект можно попробовать без подготовки своего приложения - внутри есть демо-нагрузка. Ссылка на GitHub: https://github.com/timur-developer/gcscope
Я написал статью на Хабр, где подробнее рассказал, зачем сделал инструмент и как он устроен. Если вам интересно, можете ознакомиться: ссылка
Буду рад, если Go или backend-разработчики посмотрят проект и скажут, кажется ли такой инструмент полезным и чего в нём не хватает.
Заранее спасибо за любой фидбек!
· 07.06
Нужная вещь. В Node.js та же боль: V8 GC влияет на задержки но наблюдать за ним в реальном времени неудобно. Когда у нас был memory leak на 4GB heap нашли его только через v8-profiler который не показывает динамику. gcscope закрывает именно этот пробел. Попробую.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён