2009-06-02 38 views
6

Có cách nào chúng ta có thể ghi lại dấu chân bộ nhớ không? Theo cách mà sau khi quá trình kết thúc, chúng tôi vẫn có thể truy cập vào nó.Ghi lại dấu chân bộ nhớ trong Linux

Cách điển hình tôi kiểm tra bộ nhớ là thế này:

$ cat /proc/PID/status 

Nhưng không có cách nào nó tồn tại sau khi quá trình này đã hoàn tất.

+0

Câu hỏi tương tự về Lỗi máy chủ: http://serverfault.com/questions/11754/running-batch-jobs-and-getting-a-peak-memory-usage-summary-for-each-job/12066 – MikeyB

Trả lời

5

bạn có thể làm một cái gì đó như:

watch 'grep VmSize /proc/PID/status >> log' 

khi chương trình kết thúc bạn sẽ có một danh sách các dấu chân bộ nhớ theo thời gian trong log.

+0

@Nathan: cảm ơn. BTW làm thế nào tôi có thể phát hành lệnh này của bạn cùng một lúc "cùng" với lệnh của tôi? Vì vậy, nó sẽ không có bất kỳ thời gian trễ giữa hai. – neversaint

+1

đặt cược tốt nhất của bạn có lẽ là có một kịch bản lệnh gọi chương trình và sau đó chạy lệnh tôi đã đề xuất. Bạn vẫn sẽ có thời gian trễ, nhưng nó sẽ ngắn hơn khi thực hiện thủ công –

4

Valgrind có một hồ sơ bộ nhớ gọi là Massif cung cấp thông tin chi tiết về cách sử dụng bộ nhớ của chương trình của bạn:

Massif là một hồ sơ heap. Nó thực hiện việc định hình heap chi tiết bằng cách chụp các ảnh chụp nhanh thường xuyên của một vùng của chương trình. Nó tạo ra một biểu đồ cho thấy việc sử dụng đống theo thời gian, bao gồm thông tin về những phần nào của chương trình chịu trách nhiệm cho việc phân bổ bộ nhớ nhất. Biểu đồ được bổ sung bởi một tệp văn bản hoặc HTML bao gồm nhiều thông tin hơn để xác định nơi bộ nhớ được cấp phát nhiều nhất. Massif chạy chương trình khoảng 20x chậm hơn bình thường.

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