Sha256: f68c884214013e6e0a83160646ca513c6c18c8e39e7c284026fe17b05ed139fd

Contents?: true

Size: 970 Bytes

Versions: 43

Compression:

Stored size: 970 Bytes

Contents

module ScoutRails::Instruments
  module Process
    class ProcessMemory
      def run
        res=nil
        platform = RUBY_PLATFORM.downcase

        if platform =~ /linux/
          res = get_mem_from_procfile
        elsif platform =~ /darwin9/ # 10.5
          res = get_mem_from_shell("ps -o rsz")
        elsif platform =~ /darwin1[01]/ # 10.6 & 10.7
          res = get_mem_from_shell("ps -o rss")
        end
        return res
      end

      private

      def get_mem_from_procfile
        res = nil
        proc_status = File.open(procfile, "r") { |f| f.read_nonblock(4096).strip }
        if proc_status =~ /RSS:\s*(\d+) kB/i
          res= $1.to_f / 1024.0
        end
        res
      end

      def procfile
        "/proc/#{$$}/status"
      end

      # memory in MB the current process is using
      def get_mem_from_shell(command)
        res = `#{command} #{$$}`.split("\n")[1].to_f / 1024.0 #rescue nil
        res
      end
    end
  end
end

Version data entries

43 entries across 43 versions & 2 rubygems

Version Path
scout_rails-1.1.5.pre6 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.1.5.pre5 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.1.5.pre4 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.1.5.pre3 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.1.5.pre lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.1.4.pre lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.1.3 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.1.2 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.1.1 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.1.1.pre lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.1.0 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.0.9 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.0.8 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.0.8.pre.3 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.0.7 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.0.6 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.0.5 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.0.5.pre lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.0.4 lib/scout_rails/instruments/process/process_memory.rb
scout_rails-1.0.4.pre.2 lib/scout_rails/instruments/process/process_memory.rb