get_process_mem-0.2.5/0000755000004100000410000000000013563007260014723 5ustar www-datawww-dataget_process_mem-0.2.5/.travis.yml0000644000004100000410000000037013563007260017034 0ustar www-datawww-datalanguage: ruby os: - linux - osx before_install: - gem install bundler -v 1.17.3 rvm: - 2.2 - 2.6 - ruby-head - jruby-head - truffleruby matrix: allow_failures: - rvm: ruby-head - rvm: jruby-head - rvm: truffleruby get_process_mem-0.2.5/test/0000755000004100000410000000000013563007260015702 5ustar www-datawww-dataget_process_mem-0.2.5/test/fixtures/0000755000004100000410000000000013563007260017553 5ustar www-datawww-dataget_process_mem-0.2.5/test/fixtures/heroku-bash-status0000644000004100000410000000143713563007260023234 0ustar www-datawww-dataName: bash State: S (sleeping) Tgid: 3 Ngid: 0 Pid: 3 PPid: 1 TracerPid: 0 Uid: 58790 58790 58790 58790 Gid: 58790 58790 58790 58790 FDSize: 256 Groups: VmPeak: 109120 kB VmSize: 109120 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 2032 kB VmRSS: 2032 kB VmData: 356 kB VmStk: 136 kB VmExe: 956 kB VmLib: 2288 kB VmPTE: 64 kB VmSwap: 0 kB Threads: 1 SigQ: 0/274188 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000010000 SigIgn: 0000000000380004 SigCgt: 000000004b817efb CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: 0000001ff598cffe Seccomp: 2 Cpus_allowed: f Cpus_allowed_list: 0-3 Mems_allowed: 00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 34 nonvoluntary_ctxt_switches: 35 get_process_mem-0.2.5/test/fixtures/heroku-bash-smap0000644000004100000410000007051413563007260022653 0ustar www-datawww-data00400000-004db000 r-xp 00000000 07:01 72877 /bin/bash Size: 876 kB Rss: 532 kB Pss: 532 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 532 kB Private_Dirty: 0 kB Referenced: 532 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd ex mr mw me dw 006da000-006db000 r--p 000da000 07:01 72877 /bin/bash Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me dw ac 006db000-006e4000 rw-p 000db000 07:01 72877 /bin/bash Size: 36 kB Rss: 36 kB Pss: 36 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 36 kB Referenced: 36 kB Anonymous: 36 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me dw ac 006e4000-006ea000 rw-p 00000000 00:00 0 Size: 24 kB Rss: 24 kB Pss: 24 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 24 kB Referenced: 24 kB Anonymous: 24 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 020c0000-0210e000 rw-p 00000000 00:00 0 [heap] Size: 312 kB Rss: 312 kB Pss: 312 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 312 kB Referenced: 312 kB Anonymous: 312 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7f28ff505000-7f28ff511000 r-xp 00000000 07:01 81120 /lib/libnss_files-2.11.1.so Size: 48 kB Rss: 16 kB Pss: 0 kB Shared_Clean: 16 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 16 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd ex mr mw me 7f28ff511000-7f28ff710000 ---p 0000c000 07:01 81120 /lib/libnss_files-2.11.1.so Size: 2044 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: mr mw me 7f28ff710000-7f28ff711000 r--p 0000b000 07:01 81120 /lib/libnss_files-2.11.1.so Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me ac 7f28ff711000-7f28ff712000 rw-p 0000c000 07:01 81120 /lib/libnss_files-2.11.1.so Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7f28ff712000-7f28ff71c000 r-xp 00000000 07:01 81122 /lib/libnss_nis-2.11.1.so Size: 40 kB Rss: 20 kB Pss: 0 kB Shared_Clean: 20 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 20 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd ex mr mw me 7f28ff71c000-7f28ff91b000 ---p 0000a000 07:01 81122 /lib/libnss_nis-2.11.1.so Size: 2044 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: mr mw me 7f28ff91b000-7f28ff91c000 r--p 00009000 07:01 81122 /lib/libnss_nis-2.11.1.so Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me ac 7f28ff91c000-7f28ff91d000 rw-p 0000a000 07:01 81122 /lib/libnss_nis-2.11.1.so Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7f28ff91d000-7f28ff934000 r-xp 00000000 07:01 81117 /lib/libnsl-2.11.1.so Size: 92 kB Rss: 24 kB Pss: 0 kB Shared_Clean: 24 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 24 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd ex mr mw me 7f28ff934000-7f28ffb33000 ---p 00017000 07:01 81117 /lib/libnsl-2.11.1.so Size: 2044 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: mr mw me 7f28ffb33000-7f28ffb34000 r--p 00016000 07:01 81117 /lib/libnsl-2.11.1.so Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me ac 7f28ffb34000-7f28ffb35000 rw-p 00017000 07:01 81117 /lib/libnsl-2.11.1.so Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7f28ffb35000-7f28ffb37000 rw-p 00000000 00:00 0 Size: 8 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7f28ffb37000-7f28ffb3f000 r-xp 00000000 07:01 81118 /lib/libnss_compat-2.11.1.so Size: 32 kB Rss: 24 kB Pss: 0 kB Shared_Clean: 24 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 24 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd ex mr mw me 7f28ffb3f000-7f28ffd3e000 ---p 00008000 07:01 81118 /lib/libnss_compat-2.11.1.so Size: 2044 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: mr mw me 7f28ffd3e000-7f28ffd3f000 r--p 00007000 07:01 81118 /lib/libnss_compat-2.11.1.so Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me ac 7f28ffd3f000-7f28ffd40000 rw-p 00008000 07:01 81118 /lib/libnss_compat-2.11.1.so Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7f28ffd40000-7f28ffebd000 r-xp 00000000 07:01 81088 /lib/libc-2.11.1.so Size: 1524 kB Rss: 540 kB Pss: 10 kB Shared_Clean: 532 kB Shared_Dirty: 0 kB Private_Clean: 8 kB Private_Dirty: 0 kB Referenced: 540 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd ex mr mw me 7f28ffebd000-7f29000bc000 ---p 0017d000 07:01 81088 /lib/libc-2.11.1.so Size: 2044 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: mr mw me 7f29000bc000-7f29000c0000 r--p 0017c000 07:01 81088 /lib/libc-2.11.1.so Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me ac 7f29000c0000-7f29000c1000 rw-p 00180000 07:01 81088 /lib/libc-2.11.1.so Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7f29000c1000-7f29000c6000 rw-p 00000000 00:00 0 Size: 20 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7f29000c6000-7f29000c8000 r-xp 00000000 07:01 81095 /lib/libdl-2.11.1.so Size: 8 kB Rss: 8 kB Pss: 0 kB Shared_Clean: 8 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 8 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd ex mr mw me 7f29000c8000-7f29002c8000 ---p 00002000 07:01 81095 /lib/libdl-2.11.1.so Size: 2048 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: mr mw me 7f29002c8000-7f29002c9000 r--p 00002000 07:01 81095 /lib/libdl-2.11.1.so Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me ac 7f29002c9000-7f29002ca000 rw-p 00003000 07:01 81095 /lib/libdl-2.11.1.so Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7f29002ca000-7f2900308000 r-xp 00000000 07:01 81113 /lib/libncurses.so.5.7 Size: 248 kB Rss: 136 kB Pss: 77 kB Shared_Clean: 68 kB Shared_Dirty: 0 kB Private_Clean: 68 kB Private_Dirty: 0 kB Referenced: 136 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd ex mr mw me 7f2900308000-7f2900508000 ---p 0003e000 07:01 81113 /lib/libncurses.so.5.7 Size: 2048 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: mr mw me 7f2900508000-7f290050c000 r--p 0003e000 07:01 81113 /lib/libncurses.so.5.7 Size: 16 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me ac 7f290050c000-7f290050d000 rw-p 00042000 07:01 81113 /lib/libncurses.so.5.7 Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7f290050d000-7f290052d000 r-xp 00000000 07:01 81079 /lib/ld-2.11.1.so Size: 128 kB Rss: 112 kB Pss: 0 kB Shared_Clean: 112 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 112 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd ex mr mw me dw 7f29005b9000-7f29005f8000 r--p 00000000 07:01 33875 /usr/lib/locale/en_US.utf8/LC_CTYPE Size: 252 kB Rss: 24 kB Pss: 8 kB Shared_Clean: 16 kB Shared_Dirty: 0 kB Private_Clean: 8 kB Private_Dirty: 0 kB Referenced: 24 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me 7f29005f8000-7f2900716000 r--p 00000000 07:01 33874 /usr/lib/locale/en_US.utf8/LC_COLLATE Size: 1144 kB Rss: 12 kB Pss: 1 kB Shared_Clean: 12 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 12 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me 7f2900716000-7f2900719000 rw-p 00000000 00:00 0 Size: 12 kB Rss: 12 kB Pss: 12 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 12 kB Referenced: 12 kB Anonymous: 12 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7f2900719000-7f290071a000 r--p 00000000 07:01 33880 /usr/lib/locale/en_US.utf8/LC_NUMERIC Size: 4 kB Rss: 4 kB Pss: 0 kB Shared_Clean: 4 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 4 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me 7f290071a000-7f290071b000 r--p 00000000 07:01 33883 /usr/lib/locale/en_US.utf8/LC_TIME Size: 4 kB Rss: 4 kB Pss: 0 kB Shared_Clean: 4 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 4 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me 7f290071b000-7f290071c000 r--p 00000000 07:01 33878 /usr/lib/locale/en_US.utf8/LC_MONETARY Size: 4 kB Rss: 4 kB Pss: 0 kB Shared_Clean: 4 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 4 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me 7f290071c000-7f290071d000 r--p 00000000 07:01 48708 /usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES Size: 4 kB Rss: 4 kB Pss: 0 kB Shared_Clean: 4 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 4 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me 7f290071d000-7f290071e000 r--p 00000000 07:01 33881 /usr/lib/locale/en_US.utf8/LC_PAPER Size: 4 kB Rss: 4 kB Pss: 0 kB Shared_Clean: 4 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 4 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me 7f290071e000-7f290071f000 r--p 00000000 07:01 33879 /usr/lib/locale/en_US.utf8/LC_NAME Size: 4 kB Rss: 4 kB Pss: 0 kB Shared_Clean: 4 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 4 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me 7f290071f000-7f2900720000 r--p 00000000 07:01 33873 /usr/lib/locale/en_US.utf8/LC_ADDRESS Size: 4 kB Rss: 4 kB Pss: 0 kB Shared_Clean: 4 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 4 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me 7f2900720000-7f2900721000 r--p 00000000 07:01 33882 /usr/lib/locale/en_US.utf8/LC_TELEPHONE Size: 4 kB Rss: 4 kB Pss: 0 kB Shared_Clean: 4 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 4 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me 7f2900721000-7f2900722000 r--p 00000000 07:01 33877 /usr/lib/locale/en_US.utf8/LC_MEASUREMENT Size: 4 kB Rss: 4 kB Pss: 0 kB Shared_Clean: 4 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 4 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me 7f2900722000-7f2900729000 r--s 00000000 07:01 97395 /usr/lib/gconv/gconv-modules.cache Size: 28 kB Rss: 20 kB Pss: 0 kB Shared_Clean: 20 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 20 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr me ms 7f2900729000-7f290072a000 r--p 00000000 07:01 33876 /usr/lib/locale/en_US.utf8/LC_IDENTIFICATION Size: 4 kB Rss: 4 kB Pss: 0 kB Shared_Clean: 4 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 4 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me 7f290072a000-7f290072c000 rw-p 00000000 00:00 0 Size: 8 kB Rss: 8 kB Pss: 8 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 8 kB Referenced: 8 kB Anonymous: 8 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7f290072c000-7f290072d000 r--p 0001f000 07:01 81079 /lib/ld-2.11.1.so Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd mr mw me dw ac 7f290072d000-7f290072e000 rw-p 00020000 07:01 81079 /lib/ld-2.11.1.so Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me dw ac 7f290072e000-7f290072f000 rw-p 00000000 00:00 0 Size: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me ac 7ffff83a4000-7ffff83c5000 rw-p 00000000 00:00 0 [stack] Size: 136 kB Rss: 28 kB Pss: 28 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 28 kB Referenced: 28 kB Anonymous: 28 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd wr mr mw me gd ac 7ffff83fe000-7ffff8400000 r-xp 00000000 00:00 0 [vdso] Size: 8 kB Rss: 4 kB Pss: 0 kB Shared_Clean: 4 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 4 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd ex mr mw me de ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] Size: 4 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB AnonHugePages: 0 kB Swap: 0 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Locked: 0 kB VmFlags: rd exget_process_mem-0.2.5/test/get_process_mem_test.rb0000644000004100000410000000265613563007260022452 0ustar www-datawww-datarequire 'test_helper' class GetProcessMemTest < Test::Unit::TestCase def setup @mem = GetProcessMem.new end def test_seems_to_work assert @mem.kb > 0 assert @mem.mb > 0 assert @mem.gb > 0 assert @mem.bytes > 0 end def test_linux_smap delta = 1 bytes = @mem.linux_memory(fixture_path("heroku-bash-smap")) assert_in_delta BigDecimal("2122240.0"), bytes, delta end def test_linux_status bytes = @mem.linux_status_memory(fixture_path("heroku-bash-status")) assert_equal bytes, 2080768 end def test_conversions bytes = 0 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 # kb bytes = 1024 assert_in_delta 1.0, @mem.kb(bytes), delta assert_in_delta 0.0009765625, @mem.mb(bytes), delta assert_in_delta 9.5367431640625e-07, @mem.gb(bytes), delta # mb bytes = 1_048_576 assert_in_delta 1024.0, @mem.kb(bytes), delta assert_in_delta 1.0, @mem.mb(bytes), delta assert_in_delta 0.0009765625, @mem.gb(bytes), delta # gb bytes = 1_073_741_824 assert_in_delta 1048576.0, @mem.kb(bytes), delta assert_in_delta 1024.0, @mem.mb(bytes), delta assert_in_delta 1.0, @mem.gb(bytes), delta end end get_process_mem-0.2.5/test/test_helper.rb0000644000004100000410000000031113563007260020540 0ustar www-datawww-dataBundler.require require 'get_process_mem' require 'test/unit' def fixture_path(name = nil) path = Pathname.new(File.expand_path("../fixtures", __FILE__)) return path.join(name) if name path endget_process_mem-0.2.5/README.md0000644000004100000410000000304513563007260016204 0ustar www-datawww-data# Get Process Memory [![Build Status](https://travis-ci.org/schneems/get_process_mem.svg?branch=master)](https://travis-ci.org/schneems/get_process_mem) [![Help Contribute to Open Source](https://www.codetriage.com/schneems/get_process_mem/badges/users.svg)](https://www.codetriage.com/schneems/get_process_mem) Do you need to get the memory usage of a process? Great because this library does that. ## Install In your `Gemfile` add ```ruby gem 'get_process_mem' ``` then run `$ bundle install`. If you're using Windows you'll also need to have the `sys-proctable` gem. ## Use It Get the current process memory usage: ```ruby mem = GetProcessMem.new puts mem.inspect # mem.bytes # => 25460736 mem.kb # => 24864.0 mem.mb # => 24.28125 mem.gb # => 0.023712158203125 ``` Note: All numeric values returned as a float except bytes which is an integer. Get memory usage of another process: ```ruby `echo 'nothing to see here' > tmplogf` pid = Process.spawn('tail -f tmplog') mem = GetProcessMem.new(pid) puts mem.inspect # => # Process.kill('TERM', pid) Process.wait(pid) mem.inspect # => "#" `rm tmplog` ``` On Linux, for memory size we return the RSS or the [Resident Set Size](http://en.wikipedia.org/wiki/Resident_set_size), basically how much memory the program takes up in RAM at the time, including all the shared memory. ## License MIT get_process_mem-0.2.5/CHANGELOG.md0000644000004100000410000000122713563007260016536 0ustar www-datawww-data## Master - unreleased ## 0.2.5 - Use new sys-proctable interface (https://github.com/schneems/get_process_mem/pull/36) ## 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) ## 0.2.2 - Fix support for Ruby 2.4 (#23) ## 0.2.1 - ??? ## 0.2.0 - Reverting back to RSS for linux until (#7) is resolved ## 0.1.1 - Bugfix: the `ps` style of memory reporting should always use RSS, and Linux should always use PSS ## 0.1.0 - Default to using PSS for linux (#2 & #3) @ksoderstrom - Correct for bit shifting truncation (#4) @ksoderstrom ## 0.0.1 - Initial get_process_mem-0.2.5/.gitignore0000644000004100000410000000002313563007260016706 0ustar www-datawww-data*.gem Gemfile.lock get_process_mem-0.2.5/Rakefile0000644000004100000410000000037613563007260016376 0ustar www-datawww-data# encoding: UTF-8 require 'bundler/gem_tasks' require 'rake' require 'rake/testtask' task :default => [:test] test_task = Rake::TestTask.new(:test) do |t| t.libs << 'lib' t.libs << 'test' t.pattern = 'test/**/*_test.rb' t.verbose = false end get_process_mem-0.2.5/lib/0000755000004100000410000000000013563007260015471 5ustar www-datawww-dataget_process_mem-0.2.5/lib/get_process_mem.rb0000644000004100000410000000640613563007260021177 0ustar www-datawww-datarequire 'pathname' require 'bigdecimal' # Cribbed from Unicorn Worker Killer, thanks! class GetProcessMem private_class_method def self.number_to_bigdecimal(value) BigDecimal(value) end private def number_to_bigdecimal(value) self.class.send(:number_to_bigdecimal, value) end KB_TO_BYTE = number_to_bigdecimal 1024 # 2**10 = 1024 MB_TO_BYTE = number_to_bigdecimal 1_048_576 # 1024**2 = 1_048_576 GB_TO_BYTE = number_to_bigdecimal 1_073_741_824 # 1024**3 = 1_073_741_824 CONVERSION = { "kb" => KB_TO_BYTE, "mb" => MB_TO_BYTE, "gb" => GB_TO_BYTE } ROUND_UP = number_to_bigdecimal "0.5" attr_reader :pid RUNS_ON_WINDOWS = Gem.win_platform? if RUNS_ON_WINDOWS begin require 'sys/proctable' rescue LoadError => e message = "Please add `sys-proctable` to your Gemfile for windows machines\n" message << e.message raise e, message end 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" @pid = pid @linux = @status_file.exist? end def linux? @linux end def bytes memory = linux_status_memory if linux? memory ||= darwin_memory if RUNS_ON_DARWIN memory ||= ps_memory end def kb(b = bytes) (b/KB_TO_BYTE).to_f end def mb(b = bytes) (b/MB_TO_BYTE).to_f end def gb(b = bytes) (b/GB_TO_BYTE).to_f end def inspect b = bytes "#<#{self.class}:0x%08x @mb=#{ mb b } @gb=#{ gb b } @kb=#{ kb b } @bytes=#{b}>" % (object_id * 2) end # linux stores memory info in a file "/proc/#{pid}/status" # If it's available it uses less resources than shelling out to ps def linux_status_memory(file = @status_file) line = file.each_line.detect {|line| line.start_with? 'VmRSS'.freeze } return unless line return unless (_name, value, unit = line.split(nil)).length == 3 CONVERSION[unit.downcase!] * value.to_i rescue Errno::EACCES, Errno::ENOENT 0 end # linux stores detailed memory info in a file "/proc/#{pid}/smaps" def linux_memory(file = @process_file) lines = file.each_line.select {|line| line.match(/^Rss/) } return if lines.empty? lines.reduce(0) do |sum, line| line.match(/(?(\d*\.{0,1}\d+))\s+(?\w\w)/) do |m| value = number_to_bigdecimal(m[:value]) + ROUND_UP unit = m[:unit].downcase sum += CONVERSION[unit] * value end sum end rescue Errno::EACCES 0 end # Pull memory from `ps` command, takes more resources and can freeze # in low memory situations def ps_memory if RUNS_ON_WINDOWS size = ProcTable.ps(pid: pid).working_set_size number_to_bigdecimal(size) else mem = `ps -o rss= -p #{pid}` KB_TO_BYTE * number_to_bigdecimal(mem == "" ? 0 : mem) end end def darwin_memory Darwin.resident_size end end get_process_mem-0.2.5/lib/get_process_mem/0000755000004100000410000000000013563007260020644 5ustar www-datawww-dataget_process_mem-0.2.5/lib/get_process_mem/version.rb0000644000004100000410000000005413563007260022655 0ustar www-datawww-dataclass GetProcessMem VERSION = "0.2.5" end get_process_mem-0.2.5/lib/get_process_mem/darwin.rb0000644000004100000410000000255013563007260022457 0ustar www-datawww-datarequire '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 get_process_mem-0.2.5/get_process_mem.gemspec0000644000004100000410000000205113563007260021441 0ustar www-datawww-data# -*- encoding: utf-8 -*- lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'get_process_mem/version' Gem::Specification.new do |gem| gem.name = "get_process_mem" gem.version = GetProcessMem::VERSION gem.authors = ["Richard Schneeman"] gem.email = ["richard.schneeman+rubygems@gmail.com"] gem.description = %q{ Get memory usage of a process in Ruby } gem.summary = %q{ Use GetProcessMem to find out the amount of RAM used by any process } gem.homepage = "https://github.com/schneems/get_process_mem" gem.license = "MIT" gem.files = `git ls-files`.split($/) gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) } 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.2" gem.add_development_dependency "rake", "~> 12" gem.add_development_dependency "test-unit", "~> 3" end get_process_mem-0.2.5/Gemfile0000644000004100000410000000007313563007260016216 0ustar www-datawww-datasource "https://rubygems.org" gem 'sys-proctable' gemspec get_process_mem-0.2.5/appveyor.yml0000644000004100000410000000042513563007260017314 0ustar www-datawww-datainstall: - set PATH=C:\Ruby22\bin;%PATH% - bundle install build: off before_test: - ruby -v - gem -v - bundle -v test_script: - bundle exec rake environment: matrix: - RUBY_VERSION: 23 - RUBY_VERSION: 22 - RUBY_VERSION: 21 - RUBY_VERSION: 200 get_process_mem-0.2.5/.github/0000755000004100000410000000000013563007260016263 5ustar www-datawww-dataget_process_mem-0.2.5/.github/workflows/0000755000004100000410000000000013563007260020320 5ustar www-datawww-dataget_process_mem-0.2.5/.github/workflows/check_changelog.yml0000644000004100000410000000057113563007260024132 0ustar www-datawww-dataname: Check Changelog on: [pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Check that CHANGELOG is touched run: | cat $GITHUB_EVENT_PATH | jq .pull_request.title | grep -i '\[\(\(changelog skip\)\|\(ci skip\)\)\]' || git diff remotes/origin/${{ github.base_ref }} --name-only | grep CHANGELOG.md