Lệnh Linux hàng đầu của Linux: Chúng tôi, sy, ni, id, wa, hi, si và st (để sử dụng CPU) là gì?


195

Khi tôi phát hành toptrong Linux, tôi nhận được một kết quả tương tự như sau:

Ảnh chụp màn hình hàng đầu

Một trong những dòng có thông tin sử dụng CPU được trình bày như sau:

Cpu(s): 87.3%us,  1.2%sy,  0.0%ni, 27.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mặc dù tôi biết định nghĩa của từng người trong số họ (phía dưới), tôi không hiểu chính xác những nhiệm vụ này là gì.

  • hi - dịch vụ ngắt phần cứng có nghĩa là gì?
  • si - dịch vụ ngắt phần mềm nghĩa là gì?
  • st - họ nói rằng đó là "thời gian CPU trong sự chờ đợi không tự nguyện của CPU ảo trong khi nhà ảo thuật đang phục vụ một bộ xử lý khác (hoặc)% thời gian CPU bị đánh cắp từ một máy ảo".

Nhưng nó thực sự có nghĩa là gì? Ai đó có thể rõ ràng hơn?

Tôi liệt kê tất cả các us, sy, ni, vv, bởi vì nó có thể giúp người khác tìm kiếm giống nhau. Thông tin này không có trong các trang người đàn ông.

us: user cpu time (or) % CPU time spent in user space
sy: system cpu time (or) % CPU time spent in kernel space
ni: user nice cpu time (or) % CPU time spent on low priority processes
id: idle cpu time (or) % CPU time spent idle
wa: io wait cpu time (or) % CPU time spent in wait (on disk)
hi: hardware irq (or) % CPU time spent servicing/handling hardware interrupts
si: software irq (or) % CPU time spent servicing/handling software interrupts
st: steal time - - % CPU time in involuntary wait by virtual cpu while hypervisor is servicing another processor (or) % CPU time stolen from a virtual machine

Câu trả lời:


92

hilà thời gian dành cho việc xử lý các ngắt phần cứng. Ngắt phần cứng được tạo bởi các thiết bị phần cứng (card mạng, bộ điều khiển bàn phím, bộ hẹn giờ bên ngoài, cảm biến phần cứng, ...) khi chúng cần báo hiệu điều gì đó đến CPU (ví dụ dữ liệu đã đến).

Vì những điều này có thể xảy ra rất thường xuyên và vì về cơ bản chúng chặn CPU hiện tại trong khi chúng đang chạy, nên các trình xử lý ngắt phần cứng kernel được viết là nhanh và đơn giản nhất có thể.

Nếu xử lý dài hoặc phức tạp cần phải được thực hiện, những công việc này được hoãn lại sử dụng một cơ chế gọi softirqs. Chúng được lên lịch độc lập, có thể chạy trên bất kỳ CPU nào, thậm chí có thể chạy đồng thời (không có điều nào đúng với trình xử lý ngắt phần cứng).

Phần về IRQ cứng chặn CPU hiện tại và phần về softirqskhả năng chạy ở bất cứ đâu không chính xác, có thể có những hạn chế và một số IRQ cứng có thể làm gián đoạn những người khác.

Ví dụ, ngắt phần cứng "dữ liệu nhận được" từ card mạng có thể chỉ cần lưu trữ thông tin "thẻ ethX cần được bảo trì" ở đâu đó và lên lịch a softirq. Đây softirqsẽ là điều kích hoạt định tuyến gói thực tế.

siđại diện cho thời gian dành cho những softirqs.

Đọc tốt về softirqcơ chế (cũng có một chút lịch sử) là Matthew Wilcox sẽ làm điều đó sau: Softirqs, Nhiệm vụ, Nửa dưới, Hàng đợi nhiệm vụ, Hàng đợi công việc và Bộ đếm thời gian (PDF, 64k).

st, "Đánh cắp thời gian", chỉ có liên quan trong môi trường ảo hóa. Nó đại diện cho thời gian khi CPU thực không có sẵn cho máy ảo hiện tại - nó đã bị "kẻ đánh cắp" khỏi máy ảo đó (để chạy một VM khác hoặc cho nhu cầu riêng của nó).

Các kế toán thời gian CPU tài liệu của IBM có thêm thông tin về ăn cắp thời gian, và kế toán CPU trong môi trường ảo hóa. (Nó nhắm vào phần cứng loại zSeries, nhưng ý tưởng chung là giống nhau cho hầu hết các nền tảng.)


rất rõ ràng. Vì vậy, nếu tôi kết nối một hệ thống âm thanh mới, tai nghe, v.v. (bất kỳ phần cứng nào cho vấn đề đó) thì nó cũng gây ra sự gián đoạn phần cứng, phải không?
it_me

2
Vâng, đó có thể là một cách để chipset âm thanh của bạn báo hiệu rằng "điều gì đó đã xảy ra". Nhưng việc cắm tai nghe có thể được xử lý hoàn toàn bằng chính chip âm thanh (định tuyến lại âm thanh phát ra từ tai nghe chính ra tai nghe của bạn), do đó, nó có thể không tạo ra ngắt cho CPU chính. Nhập một phím trên bàn phím của bạn sẽ tạo ra các ngắt mặc dù (từ thiết bị trung tâm USB của bạn nếu bạn có bàn phím USB). Xem thêm cat /proc/interrupts(người đàn ông man proccho tài liệu về tập tin đó).
Mat

15
  • chúng tôi - Thời gian dành cho không gian người dùng
  • sy - Thời gian dành cho không gian kernel
  • ni - Thời gian dành cho việc chạy các quy trình người dùng (ưu tiên do người dùng xác định)
  • id - Thời gian dành cho các hoạt động nhàn rỗi
  • wa - Thời gian dành cho việc chờ đợi trên các thiết bị ngoại vi IO (ví dụ: đĩa)
  • hi - Thời gian dành cho việc xử lý các thói quen ngắt phần cứng. (Bất cứ khi nào một đơn vị ngoại vi muốn sự chú ý hình thành CPU, nó thực sự kéo một dòng, để báo hiệu cho CPU phục vụ nó)
  • si - Thời gian dành cho việc xử lý các phần mềm gián đoạn thường xuyên. (một đoạn mã, gọi một thói quen ngắt ...)
  • st - Thời gian dành cho sự chờ đợi không tự nguyện của cpu ảo trong khi hypanneror đang phục vụ một bộ xử lý khác (bị đánh cắp từ một máy ảo)

2

Giá trị "st" có thể được giải thích đơn giản bằng cách sử dụng phiên bản T2.micro EC2 từ AWS.

Trong tài liệu AWS, bạn có thể đọc rằng bạn chỉ nhận được 10% hiệu suất cơ bản cho mỗi VCPU. Điều này có nghĩa là nếu bạn có một quy trình tiêu tốn nhiều thời gian cpu, giá trị "st" sẽ ở khoảng 90 vì bạn chỉ được phép sử dụng 10% VCPU. Tổng của các giá trị khác sẽ ở khoảng 10.

Vì vậy, AWS đang sử dụng trình ảo hóa để chỉ cho phép bạn truy cập vào một lượng sức mạnh tính toán nhất định. Nó làm bạn chậm lại do cố ý vì bạn chỉ sử dụng một loại thể hiện cấp thấp.

Tôi hy vọng điều này làm cho mọi thứ dễ hiểu hơn một chút.

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.