Cụ thể thời gian treo tường, thời gian người dùng và thời gian cpu thời gian trong UNIX là gì?


144

Tôi có thể đoán dựa trên các tên, nhưng cụ thể thời gian treo tường, thời gian người dùng và thời gian hệ thống trong UNIX là gì?

Có phải thời gian cpu của người dùng là lượng thời gian dành cho việc thực thi mã người dùng trong khi kernel-cpu có thời gian dành cho kernel do nhu cầu của các hoạt động đặc quyền (như IO vào đĩa) không?

Đơn vị thời gian là phép đo này trong.

Và thời gian đồng hồ treo tường có thực sự là số giây mà quá trình đã dành cho CPU hay tên chỉ là sai lệch?


Câu trả lời:


142

Thời gian đồng hồ treo tường là thời gian mà đồng hồ trên tường (hoặc đồng hồ bấm giờ trên tay) sẽ đo là đã trôi qua giữa lúc bắt đầu quá trình và 'bây giờ'.

Thời gian cpu người dùng và thời gian cpu hệ thống khá nhiều như bạn đã nói - lượng thời gian dành cho mã người dùng và lượng thời gian dành cho mã hạt nhân.

Đơn vị là giây (và giây, có thể là micro giây hoặc nano giây).

Thời gian đồng hồ treo tường không phải là số giây mà quá trình đã dành cho CPU; đó là thời gian đã trôi qua, bao gồm cả thời gian chờ đến lượt bật CPU (trong khi các quá trình khác bắt đầu chạy).


16
Vì vậy, điều này có nghĩa là thời gian đồng hồ treo tường sẽ luôn luôn lớn hơn thời gian cpu?
Pacerier

35
@Pacerier: trên một máy đơn lõi, vâng, nhưng các máy đa lõi và các chương trình đa luồng có thể sử dụng nhiều hơn 1 CPU mỗi giây trong một giây.
Jonathan Leffler

@JonathanLeffler cảm ơn bạn đã trả lời, tôi muốn lấy số lượng nano giây đã trôi qua nhưng việc CPUtime = #clock_cycles / clock_ratetính toán thời gian của CPU bằng công thức không thể giống như tính thời gian đã trôi qua. Bạn có biết nếu tôi có thể có được thời gian trôi qua từ thời gian CPU?
Bionix1441

2
@ Bionix1441: Bạn không thể lấy được thời gian đã trôi qua từ thời gian CPU vì một số lý do. Đầu tiên, một quá trình có thể không hoạt động, không tiêu tốn bất kỳ thời gian CPU nào, trong các khoảng thời gian tùy ý (ví dụ: quy trình trình nền chờ khách hàng kết nối với nó qua mạng), do đó, nó có thể không làm gì trong nhiều ngày tại thời điểm trôi qua . Thứ hai, nếu nó đang chạy, nó có thể có nhiều luồng và nếu có 4 luồng và có 4 lõi trở lên trên hệ thống, nó có thể tăng thêm 4 giây CPU trong một giây thời gian đã trôi qua. Điều này cho thấy rằng không có công thức đơn giản (hoặc thậm chí phức tạp) mà bạn có thể sử dụng.
Jonathan Leffler

1
@Catbuilts: Bạn có biết rằng hạt nhân Unix chạy riêng với các chương trình người dùng. Khi chương trình của bạn thực hiện cuộc gọi hệ thống (ví dụ: read()hoặc getpid()), hạt nhân thực thi mã thay mặt cho chương trình của bạn. Hạt nhân cũng xử lý đa tác vụ được ưu tiên để các chương trình khác có thể chạy, và một số công việc vệ sinh chung giúp hệ thống hoạt động trơn tru. Mã này được thực thi trong 'mã hạt nhân' (cũng trong mode chế độ kernel '). Điều này khác với mã bạn đã viết và thư viện người dùng (bao gồm thư viện hệ thống C) mà bạn chạy.
Jonathan Leffler

36

Thời gian đồng hồ treo tường: thời gian trôi qua theo đồng hồ bên trong của máy tính, phù hợp với thời gian ở thế giới bên ngoài. Điều này không liên quan gì đến việc sử dụng CPU; nó được đưa ra để tham khảo.

Thời gian CPU của người dùng và thời gian hệ thống: chính xác những gì bạn nghĩ. Các cuộc gọi hệ thống, bao gồm các cuộc gọi I / O như read,write vv được thực hiện bởi nhảy vào mã hạt nhân và thực hiện điều đó.

Nếu thời gian đồng hồ treo tường <thời gian CPU, thì bạn đang thực hiện chương trình song song. Nếu thời gian đồng hồ treo tường> thời gian CPU, bạn đang chờ đĩa, mạng hoặc các thiết bị khác.

Tất cả được đo bằng giây, trên mỗi SI .


7

Thời gian đồng hồ treo tường chính xác như những gì nó nói, thời gian trôi qua được đo bằng đồng hồ trên tường của bạn (hoặc đồng hồ đeo tay)

Thời gian cpu của người dùng là thời gian dành cho "vùng đất người dùng", đó là thời gian dành cho các quy trình không phải nhân

Thời gian cpu hệ thống là thời gian dành cho kernel, thường là thời gian phục vụ các cuộc gọi hệ thống.


7
time [WHAT-EVER-COMMAND]

real    7m2.444s
user    76m14.607s
sys 2m29.432s

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                24

đồng hồ thật hay đồng hồ treo tường

7m2.444s thật

Trên hệ thống có bộ xử lý 24 lõi, cmd / process này mất hơn 7 phút để hoàn thành. Điều đó bằng cách sử dụng sự song song nhất có thể với tất cả các lõi đã cho.

người sử dụng

người dùng 76m14.607s

Cmd / process đã sử dụng lượng thời gian cpu này. Nói cách khác, trên máy có CPU lõi đơn, người thực và người dùng sẽ gần như bằng nhau, do đó, cùng một lệnh sẽ mất ~ 76 phút để hoàn thành.

hệ thống

sys 2m29.432s

Đây là thời gian mà kernel sử dụng để thực thi tất cả các hoạt động ở mức cơ bản / hệ thống để chạy cmd này, bao gồm chuyển đổi ngữ cảnh, phân bổ tài nguyên, v.v.

Lưu ý: Ví dụ giả định rằng lệnh của bạn sử dụng song song / luồng.

Trang người đàn ông chi tiết: https://linux.die.net/man/1/time


Cho những lần bạn đăng, không phải là khoảng một nửa song song được thực hiện? (tôi chỉ đang làm (user + sys) / realđể đại diện cho điều đó.
dtc
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.