2017-12-02 49 views

Trả lời

2

Có, điều này là có thể, mặc dù nó không nhất thiết phải đơn giản như lập trình các bộ đếm PMU thông thường.

Một cách tiếp cận là sử dụng bộ đếm bộ điều khiển bộ nhớ khả trình được truy cập qua không gian PCI. Một nơi tốt để bắt đầu là kiểm tra việc triển khai của chính Intel trong pcm-memory tại pcm-memory.cpp. Ứng dụng này cho bạn thấy thông lượng bộ điều khiển trên mỗi socket hoặc bộ nhớ mỗi bộ nhớ, phù hợp cho một số ứng dụng. Đặc biệt, băng thông được chia sẻ giữa tất cả các lõi, vì vậy trên một máy yên tĩnh, bạn có thể giả định hầu hết băng thông được kết hợp với quá trình đang thử nghiệm, hoặc nếu bạn muốn theo dõi ở cấp độ ổ cắm, nó chính xác như bạn muốn.

Cách thay thế khác là sử dụng lập trình cẩn thận của các bộ đếm "bù lại offcore". Những điều này, theo như tôi biết, liên quan đến lưu lượng truy cập giữa L2 (bộ nhớ cache lõi riêng cuối cùng) và phần còn lại của hệ thống. Bạn có thể lọc theo kết quả của phản hồi offcore, vì vậy bạn có thể sử dụng kết hợp các sự kiện "L3 miss" khác nhau và nhân với kích thước dòng bộ nhớ cache để nhận băng thông đọc và ghi. Các sự kiện khá tinh vi, vì vậy bạn có thể tiếp tục phá vỡ nó xuống bởi những gì gây ra sự truy cập ở nơi đầu tiên: tìm nạp lệnh, yêu cầu dữ liệu, tìm nạp trước, v.v.

Các quầy phản hồi offcore thường tụt lại phía sau hỗ trợ bởi các công cụ như perflikwid nhưng ít nhất các phiên bản gần đây dường như có hỗ trợ hợp lý, ngay cả đối với các bộ phận khách hàng như SKL.

-2

Tôi không chắc về PMU của Intel, nhưng tôi nghĩ bạn có thể sử dụng Bộ khuếch đại Intel VTune (https://software.intel.com/en-us/intel-vtune-amplifier-xe). Điều này có rất nhiều công cụ để giám sát hiệu suất (bộ nhớ, bộ nhớ cache CPU, CPU). Có lẽ điều này sẽ làm việc cho bạn.

+2

VTune là công cụ để sử dụng bộ đếm hiệu năng phần cứng (ví dụ: PMU = đơn vị giám sát hiệu suất). Trừ khi bạn có thể giải thích * làm thế nào * để có được VTune để đo băng thông bộ nhớ, đây không phải là một câu trả lời hữu ích. (VTune là một công cụ hữu ích, và có thể giúp tìm các điểm nóng cache-miss và những thứ như thế, và dường như vượt xa chỉ đơn giản là ghi lại bộ đếm perf. Nhưng đó không phải là câu hỏi này đang hỏi.) –

4

Có (ish), gián tiếp. Bạn có thể sử dụng mối quan hệ giữa các quầy (bao gồm cả tem thời gian) để suy ra các số khác. Ví dụ, nếu bạn lấy mẫu một khoảng thời gian 1 giây, và có N lần cuối cùng (3) bộ nhớ cache bỏ lỡ, bạn có thể khá tự tin bạn đang chiếm N * CacheLineSize byte mỗi giây.

Nó được một chút stickier để liên hệ nó một cách chính xác để hoạt động chương trình, như những người bỏ lỡ có thể phản ánh CPU tìm nạp trước, hoạt động ngắt vv

Ngoài ra còn có một bãi lầy của 'cpu này sẽ không được tính (MMX, SSE, AVX, ..) trừ khi bit cấu hình này ở trạng thái này '; do đó việc cuộn của bạn là cồng kềnh ....

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