2009-12-15 35 views
6

Tôi cần tìm ra phần nào của chương trình linux mà tôi đang chạy, đang lấy bộ nhớ bao nhiêu (hoặc phần trăm hoặc tuyệt đối). Tôi cần phải tạo một hồ sơ của nhiều chương trình như vậy, để tôi có thể xác định một số người tiêu dùng lớn hơn của bộ nhớ trong mã của tôi, và xem nếu tôi có thể tối ưu hóa chúng để sử dụng ít hơn. Tôi cần nó trên nền tảng MIPS, và không may, Valgrind không hoạt động trên MIPS.Cách cấu hình mức sử dụng bộ nhớ của chương trình C

Mọi trợ giúp/con trỏ sẽ được đánh giá cao.

+1

Valgrind hiện được hỗ trợ cho MIPS. Kiểm tra https://bugs.kde.org/show_bug.cgi?id=270777 – MannyNS

Trả lời

6

Bạn có thể bao gồm tất cả các cuộc gọi của mình tới freemalloc với các chức năng của riêng bạn mà bạn cũng cung cấp cho ví dụ trong tệp và số dòng được thực hiện. Từ thông tin này thật dễ dàng để xem bộ nhớ đang được sử dụng ở đâu.

+2

ghi đè thời gian chạy của chúng bằng LD_PRELOAD ... –

+0

@Stefano, Điều này sẽ không hoạt động nếu bạn muốn thêm đối số cho các cuộc gọi 'malloc' của bạn, đúng không? (Tôi là một Linux hoàn chỉnh n00b) –

+2

Nó sẽ hoạt động. Kiểm tra tại đây: http://www-2.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-s03/src/interposition/mymalloc.c –

1

Mức tiêu thụ bộ nhớ không nên bị ảnh hưởng ồ ạt bởi kiến ​​trúc bộ vi xử lý cơ bản để bạn có thể thực hiện việc định cấu hình bộ nhớ trên x86 Linux. Có, số lượng tuyệt đối của bộ nhớ có thể là một bị ảnh hưởng nhưng khi bạn đang tìm kiếm nhiều hơn cho tương đối so với số tuyệt đối, điều này sẽ làm việc.

Điều đó nói rằng, giải pháp này không có khả năng là một tùy chọn nếu một phiên bản Linux x86 là nhiều hơn một biên dịch lại.

+2

... giả định rằng việc chuyển từ MIPS sang x86 là chương trình đó không quan trọng. –

+0

Phải thừa nhận rằng, đó sẽ là bay trong thuốc mỡ. –

+0

Có. Chương trình mà tôi muốn để hồ sơ, nếu tôi phải cổng chương trình đó và tất cả các thư viện liên quan đến x86, nó có thể chạy vào tháng :-). Vì vậy, điều này không làm việc cho tôi – Harty

8

Bên cạnh Valgrind, có rất nhiều trình gỡ rối/trình thu thập bộ nhớ khác. Tất cả những điều sau đây dường như để hỗ trợ MIPS (nhưng tôi đã không cố gắng họ trên kiến ​​trúc đó):

jemalloc, CCMALLOC, mpatrol, NJAMD, Dmalloc, và thậm chí của Google riêng google-perftools.

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