it-swarm-vi.com

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

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

Screenshot of top

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 - phục vụ ngắt phần cứng 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 chờ đợi không tự nguyện bởi 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á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ả us, sy, ni, v.v., vì nó có thể giúp những người khác tìm kiếm tương tự. 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
206
its_me

hi là thời gian 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 quá trình xử lý dài hoặc phức tạp cần được thực hiện, các tác vụ này được hoãn lại bằng cách sử dụng lệnh gọi cơ chế 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ề softirqs có thể 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ừ thẻ 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 softirq. softirq sẽ là thứ kích hoạt định tuyến gói thực tế.

si biểu thị thời gian dành cho những softirqs này.

Đọc tốt về cơ chế softirq (cũng có một chút lịch sử) là của Matthew Wilcox Tôi sẽ làm 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ị "đánh cắp" từ đó VM bởi nhà ảo thuật (để chạy VM khác hoặc cho nhu cầu riêng của nó).

Tài liệu kế toán thời gian CP từ IBM có thêm thông tin về việc đánh 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.)

96
Mat
  • 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 IO thiết bị ngoại vi (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 thói quen ngắt phần mềm. (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)
20
Simon Rigét

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 hiệu suất cơ bản 10% 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.

2
draufunddran