📄 Упражнения для хорошей памяти: три способа оптимизировать работу с памятью на Go с помощью memory pools
Когда программа испытывает пиковую нагрузку, она потребляет много памяти. В языке Go это «замечает» Garbage Collector, останавливает программу и освобождает память. Сервис делает свою работу, но она влияет на эффективность программы, поэтому часто возникает необходимость снизить нагрузку на GC.
Go-разработчик в YADRO Александр Иванов столкнулся с проблемой: когда по сети приходило много данных, GC фиксировал пиковое потребление памяти, останавливал программу, освобождал память и продолжал выполнять программу.
Это влияло на эффективность работы, поэтому инженер решил уменьшить количество потребляемой памяти в моменты пиковой нагрузки и протестировал несколько способов, как это сделать. В этом материале он собрал результаты поисков и рассказал, для каких проектов подойдёт та или иная реализация memory pool. Вы узнаете:
▪ О принципах, по которым язык Go работает с памятью;
▪ Как завести Channel Pool, поместить память в sync.Pool или создать memory arena;
▪ Какие бенчмарки получились у каждого решения по итогам тестов;
▪ Что стоит учесть в разработке memory pool для вашего проекта и как выбрать подходящую реализацию;
▪ Какая реализация в итоге помогла решить проблему с пиковыми нагрузками.
В конце статьи найдёте ссылку на репозиторий с кодом, где автор сравнивает разные memory pools.
Читать статью➡
#программы #go
Когда программа испытывает пиковую нагрузку, она потребляет много памяти. В языке Go это «замечает» Garbage Collector, останавливает программу и освобождает память. Сервис делает свою работу, но она влияет на эффективность программы, поэтому часто возникает необходимость снизить нагрузку на GC.
Go-разработчик в YADRO Александр Иванов столкнулся с проблемой: когда по сети приходило много данных, GC фиксировал пиковое потребление памяти, останавливал программу, освобождал память и продолжал выполнять программу.
Это влияло на эффективность работы, поэтому инженер решил уменьшить количество потребляемой памяти в моменты пиковой нагрузки и протестировал несколько способов, как это сделать. В этом материале он собрал результаты поисков и рассказал, для каких проектов подойдёт та или иная реализация memory pool. Вы узнаете:
В конце статьи найдёте ссылку на репозиторий с кодом, где автор сравнивает разные memory pools.
Читать статью
#программы #go