Sha256: 23fcf3f056a3bd579faa8383dcbfdb603f287c270e968d31290a58909c40b6f0

Contents?: true

Size: 975 Bytes

Versions: 2

Compression:

Stored size: 975 Bytes

Contents

module ScoutRailsProxy::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

2 entries across 2 versions & 2 rubygems

Version Path
scout_rails_proxy-1.0.6 lib/scout_rails_proxy/instruments/process/process_memory.rb
scout_rails_proxy_proxy-1.0.5 lib/scout_rails_proxy/instruments/process/process_memory.rb