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 <[email protected]>
+
+- 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