Phần trăm CPU có nghĩa là gì?


11

Tôi đang xem quá trình sử dụng phần trăm CPU của mình theo một quy trình. Làm thế nào để một quá trình chỉ sử dụng CPU 50%? Không phải một quá trình sử dụng 100% rồi 0%, sau đó 100%? Nó không giống như mọi hướng dẫn khác là một chương trình khác nhau.


1
Có một bộ xử lý kép bởi bất kỳ cơ hội?

Chắc chắn là một câu hỏi cho SuperUser.
Noldorin

Câu trả lời:


16

Nó chỉ thăm dò ý kiến ​​tổng cộng khoảng một lần mỗi giây. Bạn đang xem nó sử dụng bao nhiêu giây cuối cùng.

Nếu bạn thấy một cpu ngồi ở mức 50% trong một thời gian ngắn, điều có thể xảy ra là nó sử dụng 100% một cpu trong hệ thống cpu kép.


4
"Một lõi của hệ thống lõi kép" - ... hoặc thậm chí là một CPU với 'siêu phân luồng'.

@ChrisW: đã sửa.
Joel Coehoorn

Tỷ lệ sử dụng CPU thường được báo cáo là 100% cho mỗi CPU riêng lẻ, do đó, tổng công suất CPU được sử dụng trong hệ thống lõi kép là 200%, trong lõi tứ 400%, v.v.
David Z

Không có trong trình quản lý tác vụ windows.
Joel Coehoorn

11

Về mặt kỹ thuật bạn đã đúng. Tại bất kỳ thời điểm nào, CPU đều được sử dụng hoặc không được sử dụng. Nhưng việc hiển thị trong biểu đồ sẽ không hữu ích lắm, vì vậy biểu đồ này trung bình sử dụng CPU trong một khoảng thời gian, có thể là mỗi giây.


3

HĐH lên lịch cho quá trình trong một khoảng thời gian nhất định. Vì vậy, nếu quá trình được lên lịch cho (giả sử) 1ms trong số 10ms, thì nó sẽ sử dụng CPU 10%.

Đó là một chút phản trực giác, vì (trong một hệ thống CPU đơn luồng, đơn), quá trình này đang chạy hoặc không chạy. tức là sử dụng 100% hoặc 0%. Tỷ lệ phần trăm bạn thấy được đo qua cửa sổ thời gian và là thước đo của các khe thời gian phân bổ hệ điều hành cho quy trình của bạn để chạy.

Lưu ý rằng quy trình của bạn sẽ không đóng góp vào điều này nếu bạn đang truy cập I / O. Vì vậy, nếu bạn đang thực hiện một phép tính lớn, bạn sẽ đăng ký 100% (giả sử không có gì khác chạy). Nếu sau đó bạn đợi một gói mạng / truy cập đĩa, v.v. con số CPU của bạn sẽ giảm, mặc dù thực tế là quá trình của bạn vẫn đang chạy.


2

Ở mức độ rất thấp, về cơ bản bạn đã đúng. Tại bất kỳ thời điểm nào, bộ xử lý đang thực hiện một lệnh cho một quy trình nhất định hoặc không.

Nhưng hệ điều hành của bạn đang ngồi giữa các quy trình của bạn và bộ xử lý, khiến chúng chia sẻ thời gian. Tỷ lệ phần trăm bạn thấy là tỷ lệ phần trăm thời gian xử lý gần đây mà HĐH đã cấp cho quy trình đó.


1

Nó dựa trên thời gian trung bình. Mặc dù tất cả các luồng có thể có cùng một khoảng thời gian CPU (dựa trên mức độ ưu tiên), các luồng chỉ có thể nói "cảm ơn nhưng tôi không sử dụng" và chuyển nó sang luồng tiếp theo. Đó là lý do tại sao các chương trình không phải lúc nào cũng sử dụng cùng một% thời gian và hầu hết các chương trình đều tiêu thụ 0% CPU và các chương trình thực sự cần CPU có thể mất gần 100% thời gian cho chính nó.

Tại sao nó giới hạn ở mức 50%? Bạn có thể có hai lõi CPU và nó chỉ sử dụng một lõi.

Hoặc, như được đề xuất, nó đang sử dụng siêu phân luồng, nhưng tôi không biết cái này hoạt động chính xác như thế nào.


0

Chương trình của bạn có thể thực hiện rất nhiều I / O (đọc / ghi đĩa hoặc mạng). Điều đó sẽ giữ cho chương trình bận rộn nhưng cần ít hoặc không có thời gian CPU.


0

Việc sử dụng hệ thống được lấy mẫu và tính trung bình, đó là điều hợp lý duy nhất để làm.

Ví dụ: một bản ghi về thời gian một tiến trình / luồng dành cho việc chạy trong 1 giây được giữ. Nếu nó dành 1 giây cho CPU, đó là CPU 100% (hoặc 50% nếu bạn có 2 CPU, v.v.), nếu nó tiêu tốn 100ms thì đó là 10% sử dụng CPU.

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.