c3b40ae131
Two static memory benchmarks will be included in our CI pipeline. It will load gems from the Gemfile and check the amount of RAM consumed as well as the number of objects allocated and retained. Aggregated values will be included as 'metrics' into MRs while full reports will be downloadable as job artifacts.
20 lines
690 B
Ruby
Executable file
20 lines
690 B
Ruby
Executable file
#!/usr/bin/env ruby
|
|
|
|
require_relative '../lib/gitlab/popen'
|
|
|
|
full_report_filename, metrics_filename = ARGV
|
|
abort 'usage: memory-static <full_report_filename> <metrics_filename>' unless full_report_filename && metrics_filename
|
|
|
|
full_report, status = Gitlab::Popen.popen(%w(bundle exec derailed bundle:mem))
|
|
abort 'failed to execute the benchmark' unless status.zero?
|
|
|
|
File.open(full_report_filename, 'w') do |f|
|
|
f.write(full_report)
|
|
end
|
|
|
|
stats = /TOP: (?<total_mibs_str>.*) MiB/.match(full_report.lines.first)
|
|
abort 'failed to process the benchmark output' unless stats
|
|
|
|
File.open(metrics_filename, 'a') do |f|
|
|
f.puts "memory_static_total_mb #{stats[:total_mibs_str].to_f.round(1)}"
|
|
end
|