Làm thế nào là thời gian CPU và sử dụng CPU giống nhau?


23

Trong trang Wikipedia về thời gian CPU , nó nói

Thời gian CPU được đo bằng đồng hồ hoặc giây. Thông thường, rất hữu ích khi đo thời gian CPU theo phần trăm dung lượng của CPU, được gọi là mức sử dụng CPU.

Tôi không hiểu làm thế nào một khoảng thời gian có thể được thay thế bằng một tỷ lệ phần trăm. Khi tôi nhìn vào top, không %CPUcho tôi biết rằng MATLABđang sử dụng 2,17 lõi ​​của tôi?

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
18118 jasl      20   0 9248400 261528  78676 S 217.2  0.1   8:14.75 MATLAB      

Câu hỏi

Để hiểu rõ hơn về việc sử dụng CPU là gì, tôi phải tự tính toán mức sử dụng CPU như thế nào?


Nhấn '1' trong khi bạn mở 'top' để thu thập chi tiết hơn trên cơ sở từng lõi.
Peter

Đó là số một ( 1).
Michael Hampton

Hãy để Linux cho bạn thấy mỗi Bộ xử lý bận rộn như thế nào với yêu cầu Dòng lệnh này. mpstat -P TẤT CẢ 5 3 nhập cho trạng thái đa bộ xử lý 5 giây 3 khoảng. Chia% CPU được báo cáo theo số lõi của bạn để có% CPU bận rộn trung bình. i điều khiển -xm 5 3 enter sẽ cho bạn biết bạn có sẵn bao nhiêu lõi / CPU.
Wilson Hauck

Câu trả lời:


32

Thời gian CPU được phân bổ trong các lát thời gian riêng biệt (tick). Đối với một số lát cắt thời gian nhất định, CPU đang bận, lần khác thì không (được biểu thị bằng quá trình nhàn rỗi). Trong hình bên dưới, CPU đang bận cho 6 trong số 10 lát CPU. 6/10 = .60 = 60% thời gian bận rộn (và do đó sẽ có 40% thời gian nhàn rỗi).

nhập mô tả hình ảnh ở đây

Một tỷ lệ phần trăm được định nghĩa là "một số hoặc tỷ lệ được thể hiện dưới dạng một số phần nhất định của một thứ được chia thành 100 phần". Vì vậy, trong trường hợp này, những phần đó là những lát thời gian rời rạc và thứ gì đó là những lát thời gian bận rộn so với những lát thời gian nhàn rỗi - tỷ lệ bận rộn đến những lát thời gian nhàn rỗi.

Vì CPU hoạt động theo GHz (hàng tỷ chu kỳ một giây). Hệ điều hành cắt thời gian đó trong các đơn vị nhỏ hơn được gọi là tick. Họ không thực sự 1/10 giây. Tốc độ đánh dấu trong windows là 10 triệu tick trong một giây và trong Linux là sysconf(_SC_CLK_TCK)(thường là 100 tick mỗi giây).

Trong một cái gì đó như top, các chu kỳ CPU bận rộn sau đó được chia thành tỷ lệ phần trăm của những thứ như thời gian của người dùng và thời gian hệ thống. Trong topLinux và perfmon trong Windows, bạn sẽ thường nhận được một màn hình vượt quá 100%, đó là vì tổng số là 100% * the_number_of_cpu_cores.

Trong một hệ điều hành, công việc của bộ lập lịch là phân bổ các lát cắt quý giá này cho các quy trình, vì vậy bộ lập lịch là thứ báo cáo điều này.


1
Các lát cắt thời gian không được tính bằng phần tỷ của một giây. Chúng không phải là ngắn. Họ có nhiều khả năng ở đâu đó giữa 0,1 ms và 10 ms. Độ phân giải của các giá trị thời gian trong API không giống như tốc độ ngắt thời gian. Một số lệnh gọi API trong Linux có thời gian được chỉ định bằng nano giây, nhưng bạn sẽ không muốn ngắt thời gian thường xuyên. Nếu bạn có một triệu ngắt mỗi giây, bạn sẽ dành toàn bộ thời gian CPU cho các chuyển đổi ngữ cảnh.
kasperd

2
Bạn có nghĩa là 1000 tick? Tất cả các hệ thống Linux của tôi là 1000 tick (EL5 và EL6) hoặc 1000 tick + tickless (EL7). Hay bạn ám chỉ điều gì khác?
Michael Hampton

1
Trang man nói: "Biến tương ứng đã lỗi thời." Tôi không nghĩ rằng có thể dựa vào. Tôi đã kiểm tra cấu hình kernel trong /boot/config-2.6.32- dù đó là gì trong tháng này ...
Michael Hampton

1
Aha, không, họ không được báo cáo như nhau. CLK_TCK là một giá trị tỷ lệ rõ ràng cho không gian người dùng và dường như luôn luôn là 100 bất kể có bao nhiêu tick thực sự sử dụng. Tìm thấy một số giải thích tốt về SO ( 1 , 2 )
Michael Hampton

2
Tôi cũng nghĩ rằng "tiếng tích tắc" của Windows mà lệnh gọi API đề cập đến không giống với tần số ngắt của bộ đếm thời gian Windows và do đó không thực sự có thể so sánh được.
Michael Hampton

14

Thời gian CPU là thời gian mà quá trình đang sử dụng CPU - chuyển đổi nó thành tỷ lệ phần trăm được thực hiện bằng cách chia cho lượng thời gian thực đã trôi qua.

Vì vậy, nếu tôi có một quá trình sử dụng 1 giây thời gian CPU trong khoảng thời gian 2 giây, thì đó là sử dụng 50% CPU.

Trong trường hợp quy trình MATLAB của bạn, 217% cho biết rằng nó đã sử dụng 2,17 giây thời gian CPU mỗi giây trong khoảng thời gian mẫu cuối cùng - một cách hiệu quả, độc quyền 2 lõi CPU và lấy một phần ba.


5
Hoặc nó có thể sử dụng 25% của 8 CPU và một phần chín.
Bob Jarvis - Tái lập Monica
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.