คำสั่ง Linux“ top”: เราคืออะไร, sy, ni, id, wa, hi, si และ st (สำหรับการใช้งาน CPU)?


195

เมื่อฉันออกtopใน Linux ฉันได้รับผลลัพธ์เช่นนี้:

สกรีนช็อตของด้านบน

หนึ่งในบรรทัดมีข้อมูลการใช้งาน CPU แสดงดังนี้:

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

ในขณะที่ฉันรู้คำจำกัดความของแต่ละคน (ด้านล่างสุด) ฉันไม่เข้าใจว่างานเหล่านี้มีความหมายอย่างไร

  • hi - การขัดจังหวะการให้บริการของฮาร์ดแวร์หมายถึงอะไร
  • si - การหยุดให้บริการของซอฟต์แวร์หมายความว่าอย่างไร
  • st - พวกเขาบอกว่าเป็น "เวลา CPU ในการรอคอย CPU เสมือนโดยไม่สมัครใจขณะที่ hypervisor กำลังให้บริการตัวประมวลผลอื่น (หรือ)% CPU เวลาที่ถูกขโมยจากเครื่องเสมือน"

แต่จริงๆแล้วมันหมายถึงอะไร? บางคนชัดเจนกว่านี้ได้ไหม

ฉันแสดงทั้งหมดus, sy, niฯลฯ เพราะมันจะช่วยให้คนอื่น ๆ ค้นหาสำหรับเดียวกัน ข้อมูลนี้ไม่ได้อยู่ในหน้าคน

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

คำตอบ:


92

hiเป็นเวลาที่ใช้ในการประมวลผลการขัดจังหวะฮาร์ดแวร์ การขัดจังหวะฮาร์ดแวร์ถูกสร้างขึ้นโดยอุปกรณ์ฮาร์ดแวร์ (การ์ดเครือข่ายตัวควบคุมแป้นพิมพ์ตัวจับเวลาภายนอกเซ็นเซอร์ฮาร์ดแวร์ ... ) เมื่อพวกเขาต้องการส่งสัญญาณบางอย่างไปยัง CPU (เช่นข้อมูลมาถึงแล้ว)

เนื่องจากสิ่งเหล่านี้สามารถเกิดขึ้นได้บ่อยมากและเนื่องจากพวกมันบล็อก CPU ปัจจุบันในขณะที่กำลังทำงานตัวจัดการการขัดจังหวะของฮาร์ดแวร์เคอร์เนลจะถูกเขียนให้รวดเร็วและง่ายที่สุด

หากการประมวลผลยาวหรือซับซ้อนที่ต้องทำ, softirqsงานเหล่านี้กำลังรอการตัดบัญชีโดยใช้กลไกการโทร สิ่งเหล่านี้ถูกกำหนดเวลาอย่างอิสระสามารถทำงานบน CPU ใด ๆ หรือแม้แต่ทำงานพร้อมกัน (ไม่มีสิ่งใดที่เป็นจริงของตัวจัดการการขัดจังหวะฮาร์ดแวร์)

ส่วนเกี่ยวกับ IRQ ที่ยากบล็อก CPU ปัจจุบันและส่วนที่เกี่ยวกับsoftirqsความสามารถในการทำงานทุกที่ไม่ถูกต้องแน่นอนอาจมีข้อ จำกัด และ IRQ ที่ยากบางตัวสามารถขัดจังหวะผู้อื่นได้

เป็นตัวอย่างที่เป็น "ข้อมูลที่ได้รับ" การขัดจังหวะฮาร์ดแวร์จากการ์ดเครือข่ายก็สามารถจัดเก็บข้อมูล "ethX บัตรจะต้องมีการให้บริการ" softirqบางและกำหนดเวลา softirqจะเป็นสิ่งที่ก่อให้เกิดการกำหนดเส้นทางแพ็คเก็ตที่เกิดขึ้นจริง

sisoftirqsแสดงเวลาที่ใช้ในการเหล่านี้

การอ่านที่ดีเกี่ยวกับsoftirqกลไก (ที่มีประวัติมาบ้าง) ก็คือ Matthew Wilcox's I'm Do It Later: Softirqs, Tasklets, Halves ล่าง, Queues Task, Queues Work และ Timers (PDF, 64k)

st, "steal time" มีความเกี่ยวข้องในสภาพแวดล้อมเสมือน มันหมายถึงเวลาที่ CPU จริงไม่สามารถใช้ได้กับเครื่องเสมือนปัจจุบัน - มันถูก "ขโมย" จาก VM นั้นโดย hypervisor (เพื่อเรียกใช้ VM อื่นหรือสำหรับความต้องการของตัวเอง)

CPU เวลาบัญชีเอกสารจาก IBM มีข้อมูลเพิ่มเติมเกี่ยวขโมยเวลาและการบัญชีของ CPU ในสภาพแวดล้อมเสมือนจริง (มันมุ่งเป้าไปที่ฮาร์ดแวร์ประเภท zSeries แต่ความคิดทั่วไปนั้นเหมือนกันสำหรับแพลตฟอร์มส่วนใหญ่)


ชัดเจนมาก ดังนั้นถ้าฉันเชื่อมต่อระบบเสียงใหม่ชุดหูฟัง ฯลฯ (ฮาร์ดแวร์ใด ๆ สำหรับเรื่องนั้น) มันก็ทำให้ฮาร์ดแวร์ขัดจังหวะด้วยใช่ไหม
its_me

2
ใช่นั่นอาจเป็นวิธีที่ชิปเซ็ตเสียงของคุณจะส่งสัญญาณว่า "มีบางอย่างเกิดขึ้น" แต่การเสียบชุดหูฟังอาจได้รับการจัดการทั้งหมดโดยชิพเสียงเอง (เช่นการกำหนดเส้นทางเสียงออกจาก main out ไปยังเฮดเซ็ทของคุณ) ดังนั้นจึงอาจไม่สร้างการขัดจังหวะกับซีพียูหลัก การพิมพ์คีย์บนคีย์บอร์ดของคุณจะสร้างการขัดจังหวะ (จากอุปกรณ์ฮับ USB ของคุณหากคุณมีแป้นพิมพ์ USB) ดูเพิ่มเติมcat /proc/interrupts(คนman procสำหรับเอกสารเกี่ยวกับไฟล์นั้น)
Mat

15
  • เรา - เวลาที่ใช้ในพื้นที่ของผู้ใช้
  • sy - เวลาที่ใช้ในพื้นที่เคอร์เนล
  • พรรณี - เวลาที่ใช้ในการดำเนินการกระบวนการผู้ใช้ที่ถูกจัดลำดับความสำคัญ
  • id - เวลาที่ใช้ในการดำเนินการว่าง
  • wa - เวลาที่ใช้ในการรออุปกรณ์ต่อพ่วง IO (เช่นดิสก์)
  • hi - เวลาที่ใช้ในการจัดการรูทีนการขัดจังหวะฮาร์ดแวร์ (เมื่อใดก็ตามที่อุปกรณ์ต่อพ่วงต้องการความสนใจจากซีพียูมันจะดึงสายเพื่อส่งสัญญาณให้ CPU เพื่อรับบริการ)
  • si - เวลาที่ใช้ในการจัดการรูทีนซอฟต์แวร์ขัดจังหวะ (ชิ้นส่วนของรหัสเรียกรูทีนการขัดจังหวะ ... )
  • st - เวลาที่ใช้ในการรอโดยไม่ตั้งใจของ cpu เสมือนในขณะที่ hypervisor กำลังให้บริการตัวประมวลผลอื่น (ถูกขโมยจากเครื่องเสมือน)

2

สามารถอธิบายค่า "st" ได้ง่ายๆโดยใช้อินสแตนซ์ T2.micro EC2 จาก AWS

ในเอกสาร AWSคุณสามารถอ่านได้ว่าคุณได้รับประสิทธิภาพพื้นฐานเพียง 10% ต่อ VCPU ซึ่งหมายความว่าหากคุณมีกระบวนการที่ใช้เวลา cpu มากค่า "st" จะยังคงอยู่ประมาณ 90 เนื่องจากคุณได้รับอนุญาตให้ใช้ 10% ของ VCPU เท่านั้น ผลรวมของค่าอื่น ๆ จะอยู่ที่ประมาณ 10

ดังนั้น AWS จึงใช้ไฮเปอร์ไวเซอร์เพื่ออนุญาตให้คุณเข้าถึงพลังการคำนวณจำนวนหนึ่งเท่านั้น มันทำให้คุณช้าลงโดยเจตนาเนื่องจากคุณใช้อินสแตนซ์ประเภทชั้นต่ำเท่านั้น

ฉันหวังว่านี่จะทำให้เข้าใจง่ายขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.