Chúng tôi có một codebase perl khá lớn.Tôi có thể sử dụng dtrace trên OS X 10.5 để xác định xem phần subsl của tôi có gây ra sự phân bổ bộ nhớ nhất không?
Một số quy trình chạy trong nhiều giờ (công việc ETL) đột nhiên bắt đầu tiêu tốn RAM nhiều hơn bình thường. Phân tích các thay đổi trong bản phát hành có liên quan là một quá trình chậm và bực bội. Tôi hy vọng sẽ xác định thủ phạm bằng cách sử dụng phân tích tự động hơn.
Môi trường sống của chúng tôi là perl 5.14 trên Debian squeeze.
Mặc dù vậy, tôi có quyền truy cập vào rất nhiều máy OS X 10.5. Dtrace và perl dường như chơi cùng nhau độc đáo trên nền tảng này. Dường như sử dụng dtrace trên Linux đòi hỏi phải khởi động nhiều công việc hơn. Tôi hy vọng rằng các mẫu phân bổ bộ nhớ sẽ giống nhau giữa hệ thống sống của chúng ta và hệ thống dev OS X - hoặc ít nhất là đủ tương tự để giúp tôi tìm ra nguồn gốc của việc sử dụng bộ nhớ mới này.
boong trượt này:
https://dgl.cx/2011/01/dtrace-and-perl
cho thấy làm thế nào để sử dụng dtrace làm hiển thị số gọi đến malloc theo tiểu perl. Tôi quan tâm đến việc theo dõi tổng số lượng bộ nhớ mà perl phân bổ trong khi thực hiện mỗi phụ trong suốt vòng đời của một quá trình.
Bất kỳ ý tưởng nào về cách thực hiện điều này?
Điều này> có thể
astletron
Hrm. Điều đó đang làm> một cái gì đó
astletron
Tôi nghĩ rằng tôi có thể làm việc này. Có một vấn đề trong cách tôi đang chạy dtrace, không phải trong chương trình D của tôi. Tôi nghĩ rằng đầu ra tôi có là số byte được yêu cầu bởi malloc được chia nhỏ theo tên của phụ và tệp phụ nằm ở vị trí phụ đó là cuối cùng cho mỗi phụ được nhập trước malloc. Điều này không hoàn toàn đơn giản, nhưng có vẻ hữu ích về mặt hướng. Vẫn có thể sử dụng dữ liệu đầu vào từ bất kỳ ninja nào đã xảy ra để xác thực rằng tác phẩm của tôi ở ngay tại đây. – astletron