X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/638d136057f4d9ed19f132075079da396217d6fd..d455c8373cf39f4310d2b0e13e7a9d02aca0b2ab:/apps/workbench/app/controllers/keep_disks_controller.rb diff --git a/apps/workbench/app/controllers/keep_disks_controller.rb b/apps/workbench/app/controllers/keep_disks_controller.rb index b7bc7c06dc..f57455b37f 100644 --- a/apps/workbench/app/controllers/keep_disks_controller.rb +++ b/apps/workbench/app/controllers/keep_disks_controller.rb @@ -4,11 +4,31 @@ class KeepDisksController < ApplicationController @object = KeepDisk.new defaults.merge(params[:keep_disk] || {}) super end + def index + # Retrieve cache age histogram info from logs. + + # In the logs we expect to find it in an ordered list with entries + # of the form (mtime, disk proportion free). + + # An entry of the form (1388747781, 0.52) means that if we deleted + # the oldest non-presisted blocks until we had 52% of the disk + # free, then all blocks with an mtime greater than 1388747781 + # would be preserved. + + # The chart we want to produce, will tell us how much of the disk + # will be free if we use a cache age of x days. Therefore we will + # produce output specifying the age, cache and persisted. age is + # specified in milliseconds. cache is the size of the cache if we + # delete all blocks older than age. persistent is the size of the + # persisted blocks. It is constant regardless of age, but it lets + # us show a stacked graph. + + # Finally each entry in cache_age_histogram is a dictionary, + # because that's what our charting package wats. - # Retrieve cache age histogram info @cache_age_histogram = [] - @histogram_date = 0 + @histogram_pretty_date = nil histogram_log = Log. filter([[:event_type, '=', 'block-age-free-space-histogram']]). order(:created_at => :desc). @@ -18,14 +38,17 @@ class KeepDisksController < ApplicationController # specified limit(1) @cache_age_histogram = log_entry['properties'][:histogram] # Javascript wants dates in milliseconds. - @histogram_date = log_entry['event_at'].to_i * 1000 + histogram_date_ms = log_entry['event_at'].to_i * 1000 + @histogram_pretty_date = log_entry['event_at'].strftime('%b %-d, %Y') total_free_cache = @cache_age_histogram[-1][1] persisted_storage = 1 - total_free_cache - @cache_age_histogram.map! { |x| {:age => @histogram_date - x[0]*1000, + @cache_age_histogram.map! { |x| {:age => histogram_date_ms - x[0]*1000, :cache => total_free_cache - x[1], :persisted => persisted_storage} } end + + # Do the regular control work needed. super end end