Class: Beaker::DSL::BeakerBenchmark::Helpers::PerformanceResult
- Inherits:
-
Object
- Object
- Beaker::DSL::BeakerBenchmark::Helpers::PerformanceResult
- Defined in:
- lib/beaker-benchmark/helpers.rb
Overview
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
Instance Attribute Summary collapse
-
#action_name ⇒ Object
Returns the value of attribute action_name.
-
#avg_cpu ⇒ Object
Returns the value of attribute avg_cpu.
-
#avg_disk_read ⇒ Object
Returns the value of attribute avg_disk_read.
-
#avg_disk_write ⇒ Object
Returns the value of attribute avg_disk_write.
-
#avg_mem ⇒ Object
Returns the value of attribute avg_mem.
-
#duration ⇒ Object
Returns the value of attribute duration.
-
#hostname ⇒ Object
Returns the value of attribute hostname.
-
#processes ⇒ Object
Returns the value of attribute processes.
Instance Method Summary collapse
-
#initialize(args) ⇒ PerformanceResult
constructor
A new instance of PerformanceResult.
- #log_csv(file_path = nil) ⇒ Object
- #log_summary ⇒ Object
Constructor Details
#initialize(args) ⇒ PerformanceResult
Returns a new instance of PerformanceResult.
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 |
# File 'lib/beaker-benchmark/helpers.rb', line 174 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 |
Instance Attribute Details
#action_name ⇒ Object
Returns the value of attribute action_name.
173 174 175 |
# File 'lib/beaker-benchmark/helpers.rb', line 173 def action_name @action_name end |
#avg_cpu ⇒ Object
Returns the value of attribute avg_cpu.
173 174 175 |
# File 'lib/beaker-benchmark/helpers.rb', line 173 def avg_cpu @avg_cpu end |
#avg_disk_read ⇒ Object
Returns the value of attribute avg_disk_read.
173 174 175 |
# File 'lib/beaker-benchmark/helpers.rb', line 173 def avg_disk_read @avg_disk_read end |
#avg_disk_write ⇒ Object
Returns the value of attribute avg_disk_write.
173 174 175 |
# File 'lib/beaker-benchmark/helpers.rb', line 173 def avg_disk_write @avg_disk_write end |
#avg_mem ⇒ Object
Returns the value of attribute avg_mem.
173 174 175 |
# File 'lib/beaker-benchmark/helpers.rb', line 173 def avg_mem @avg_mem end |
#duration ⇒ Object
Returns the value of attribute duration.
173 174 175 |
# File 'lib/beaker-benchmark/helpers.rb', line 173 def duration @duration end |
#hostname ⇒ Object
Returns the value of attribute hostname.
173 174 175 |
# File 'lib/beaker-benchmark/helpers.rb', line 173 def hostname @hostname end |
#processes ⇒ Object
Returns the value of attribute processes.
173 174 175 |
# File 'lib/beaker-benchmark/helpers.rb', line 173 def processes @processes end |
Instance Method Details
#log_csv(file_path = nil) ⇒ Object
205 206 207 208 209 210 211 212 213 214 215 216 217 |
# File 'lib/beaker-benchmark/helpers.rb', line 205 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 ⇒ Object
196 197 198 199 200 201 202 203 |
# File 'lib/beaker-benchmark/helpers.rb', line 196 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 |