Class: SISFC::VM
Instance Attribute Summary collapse
-
#dc_id ⇒ Object
readonly
setup readable/accessible attributes.
-
#size ⇒ Object
readonly
setup readable/accessible attributes.
-
#vmid ⇒ Object
readonly
setup readable/accessible attributes.
Instance Method Summary collapse
-
#initialize(vmid, dc_id, size, service_time_distribution, opts = {}) ⇒ VM
constructor
A new instance of VM.
- #new_request(sim, r, time) ⇒ Object
- #request_finished(sim, time) ⇒ Object
Methods included from Logging
Constructor Details
#initialize(vmid, dc_id, size, service_time_distribution, opts = {}) ⇒ VM
Returns a new instance of VM.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/sisfc/vm.rb', line 22 def initialize(vmid, dc_id, size, service_time_distribution, opts={}) @vmid = vmid @dcid = dc_id @size = size @service_times_rv = ERV::RandomVariable.new(service_time_distribution[@size]) # initialize request queue and related tracking information @busy = false @request_queue = [] @trace = opts[:trace] ? true : false @notes = opts[:notes] # @request_queue_info = [] # @request_currently_servicing = nil end |
Instance Attribute Details
#dc_id ⇒ Object (readonly)
setup readable/accessible attributes
20 21 22 |
# File 'lib/sisfc/vm.rb', line 20 def dc_id @dc_id end |
#size ⇒ Object (readonly)
setup readable/accessible attributes
20 21 22 |
# File 'lib/sisfc/vm.rb', line 20 def size @size end |
#vmid ⇒ Object (readonly)
setup readable/accessible attributes
20 21 22 |
# File 'lib/sisfc/vm.rb', line 20 def vmid @vmid end |
Instance Method Details
#new_request(sim, r, time) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/sisfc/vm.rb', line 39 def new_request(sim, r, time) # put request w/ metadata at the end of the queue @request_queue << RequestInfo.new(r, @service_times_rv.next, time) if @trace @request_queue.each_cons(2) do |x,y| if y[2] < x[2] raise "Inconsistent ordering in request_queue!!!!" end end end # update queue size tracking information # @request_queue_info << { size: @request_queue.size, time: time } if @trace and @request_queue.size % 100 == 0 logger.info "VM #{@vmid} with #{@notes} has #{@request_queue.size} requests in queue at time #{time} and is " + (@busy ? "busy" : "not busy") end try_servicing_new_request(sim, time) unless @busy end |
#request_finished(sim, time) ⇒ Object
61 62 63 64 |
# File 'lib/sisfc/vm.rb', line 61 def request_finished(sim, time) @busy = false try_servicing_new_request(sim, time) end |