2010-11-09 29 views
11

Tôi có một ứng dụng Ruby (trên Linux) sử dụng hệ thống tập tin/proc để nhận thông tin về cách sử dụng bộ nhớ của nó. Có ai biết làm thế nào để có được cùng một thông tin cho Mac OSX? Cuộc gọi hệ thống task_info trông có vẻ hứa hẹn nhưng có sẵn tương đương từ Ruby không?Sử dụng bộ nhớ của OSX bằng cách sử dụng Ruby

Để rõ ràng, tôi đang tìm kiếm một cuộc gọi hệ thống, tôi không muốn bắt đầu một quá trình cho điều này (xin lỗi Lars!).

Trả lời

3

Tham chiếu đến this answer có vẻ như bạn cần gọi proc_pidinfo(). Tôi không nghĩ rằng có một Ruby tương đương, do đó, hoặc là bạn sẽ phải viết một phần mở rộng C hoặc sử dụng đá quý ruby-ffi.

Other sources chỉ của Ruby 1.9.2 tàu với một chiếc FFI - nhưng phiên bản đó không được phân phối với OS X.

21

Taken từ http://laurelfan.com/2008/1/15/ruby-memory-usage:

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

đã kích hoạt để làm việc trong cả Linux và OS X.

này trả về số byte rằng quá trình này có thường trú trong bộ nhớ, không bao gồm bất kỳ được hoán đổi

Để nhận được tổng dung lượng bộ nhớ ảo bao gồm hoán đổi, thay đổi rss thành vsz (được thử nghiệm trong Linux, nhưng không được kiểm tra trong OSX):

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

Các đá quý OS có một phương pháp rss_bytes mà làm việc cho Linux/windows/OS X .. .

Các vấn đề liên quan