2009-07-29 29 views
12

Trong linux, có chức năng thư viện C tích hợp để tải CPU của máy không? Có lẽ tôi có thể viết chức năng của riêng tôi để mở và phân tích cú pháp một tập tin trong/proc, nhưng nó có vẻ như có phải là một cách tốt hơn.C API để tải CPU trong linux

  • Không cần để được cầm tay
  • Phải không đòi hỏi bất kỳ thư viện bên ngoài một cơ sở lắp đặt RHEL4.
+1

Truy cập/proc là cách đơn giản để thực hiện. * Tất cả mọi thứ là một tập tin. * Tôi thu thập bạn là một lập trình viên MS? Họ luôn có vẻ không thoải mái với khái niệm này. –

+1

Truy cập/proc là cách linux để làm điều đó. Không phải mọi unix đều có tính năng đó (mặc dù nó là tốt). – dmckee

+0

@dmckee: RHEL4 thực hiện, và đó là yêu cầu của @jcs ' –

Trả lời

11

Nếu bạn thực sự muốn có một giao diện sử dụng c getloadavg(), mà cũng làm việc trong unixes mà không /proc.

Nó có man page với tất cả chi tiết.

+1

Thật vậy. Tất cả các puffing trên về "unix way" mặc dù, đây thực sự là cách di động để làm điều đó. Trên Linux, tất nhiên, nó chỉ là một chức năng thư viện trên đầu trang của một/proc đọc. –

+0

Tải trung bình là _not_ một biểu diễn của tải CPU. Bởi tải cpu, tôi có nghĩa là bao nhiêu người phục vụ đang bận rộn trong nhà hàng của bạn. Tải trung bình cung cấp cho bạn số lượng khách hàng chờ đợi bên ngoài để có được số lượng khách + đang ngồi hiện đang ngồi. Đây không phải là điều _same_. Tôi tin rằng việc sử dụng '/ proc/stat' có liên quan hơn ở đây. –

1

Hiểu biết của tôi là phân tích cú pháp chứa/proc là giao diện chính thức cho loại điều đó (có một số tệp thực sự được phân tích cú pháp trước khi trình bày cho người dùng).

7

Các phương pháp ưa thích để nhận được thông tin về tải CPU trên linux là để đọc từ /proc/stat, /proc/loadavg/proc/thời gian hoạt động. Tất cả các tiện ích Linux bình thường như đầu trang sử dụng phương pháp này.

2

từ proc (5) người đàn ông trang:

/proc/loadavg 
      The first three fields in this file are load average figures 
      giving the number of jobs in the run queue (state R) or waiting 
      for disk I/O (state D) averaged over 1, 5, and 15 minutes. They 
      are the same as the load average numbers given by uptime(1) and 
      other programs. The fourth field consists of two numbers sepaâ 
      rated by a slash (/). The first of these is the number of curâ 
      rently executing kernel scheduling entities (processes, 
      threads); this will be less than or equal to the number of CPUs. 
      The value after the slash is the number of kernel scheduling 
      entities that currently exist on the system. The fifth field is 
      the PID of the process that was most recently created on the 
      system. 
1

"Tải trung bình" có thể không hữu ích. Chúng tôi thấy nó được sử dụng hạn chế, vì nó không thực sự cho bạn biết bao nhiêu CPU đang được sử dụng, chỉ có số lượng trung bình của nhiệm vụ "sẵn sàng để chạy". "Sẵn sàng chạy" có phần chủ quan, nhưng không hữu ích vì nó thường bao gồm các quá trình chờ IO.

Trên các hệ thống bận, chúng tôi thấy trung bình tải trên 20 máy trên chỉ có 8 lõi và CPU vẫn tương đối nhàn rỗi.

Nếu bạn muốn xem CPU nào đang được sử dụng, hãy xem các tệp khác nhau trong/proc