Hello community, here is the log from the commit of package rubygem-get_process_mem for openSUSE:Factory checked in at 2020-10-05 19:31:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-get_process_mem (Old) and /work/SRC/openSUSE:Factory/.rubygem-get_process_mem.new.4249 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-get_process_mem" Mon Oct 5 19:31:21 2020 rev:7 rq:838036 version:0.2.7 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-get_process_mem/rubygem-get_process_mem.changes 2020-03-07 21:38:09.328268783 +0100 +++ /work/SRC/openSUSE:Factory/.rubygem-get_process_mem.new.4249/rubygem-get_process_mem.changes 2020-10-05 19:31:24.812768539 +0200 @@ -1,0 +2,7 @@ +Fri Sep 25 14:00:53 UTC 2020 - Stephan Kulow <co...@suse.com> + +updated to version 0.2.7 + see installed CHANGELOG.md + + +------------------------------------------------------------------- Old: ---- get_process_mem-0.2.5.gem New: ---- get_process_mem-0.2.7.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-get_process_mem.spec ++++++ --- /var/tmp/diff_new_pack.aAqsIy/_old 2020-10-05 19:31:26.356775050 +0200 +++ /var/tmp/diff_new_pack.aAqsIy/_new 2020-10-05 19:31:26.360775067 +0200 @@ -24,7 +24,7 @@ # Name: rubygem-get_process_mem -Version: 0.2.5 +Version: 0.2.7 Release: 0 %define mod_name get_process_mem %define mod_full_name %{mod_name}-%{version} ++++++ get_process_mem-0.2.5.gem -> get_process_mem-0.2.7.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.travis.yml new/.travis.yml --- old/.travis.yml 2019-11-05 18:03:01.000000000 +0100 +++ new/.travis.yml 2020-08-28 00:17:20.000000000 +0200 @@ -15,6 +15,8 @@ matrix: allow_failures: + - rvm: 2.2 + if: os = osx - rvm: ruby-head - rvm: jruby-head - rvm: truffleruby diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md --- old/CHANGELOG.md 2019-11-05 18:03:01.000000000 +0100 +++ new/CHANGELOG.md 2020-08-28 00:17:20.000000000 +0200 @@ -1,4 +1,12 @@ -## Master - unreleased +## HEAD (unreleased) + +## 0.2.7 + +- Native (faster) support for returning memory from different PIDs on mac (https://github.com/schneems/get_process_mem/pull/42) + +## 0.2.6 + +- Support returning memory from different PIDs on mac (https://github.com/schneems/get_process_mem/pull/41) ## 0.2.5 Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ 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 2019-11-05 18:03:01.000000000 +0100 +++ new/lib/get_process_mem/darwin.rb 2020-08-28 00:17:20.000000000 +0200 @@ -3,49 +3,59 @@ 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 + ffi_lib 'proc' - 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 + layout :pti_virtual_size, :uint64, + :pti_resident_size, :uint64, + :pti_total_user, :uint64, + :pti_total_system, :uint64, + :pti_threads_user, :uint64, + :pti_threads_system, :uint64, + :pti_policy, :int32, + :pti_faults, :int32, + :pti_pageins, :int32, + :pti_cow_faults, :int32, + :pti_messages_sent, :int32, + :pti_messages_received, :int32, + :pti_syscalls_mach, :int32, + :pti_syscalls_unix, :int32, + :pti_csw, :int32, + :pti_threadnum, :int32, + :pti_numrunning, :int32, + :pti_priority, :int32 + end - MACH_TASK_BASIC_INFO = 20 - MACH_TASK_BASIC_INFO_COUNT = TaskInfo.size / FFI.type_size(:uint) + + attach_function :proc_pidinfo, + [ + :int, #pid + :int, # flavour + :uint64, #arg, not needed for this selector + TaskInfo.by_ref, #output buffer + :int, #size of buffer + ], + :int + + + PROC_PIDTASKINFO = 4 #from sys/proc_info.h class << self - def resident_size - mach_task_info[:resident_size] + def resident_size(pid) + get_proc_pidinfo(pid)[:pti_resident_size] end private - def mach_task_info + def get_proc_pidinfo(pid) 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 + result = proc_pidinfo(pid, PROC_PIDTASKINFO, 0, data, TaskInfo.size) + if result == TaskInfo.size data else - raise "task_info returned #{result}" + raise SystemCallError.new("proc_pidinfo returned #{result}", FFI.errno); 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 2019-11-05 18:03:01.000000000 +0100 +++ new/lib/get_process_mem/version.rb 2020-08-28 00:17:20.000000000 +0200 @@ -1,3 +1,3 @@ class GetProcessMem - VERSION = "0.2.5" + VERSION = "0.2.7" 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 2019-11-05 18:03:01.000000000 +0100 +++ new/lib/get_process_mem.rb 2020-08-28 00:17:20.000000000 +0200 @@ -119,6 +119,8 @@ end def darwin_memory - Darwin.resident_size + Darwin.resident_size(pid) + rescue Errno::EPERM + nil end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2019-11-05 18:03:01.000000000 +0100 +++ new/metadata 2020-08-28 00:17:20.000000000 +0200 @@ -1,14 +1,14 @@ --- !ruby/object:Gem::Specification name: get_process_mem version: !ruby/object:Gem::Version - version: 0.2.5 + version: 0.2.7 platform: ruby authors: - Richard Schneeman -autorequire: +autorequire: bindir: bin cert_chain: [] -date: 2019-11-05 00:00:00.000000000 Z +date: 2020-08-27 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: ffi @@ -93,7 +93,7 @@ licenses: - MIT metadata: {} -post_install_message: +post_install_message: rdoc_options: [] require_paths: - lib @@ -108,8 +108,8 @@ - !ruby/object:Gem::Version version: '0' requirements: [] -rubygems_version: 3.0.3 -signing_key: +rubygems_version: 3.1.2 +signing_key: specification_version: 4 summary: Use GetProcessMem to find out the amount of RAM used by any process test_files: 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 2019-11-05 18:03:01.000000000 +0100 +++ new/test/get_process_mem_test.rb 2020-08-28 00:17:20.000000000 +0200 @@ -1,11 +1,20 @@ require 'test_helper' class GetProcessMemTest < Test::Unit::TestCase - def setup @mem = GetProcessMem.new end + def test_different_pid_returns_different_memory + pid = Process.spawn("tail -f Gemfile") + + other_mem = GetProcessMem.new(pid) + assert @mem.kb > other_mem.kb + ensure + Process.kill('TERM', pid) if pid + Process.wait(pid) if pid + end + def test_seems_to_work assert @mem.kb > 0 assert @mem.mb > 0