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