2017-07-05 19 views
5

Tôi chạy chương trình C++ trong Linux.Làm cách nào để đo thời gian CPU của một tập hợp chủ đề cụ thể?

Có một số chủ đề nhóm (để tính toán, cho io, cho ... những thứ như vậy).

Đồng hồ gọi hệ thống() cung cấp cho tôi cách đo thời gian CPU được tất cả các nhân CPU chi tiêu cho quy trình.

Tuy nhiên, tôi muốn đo thời gian CPU chỉ dành cho các chủ đề trong nhóm chủ đề tính toán.

Làm cách nào để đạt được điều đó?

Thanks: D

+0

Đây không phải là lý tưởng, nhưng tôi nghĩ rằng giải pháp đơn giản nhất là đăng nhập một số thông điệp với timestamps của bắt đầu và dừng của mỗi chủ đề và giúp bạn có được timings bởi xử lý sau các nhật ký đó. –

Trả lời

5

Để có được CPU clock ID của mỗi chủ đề mà bạn có thể sử dụng: pthread_getcpuclockid và sử dụng CPU clock ID này bạn có thể lấy thời gian phân luồng CPU hiện tại sử dụng: clock_gettime.

Sau đây là đoạn code mẫu để chứng minh như nhau:

struct timespec currTime; 
clockid_t threadClockId; 

//! Get thread clock Id 
pthread_getcpuclockid(pthread_self(), &threadClockId); 
//! Using thread clock Id get the clock time 
clock_gettime(threadClockId, &currTime); 
+0

Đó là những gì tôi đã tìm kiếm chính xác, thx – syko

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