2012-02-07 14 views
5

Các chương trình có thể được giám sát trong khi chúng đang chạy (có thể đường ống nhật ký sự kiện) không? Hoặc là nó chỉ có thể xem các bản ghi sự kiện sau khi thực hiện. Nếu trường hợp thứ hai là trường hợp, có một lý do sâu sắc hơn đối với cách hoạt động của Haskell?chức năng threadscope

Chỉnh sửa: Tôi không biết nhiều về thời gian chạy tbh, nhưng cho phản hồi của dflemstr, tôi tò mò về số lượng và cách thức hiệu suất bị suy giảm bằng cách thêm tùy chọn thời gian chạy theo dõi sự kiện. Tôi nhớ lại trong RWH họ đã đề cập rằng các rts phải thêm các trung tâm chi phí, nhưng tôi không hoàn toàn chắc chắn về mức độ đắt đỏ của loại thứ này.

Trả lời

1

Câu trả lời trực tiếp là, không, điều đó là không thể. Và, không, không có lý do gì cho điều đó ngoại trừ việc không ai đã thực hiện các công việc cần thiết cho đến nay.

Tôi nghĩ rằng đây chủ yếu sẽ là một vấn đề của

  1. Sửa đổi ghc-events nên nó hỗ trợ đọc sự kiện đăng nhập đoạn khôn ngoan và cung cấp kết quả từng phần. Có lẽ việc chuyển nó sang attoparsec sẽ giúp ích gì?

  2. Threadscope sẽ phải cập nhật nội bộ cấu trúc dữ liệu cây của nó như dòng dữ liệu mới trong.

Không có gì quá khó khăn, nhưng ai đó sẽ cần phải làm điều đó. Tôi nghĩ rằng tôi đã nghe cuộc thảo luận về việc thêm tính năng này ... Vì vậy, nó có thể xảy ra cuối cùng.

Edit: Và để làm cho nó rõ ràng, không có lý do thực sự này sẽ phải suy giảm hiệu suất xa hơn những gì bạn nhận được với sự kiện đăng nhập hoặc trung tâm hồ sơ chi phí rồi.

1

Nếu bạn muốn theo dõi hiệu suất của ứng dụng trong khi nó đang chạy, bạn có thể sử dụng ví dụ the ekg package như được mô tả trong this blog post. Nó không được chi tiết như ThreadScope, nhưng nó thực hiện công việc cho các dịch vụ web, chẳng hạn.

Để nhận thông tin trực tiếp về thời gian chạy, bạn có thể sử dụng chương trình dtrace để nắm bắt các sự kiện động được đăng bởi một số đầu dò thời gian chạy GHC. Cách thực hiện việc này được nêu trong this wiki page. Sau đó, bạn có thể sử dụng thông tin này để đặt cùng một nhật ký sự kiện chặt chẽ hơn.

+0

tuyệt vời! hmmm, tôi đã bắt đầu duyệt các nguồn cho threadscope, nhưng về lâu dài, tôi quan tâm đến việc có thể tạo một số thông báo cơ bản bên trong threadscope, và nghĩ rằng nó sẽ trông thật tuyệt vời khi xem nó trong thời gian thực. chỉ cần tự hỏi nếu nó là dễ dàng để làm. –

+0

Tôi đã thêm chi tiết về cách các hành động được thực hiện bởi thời gian chạy GHC có thể được truy tìm thêm. Điều này tốt hơn nên trả lời phần đầu tiên của câu hỏi của bạn. – dflemstr