【问题标题】:Getting memory usage of my process from OSX using Ruby使用 Ruby 从 OSX 获取我的进程的内存使用情况
【发布时间】:2011-05-07 04:24:39
【问题描述】:

我有一个 Ruby 应用程序,它(在 Linux 上)使用 /proc 文件系统来获取有关其内存使用情况的信息。有谁知道如何为 Mac OSX 获取相同的信息? task_info 系统调用看起来很有希望,但是 Ruby 是否提供等效的系统调用?

明确地说,我正在寻找一个系统调用,我不想为此启动一个进程(对不起,Lars!)。

【问题讨论】:

    标签: ruby macos


    【解决方案1】:

    取自http://laurelfan.com/2008/1/15/ruby-memory-usage

    memory_usage = `ps -o rss= -p #{Process.pid}`.to_i # in kilobytes 
    

    经验证可在 Linux 和 OS X 中运行。

    这将返回进程驻留在内存中的字节数,不包括被换出的字节数

    要获得包括交换在内的总虚拟内存大小,请将rss 更改为vsz(在 Linux 中测试,但在 OSX 中未测试):

    memory_usage = `ps -o vsz= -p #{Process.pid}`.to_i # in kilobytes 
    

    【讨论】:

      【解决方案2】:

      参考this answer,您似乎需要致电proc_pidinfo()。我认为没有 Ruby 等价物,所以要么您必须编写 C 扩展,要么使用 ruby​​-ffi gem。

      Other sources 表示 Ruby 1.9.2 带有内置 FFI——但该版本未随 OS X 一起提供。

      【讨论】:

        【解决方案3】:

        OS gem 有一个适用于 Linux/windows/OS X 的 rss_bytes 方法...

        【讨论】:

        • 请注意,由于某种原因,它以千字节为单位返回。
        • 糟糕,我用 1.1.2 修复了它的字节数 :)
        • 哇,那是多少年前的虫子了?
        • 喜欢...9?:) ....
        猜你喜欢
        • 2011-11-05
        • 2015-03-11
        • 2010-10-24
        • 1970-01-01
        • 2016-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        相关资源
        最近更新 更多