Easier memory profiling of code and endpoints
Problem to solve
Today we have the ability to easily profile method calls and execution time. We should try to allow the use of similar tools for profiling memory allocation.
Check how this works today:
- https://docs.gitlab.com/ee/administration/monitoring/performance/request_profiling.html
- https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/profiling.md
Intended users
Proposal
Extend the https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/profiling.md and https://docs.gitlab.com/ee/administration/monitoring/performance/request_profiling.html to support profiling memory consumption, similarly to what is already documented.
We could extend the support for X-Profile-Token: <token>
to have an additional header that defines
type of profile we are looking for, like:
X-Profile-Mode: execution
-
X-Profile-Mode: memory
.
What does success look like, and how can we measure that?
Being able to execute the memory profile of requests against GitLab.com and enable each of employees to do the same.
Future extensions
Extend Performance Bar to provide information about memory allocation and sources of allocations.
Allow execution and memory profiling of Sidekiq jobs.
Links / references
- https://docs.gitlab.com/ee/administration/monitoring/performance/request_profiling.html
- https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/profiling.md
- https://docs.gitlab.com/ee/administration/monitoring/performance/performance_bar.html
- https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/gitlab/profiler.rb