Hello community, here is the log from the commit of package rubygem-get_process_mem for openSUSE:Factory checked in at 2019-07-22 12:20:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-get_process_mem (Old) and /work/SRC/openSUSE:Factory/.rubygem-get_process_mem.new.4126 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-get_process_mem" Mon Jul 22 12:20:51 2019 rev:5 rq:717294 version:0.2.4 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-get_process_mem/rubygem-get_process_mem.changes 2018-11-26 10:34:05.820761509 +0100 +++ /work/SRC/openSUSE:Factory/.rubygem-get_process_mem.new.4126/rubygem-get_process_mem.changes 2019-07-22 12:20:53.163656564 +0200 @@ -1,0 +2,10 @@ +Fri Jul 19 09:09:50 UTC 2019 - Stephan Kulow <co...@suse.com> + +- updated to version 0.2.4 + see installed CHANGELOG.md + + ## 0.2.4 + + - Use FFI to speed up memory lookup on Mac (darwin) by roughly 12x (#32) + +------------------------------------------------------------------- Old: ---- get_process_mem-0.2.3.gem New: ---- get_process_mem-0.2.4.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-get_process_mem.spec ++++++ --- /var/tmp/diff_new_pack.CYmbM2/_old 2019-07-22 12:20:53.775656404 +0200 +++ /var/tmp/diff_new_pack.CYmbM2/_new 2019-07-22 12:20:53.775656404 +0200 @@ -1,7 +1,7 @@ # # spec file for package rubygem-get_process_mem # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,7 +24,7 @@ # Name: rubygem-get_process_mem -Version: 0.2.3 +Version: 0.2.4 Release: 0 %define mod_name get_process_mem %define mod_full_name %{mod_name}-%{version} ++++++ get_process_mem-0.2.3.gem -> get_process_mem-0.2.4.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.travis.yml new/.travis.yml --- old/.travis.yml 2018-10-18 23:13:40.000000000 +0200 +++ new/.travis.yml 2019-07-08 18:44:54.000000000 +0200 @@ -1,4 +1,7 @@ language: ruby +os: + - linux + - osx before_install: - gem install bundler -v 1.12.5 @@ -14,4 +17,4 @@ allow_failures: - rvm: ruby-head - rvm: rbx-19mode - - rvm: jruby-19mode \ No newline at end of file + - rvm: jruby-19mode diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md --- old/CHANGELOG.md 2018-10-18 23:13:40.000000000 +0200 +++ new/CHANGELOG.md 2019-07-08 18:44:54.000000000 +0200 @@ -1,6 +1,10 @@ +## 0.2.4 + +- Use FFI to speed up memory lookup on Mac (darwin) by roughly 12x (#32) + ## 0.2.3 -- Silence BigDecimal deprecation warning under Ruby 2.5 (#26) +- Silence BigDecimal deprecation warning under Ruby 2.5 (#26) ## 0.2.2 @@ -25,4 +29,4 @@ ## 0.0.1 -- Initial \ No newline at end of file +- Initial Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/get_process_mem.gemspec new/get_process_mem.gemspec --- old/get_process_mem.gemspec 2018-10-18 23:13:40.000000000 +0200 +++ new/get_process_mem.gemspec 2019-07-08 18:44:54.000000000 +0200 @@ -18,6 +18,8 @@ gem.test_files = gem.files.grep(%r{^(test|spec|features)/}) gem.require_paths = ["lib"] + gem.add_dependency "ffi", "~> 1.0" + gem.add_development_dependency "sys-proctable", "~> 1.0" gem.add_development_dependency "rake", "~> 10.1" gem.add_development_dependency "test-unit", "~> 3.1.0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/get_process_mem/darwin.rb new/lib/get_process_mem/darwin.rb --- old/lib/get_process_mem/darwin.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/get_process_mem/darwin.rb 2019-07-08 18:44:54.000000000 +0200 @@ -0,0 +1,53 @@ +require 'ffi' + +class GetProcessMem + class Darwin + extend FFI::Library + ffi_lib 'c' + attach_function :mach_task_self, [], :__darwin_mach_port_t + attach_function :task_info, + [ + :__darwin_mach_port_t, + :int, # return selector + :pointer, #pointer to task info + :pointer, #pointer to int (size of structure / bytes filled out) + ], + :int + + class IntPtr < FFI::Struct + layout :value, :int + end + + class TaskInfo < FFI::Struct + layout :suspend_count, :int32, + :virtual_size, :uint64, + :resident_size, :uint64, + :user_time, :uint64, + :system_time, :uint64, + :policy, :int32 + end + + MACH_TASK_BASIC_INFO = 20 + MACH_TASK_BASIC_INFO_COUNT = TaskInfo.size / FFI.type_size(:uint) + + class << self + def resident_size + mach_task_info[:resident_size] + end + + private + + def mach_task_info + data = TaskInfo.new + out_count = IntPtr.new + out_count[:value] = MACH_TASK_BASIC_INFO_COUNT + result = task_info(mach_task_self, MACH_TASK_BASIC_INFO, data, out_count) + if result == 0 + data + else + raise "task_info returned #{result}" + end + end + end + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/get_process_mem/version.rb new/lib/get_process_mem/version.rb --- old/lib/get_process_mem/version.rb 2018-10-18 23:13:40.000000000 +0200 +++ new/lib/get_process_mem/version.rb 2019-07-08 18:44:54.000000000 +0200 @@ -1,3 +1,3 @@ class GetProcessMem - VERSION = "0.2.3" + VERSION = "0.2.4" end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/get_process_mem.rb new/lib/get_process_mem.rb --- old/lib/get_process_mem.rb 2018-10-18 23:13:40.000000000 +0200 +++ new/lib/get_process_mem.rb 2019-07-08 18:44:54.000000000 +0200 @@ -3,14 +3,8 @@ # Cribbed from Unicorn Worker Killer, thanks! class GetProcessMem - if Kernel.respond_to?(:BigDecimal) - private_class_method def self.number_to_bigdecimal(value) - BigDecimal(value) - end - else - private_class_method def self.number_to_bigdecimal(value) - BigDecimal.new(value) - end + private_class_method def self.number_to_bigdecimal(value) + BigDecimal(value) end private def number_to_bigdecimal(value) @@ -37,6 +31,20 @@ include Sys end + RUNS_ON_DARWIN = Gem.platforms.detect do |p| + p.is_a?(Gem::Platform) && p.os == 'darwin' + end + + if RUNS_ON_DARWIN + begin + require 'get_process_mem/darwin' + rescue LoadError => e + message = "Please add `ffi` to your Gemfile for darwin (macos) machines\n" + message << e.message + raise e, message + end + end + def initialize(pid = Process.pid) @status_file = Pathname.new "/proc/#{pid}/status" @process_file = Pathname.new "/proc/#{pid}/smaps" @@ -50,6 +58,7 @@ def bytes memory = linux_status_memory if linux? + memory ||= darwin_memory if RUNS_ON_DARWIN memory ||= ps_memory end @@ -108,4 +117,8 @@ KB_TO_BYTE * number_to_bigdecimal(mem == "" ? 0 : mem) end end + + def darwin_memory + Darwin.resident_size + end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2018-10-18 23:13:40.000000000 +0200 +++ new/metadata 2019-07-08 18:44:54.000000000 +0200 @@ -1,16 +1,30 @@ --- !ruby/object:Gem::Specification name: get_process_mem version: !ruby/object:Gem::Version - version: 0.2.3 + version: 0.2.4 platform: ruby authors: - Richard Schneeman autorequire: bindir: bin cert_chain: [] -date: 2018-10-18 00:00:00.000000000 Z +date: 2019-07-08 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency + name: ffi + requirement: !ruby/object:Gem::Requirement + requirements: + - - "~>" + - !ruby/object:Gem::Version + version: '1.0' + type: :runtime + prerelease: false + version_requirements: !ruby/object:Gem::Requirement + requirements: + - - "~>" + - !ruby/object:Gem::Version + version: '1.0' +- !ruby/object:Gem::Dependency name: sys-proctable requirement: !ruby/object:Gem::Requirement requirements: @@ -68,6 +82,7 @@ - appveyor.yml - get_process_mem.gemspec - lib/get_process_mem.rb +- lib/get_process_mem/darwin.rb - lib/get_process_mem/version.rb - test/fixtures/heroku-bash-smap - test/fixtures/heroku-bash-status @@ -92,8 +107,7 @@ - !ruby/object:Gem::Version version: '0' requirements: [] -rubyforge_project: -rubygems_version: 2.7.6 +rubygems_version: 3.0.3 signing_key: specification_version: 4 summary: Use GetProcessMem to find out the amount of RAM used by any process diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/get_process_mem_test.rb new/test/get_process_mem_test.rb --- old/test/get_process_mem_test.rb 2018-10-18 23:13:40.000000000 +0200 +++ new/test/get_process_mem_test.rb 2019-07-08 18:44:54.000000000 +0200 @@ -16,7 +16,7 @@ def test_linux_smap delta = 1 bytes = @mem.linux_memory(fixture_path("heroku-bash-smap")) - assert_in_delta BigDecimal.new("2122240.0"), bytes, delta + assert_in_delta BigDecimal("2122240.0"), bytes, delta end def test_linux_status @@ -26,7 +26,7 @@ def test_conversions bytes = 0 - delta = BigDecimal.new("0.0000001") + delta = BigDecimal("0.0000001") assert_in_delta 0.0, @mem.kb(bytes), delta assert_in_delta 0.0, @mem.mb(bytes), delta assert_in_delta 0.0, @mem.gb(bytes), delta