2009-03-12 45 views
7

Bạn đã sử dụng bất kỳ công cụ lược tả nào như máy phân tích Intel Vtune chưa?Lập hồ sơ C++ ứng dụng đa luồng

Đề xuất của bạn cho ứng dụng đa luồng C++ trên Linux và cửa sổ là gì? Tôi chủ yếu quan tâm đến việc nhớ cache, sử dụng bộ nhớ, rò rỉ bộ nhớ và sử dụng CPU.

Tôi sử dụng valgrind (chỉ trên UNIX), nhưng chủ yếu để tìm lỗi bộ nhớ và rò rỉ.

+0

Gần đây tôi đã xem bài viết này về hồ sơ: http://www.iop.org/EJ/article/1742-6596/119/4/042030/jpconf8_119_042030.pdf?request-id=6fb45e59-676f-4728- 86bd-f324abdc5053. igprof https://twiki.cern.ch/twiki/bin/view/CMS/IgProfAnalysis trông giống như một công cụ tiện lợi (mặc dù tôi vẫn phải thử nó). –

Trả lời

8

Sau đây là các công cụ tốt cho các ứng dụng đa luồng. Bạn có thể thử bản sao đánh giá.

  1. công cụ Runtime kiểm tra sanity
    • Chủ đề Checker - Intel trình kiểm tra Chủ đề/VTune, here
  2. Memory cụ nhất quán kiểm tra (sử dụng bộ nhớ, rò rỉ bộ nhớ) - Bộ nhớ Validator, here
  3. Phân tích hiệu suất. (Sử dụng CPU) - AQTime, here

EDIT: Intel trình kiểm tra chủ đề có thể được sử dụng để chẩn đoán chủng tộc dữ liệu, Deadlocks, đề bế tắc, ổ khóa bị bỏ rơi vv Xin vui lòng có rất nhiều sự kiên nhẫn trong việc phân tích các kết quả vì nó rất dễ nhầm lẫn.

Vài lời khuyên:.

  1. Vô hiệu hóa các tính năng mà không được yêu cầu (Trong trường hợp xác định bế tắc, cuộc đua dữ liệu có thể bị vô hiệu và ngược lại.)
  2. Sử dụng Instrumentation mức dựa trên nhu cầu của bạn. Các mức như "Tất cả chức năng" và "Hình ảnh đầy đủ" được sử dụng cho các cuộc đua dữ liệu, khi "Nhập API" có thể được sử dụng để phát hiện deadlock)
  3. sử dụng menu ngữ cảnh "Trợ giúp chẩn đoán" thường xuyên.
1

Bộ Rational PurifyPlus bao gồm cả thiết bị dò rò rỉ đã được kiểm chứng và trình bày khá tốt. Tôi không chắc chắn nếu nó đi xuống đến mức cache nhớ, mặc dù - bạn có thể cần VTune cho điều đó.

PurifyPlus có sẵn trên cả các Unices và Windows nên nó sẽ bao gồm các yêu cầu của bạn, nhưng tiếc là trái ngược với Valgrind, nó không phải là miễn phí.

3

VTune cung cấp cho bạn rất nhiều chi tiết về bộ xử lý đang hoạt động và đôi khi tôi thấy khó nhìn thấy gỗ cho cây. VTune sẽ không báo cáo về rò rỉ bộ nhớ. Bạn sẽ cần làm sạch cộng với điều đó, hoặc nếu bạn có thể chạy trên một hộp Linux valgrind là tốt cho rò rỉ bộ nhớ ở một mức giá tuyệt vời.

VTune hiển thị hai chế độ xem, một cái hữu ích trong bảng, cái kia tôi nghĩ chỉ dành cho người bán hàng để gây ấn tượng với mọi người nhưng không hữu ích.

Để có tùy chọn nhanh chóng và rẻ tiền, tôi muốn dùng valgrind. Valgrind cũng có một phần bộ nhớ cache xay nó nhưng tôi đã không sử dụng nó, nhưng nghi ngờ của nó cũng rất tốt.

cổ vũ, Martin.

5

Trên Linux, hãy thử oprofile. Nó hỗ trợ các bộ đếm hiệu năng khác nhau.

Trên Windows, AMD CodeAnalyst (miễn phí, không giống như VTune) đáng xem. Nó chỉ hỗ trợ sự kiện lược tả trên phần cứng AMD mặc dù (trên CPU Intel nó chỉ là một hồ sơ tiện dụng dựa trên bộ đếm thời gian).

Một đồng nghiệp gần đây đã thử Intel Parallel Studio (beta) và đánh giá nó thuận lợi (nó đã tìm thấy một số vấn đề liên quan đến song song thú vị trong một số mã).

2

Tôi sẽ đưa ra một câu trả lời khác cho valgrind, đặc biệt là phần callgrind với giao diện người dùng. Nó có thể xử lý nhiều luồng bằng cách lược tả từng luồng cho cache, vv Chúng cũng có một trình kiểm tra lỗi đa luồng gọi là helgrind, nhưng tôi chưa bao giờ sử dụng nó và không biết nó tốt như thế nào.

+2

Helgrind là khá tốt trong việc tìm kiếm các vấn đề tiềm năng luồng như mutex khóa trật tự mâu thuẫn, điều kiện chủng tộc vv Nó chỉ hoạt động với pthreads mặc dù, do đó, người dùng thư viện luồng khác có thể được ra khỏi may mắn. Nó chạy chậm hơn nhiều so với valgrind trên máy của tôi mặc dù, vì vậy kiên nhẫn là chìa khóa khi sử dụng nó! –

1

Đối với đơn giản profiling gprof là khá tốt ..

2

Bạn có thể thử profiler CPU AMD CodeXL của. Nó là miễn phí và có sẵn cho cả Windows và Linux.

Trình biên dịch CPU của AMD CodeXL thay thế công cụ CodeAnalyst không còn được hỗ trợ (được đề cập trong câu trả lời ở trên được đưa ra bởi ngày giờ).

Để biết thêm thông tin và liên kết tải xuống, hãy truy cập: AMD CodeXL web page.

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