Подтвердить что ты не робот

Получение памяти из моего процесса из OSX с помощью Ruby

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Взято из http://laurelfan.com/2008/1/15/ruby-memory-usage:

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

Проверено на работу как в Linux, так и в OS X.

Это возвращает количество байтов, в которых процесс находится в памяти, за исключением тех, которые выгружены

Чтобы получить общий объем виртуальной памяти, включая swap, измените rss на vsz (протестирован в Linux, но не протестирован в OSX):

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

Ответ 3

У OS gem есть метод rss_bytes, который работает для Linux/windows/OS X...