Получение памяти из моего процесса из OSX с помощью Ruby
У меня есть приложение Ruby, которое (в Linux) использует файловую систему /proc для получения информации об использовании памяти. Кто-нибудь знает, как получить такую же информацию для Mac OSX? Системный вызов task_info выглядит многообещающим, но есть ли эквивалент, доступный от Ruby?
Чтобы быть ясным, я ищу системный вызов, я не хочу запускать процесс для этого (извините Ларса!).
Ответы
Ответ 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...