【发布时间】:2011-05-07 04:24:39
【问题描述】:
我有一个 Ruby 应用程序,它(在 Linux 上)使用 /proc 文件系统来获取有关其内存使用情况的信息。有谁知道如何为 Mac OSX 获取相同的信息? task_info 系统调用看起来很有希望,但是 Ruby 是否提供等效的系统调用?
明确地说,我正在寻找一个系统调用,我不想为此启动一个进程(对不起,Lars!)。
【问题讨论】:
我有一个 Ruby 应用程序,它(在 Linux 上)使用 /proc 文件系统来获取有关其内存使用情况的信息。有谁知道如何为 Mac OSX 获取相同的信息? task_info 系统调用看起来很有希望,但是 Ruby 是否提供等效的系统调用?
明确地说,我正在寻找一个系统调用,我不想为此启动一个进程(对不起,Lars!)。
【问题讨论】:
取自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
【讨论】:
参考this answer,您似乎需要致电proc_pidinfo()。我认为没有 Ruby 等价物,所以要么您必须编写 C 扩展,要么使用 ruby-ffi gem。
Other sources 表示 Ruby 1.9.2 带有内置 FFI——但该版本未随 OS X 一起提供。
【讨论】:
OS gem 有一个适用于 Linux/windows/OS X 的 rss_bytes 方法...
【讨论】: