class Beaker::DSL::BeakerBenchmark::Helpers::PerformanceResult
Example output:
Action: measure_perf_on_puppetserver_start_start_pe-puppetserver, Duration: 37.463595 Avg CPU: 72%, Avg MEM: 1634829, Avg DSK read: 0, Avg DSK Write: 45
Additional output if include_processes:
Process pid: 14067, command: '/opt/puppetlabs/server/apps/postgresql/bin/postgres -D /opt/puppetlabs/server/data/postgresql/9.6/data -c log_directory=/var/log/puppetlabs/postgresql' Avg CPU: '1', Avg MEM: 48888, Avg DSK Write: 20
Attributes
action_name[RW]
avg_cpu[RW]
avg_disk_read[RW]
avg_disk_write[RW]
avg_mem[RW]
duration[RW]
hostname[RW]
processes[RW]
Public Class Methods
new(args)
click to toggle source
# File lib/beaker-benchmark/helpers.rb, line 188 def initialize(args) @avg_cpu = args[:cpu].empty? ? 0 : args[:cpu].inject{ |sum, el| sum + el } / args[:cpu].size @avg_mem = args[:mem].empty? ? 0 : args[:mem].inject{ |sum, el| sum + el } / args[:mem].size @avg_disk_read = args[:disk_read].empty? ? 0 : args[:disk_read].inject{ |sum, el| sum + el } / args[:disk_read].size @avg_disk_write = args[:disk_write].empty? ? 0 : args[:disk_write].inject{ |sum, el| sum + el } / args[:disk_write].size @action_name = args[:action] @duration = args[:duration] @processes = args[:processes] @logger = args[:logger] @hostname = args[:hostname] || '' @processes.keys.each do |key| @processes[key][:avg_cpu] = @processes[key][:cpu_usage].inject{ |sum, el| sum + el } / @processes[key][:cpu_usage].size unless @processes[key][:cpu_usage].empty? @processes[key][:avg_mem] = @processes[key][:mem_usage].inject{ |sum, el| sum + el } / @processes[key][:mem_usage].size unless @processes[key][:mem_usage].empty? @processes[key][:avg_disk_read] = @processes[key][:disk_read].inject{ |sum, el| sum + el } / @processes[key][:disk_read].size unless @processes[key][:disk_read].empty? @processes[key][:avg_disk_write] = @processes[key][:disk_write].inject{ |sum, el| sum + el } / @processes[key][:disk_write].size unless @processes[key][:disk_write].empty? end if @processes # TODO: At this point, we need to push these results into bigquery or elasticsearch # so we can normalize results over time and report on increases in trends end
Public Instance Methods
log_csv(file_path=nil)
click to toggle source
# File lib/beaker-benchmark/helpers.rb, line 219 def log_csv file_path=nil file_path = file_path || "#{TMP_DIR}/#{@hostname}/atop_log_#{action_name.downcase.gsub(/[^a-z0-9]/i, '_')}.csv" FileUtils.mkdir_p "#{TMP_DIR}/#{@hostname}/" unless Dir.exist?("#{TMP_DIR}/#{@hostname}/") file = File.open file_path, 'w' file.write "Action,Duration,Avg CPU,Avg MEM,Avg DSK read,Avg DSK Write\n" file.write "#{@action_name},#{@duration},#{@avg_cpu},#{@avg_mem},#{@avg_disk_read},#{@avg_disk_write}\n\n" file.write "Process pid,command,Avg CPU,Avg MEM,Avg DSK read,Avg DSK Write\n" @processes.keys.each do |key| file.write "#{key},'#{@processes[key][:cmd]}',#{@processes[key][:avg_cpu]},#{@processes[key][:avg_mem]},#{@processes[key][:avg_disk_read]},#{@processes[key][:avg_disk_write]}\n" end file.close file.path end
log_summary()
click to toggle source
# File lib/beaker-benchmark/helpers.rb, line 210 def log_summary @logger.info "Action: #{@action_name}, Duration: #{@duration}" @logger.info "Avg CPU: #{@avg_cpu}%, Avg MEM: #{@avg_mem}, Avg DSK read: #{@avg_disk_read}, Avg DSK Write: #{@avg_disk_write}" @processes.keys.each do |key| @logger.info "Process pid: #{key}, command: '#{@processes[key][:cmd]}'" @logger.info " Avg CPU: '#{@processes[key][:avg_cpu]}%', Avg MEM: #{@processes[key][:avg_mem]}, Avg DSK read: #{@processes[key][:avg_disk_read]}, Avg DSK Write: #{@processes[key][:avg_disk_write]}" end end