Получение памяти моего процесса из OSX с использованием Ruby - PullRequest
11 голосов
/ 09 ноября 2010

У меня есть приложение Ruby, которое (в Linux) использует файловую систему / proc для получения информации об использовании памяти. Кто-нибудь знает, как получить ту же информацию для Mac OSX? Системный вызов task_info выглядит многообещающе, но есть ли эквивалент, доступный в Ruby?

Чтобы было ясно, я ищу системный вызов, я не хочу запускать процесс для этого (извините, Ларс!).

Ответы [ 3 ]

21 голосов
/ 09 ноября 2010

Взято из 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 
3 голосов
/ 10 ноября 2010

Ссылаясь на этот ответ , похоже, вам нужно позвонить proc_pidinfo().Я не думаю, что есть эквивалент Ruby, поэтому вам придется написать C-расширение или использовать гем ruby-ffi.

Другие источники указывают, что Ruby 1.9.2 поставляется со встроенным FFI - но эта версия не поставляется с OS X.

0 голосов
/ 14 сентября 2012

В геме ОС есть метод rss_bytes, который работает для Linux / windows / OS X ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...