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


Reply via email to