class Rubella::Weighting::PerOverallLoad

The Rubella::Weighting::PerOverallValue object summarizes the load of all cores in a time and computes how much load is one percent. Then it uses this as factor to weight the summarized load of every bucket. So your representation will show you the higher load cores more intensive, then the cores with lower load, depending on the current load.

Public Instance Methods

parse(input) click to toggle source

Creates a output readable list. This list is Array within a subarrays, which contain the buckets for every time value unit.

@param input Rubella::Input An input object @return Rubella::Storage

# File lib/rubella/weighting/per_overall_load.rb, line 20
def parse input
  # prepare data
  data_list = Array.new()

  input.each do |cores|

    # Add all loads to compute how much % is one % load
    load_sum = 0
    cores.each { |core| load_sum = load_sum + core }
    percent_load = 100.0/load_sum

    # every 10 load percent one heatpoint
    i = 0
    data_list << Array.new(buckets) do
      # Select all current cores
      selected_cores = cores.select do |core|
        core >= i and
          ((core < (i+@steps)) or (core <= (i+@steps) and i+@steps == 100))
      end
      i = i + @steps

      # add the load of the resulting cores and multiply it with the overall value
      load_sum = 0
      selected_cores.each { |core| load_sum = load_sum + core }
      (load_sum.to_f*percent_load)/100
    end
  end

  Rubella::Storage.new data_list
end