2011-12-14 38 views
5

Tôi muốn sử dụng tổng CPU tổng thể cho một ứng dụng trong C, tổng mức sử dụng CPU như chúng ta nhận được trong TaskManager ... Tôi muốn biết ... cho windows và linux :: current Total CPU use by all các quy trình ..... như chúng ta thấy trong trình quản lý tác vụ.Cách sử dụng CPU trong C?

+2

Hệ điều hành nào? Bạn có muốn biết câu trả lời cho quá trình của bạn hoặc cho một số quy trình khác không? –

+0

tốt, trong Windows (7 để được chính xác) ... Tôi muốn biết ... hiện tại Tổng số CPU sử dụng bởi tất cả các quá trình ..... như chúng ta thấy trong công việc quản lý .... – Ronin

+0

Vui lòng chỉnh sửa câu hỏi để phản ánh thông tin mới này. –

Trả lời

10

Đây là nền tảng cụ thể:

  • Trong Windows, bạn có thể sử dụng chức năng GetProcessTimes().
  • Trong Linux, bạn thực sự có thể chỉ sử dụng clock().

Đây có thể được sử dụng để đo lượng thời gian CPU được lấy giữa hai khoảng thời gian.

EDIT:

Để có được mức tiêu thụ CPU (như là một tỷ lệ phần trăm), bạn sẽ cần phải chia tổng thời gian CPU bởi # của lõi logic rằng hệ điều hành nhìn thấy, và sau đó chia cho tổng tường Hiện -Clock:

% CPU usage = (CPU time)/(# of cores)/(wall time) 

Lấy # của lõi logic cũng là nền tảng cụ thể:

+0

những gì bạn đề xuất là :: Truy xuất thông tin thời gian cho quy trình được chỉ định. .... nhưng tôi cần phải sử dụng tổng số CPU (phần trăm) - như chúng ta thấy trong trình quản lý tác vụ ..... bạn có thể giúp không ?? – Ronin

+0

Chúng có thể được sử dụng để cung cấp cho bạn thời gian CPU được sử dụng. Để có được mức sử dụng CPU%, bạn sẽ cần phải chia nó bằng số lõi logic mà hệ điều hành nhìn thấy. – Mysticial

+0

Để có được mức sử dụng CPU% bạn cần (thời gian CPU/# lõi */thời gian đồng hồ treo tường *), nhưng nếu không chính xác. –

1

Dưới POSIX, bạn muốn getrusage (2) 's lĩnh vực ru_utime. Sử dụng RUSAGE_SELF chỉ cho quá trình gọi điện thoại, và RUSAGE_CHILDEN cho tất cả các chấm dứt và chờ đợi (2) ed-upon children. Linux cũng hỗ trợ RUSAGE_THREAD chỉ cho chuỗi gọi. Sử dụng ru_stime nếu bạn muốn thời gian hệ thống, có thể được tổng hợp với ru_utime cho tổng thời gian chủ động chạy (không phải thời gian tường).

1

Nó thường là hệ điều hành cụ thể.

Bạn có thể sử dụng hàm clock, trả lại clock_t (một số loại số nguyên, như có lẽ long). Trên các hệ thống Linux, nó đo thời gian CPU tính bằng micro giây.

+0

'clock_t' là kiểu * số học *, vì vậy nó cũng có thể là' double' hoặc 'float'. – dreamlax

-1

đó là điều chính xác tôi đang tìm kiếm. Thao tác nó theo cách của tôi, tôi chạy nó thành công.

Get total CPU usage