ค้นหาเว็บไซต์

Cpustat - ตรวจสอบการใช้งาน CPU โดยการรันกระบวนการใน Linux


Cpustat คือโปรแกรมวัดประสิทธิภาพของระบบที่มีประสิทธิภาพสำหรับ Linux ซึ่งเขียนโดยใช้ภาษาโปรแกรม Go โดยจะพยายามเปิดเผยการใช้งาน CPU และความอิ่มตัวของสีในวิธีที่มีประสิทธิภาพ โดยใช้วิธี Utilization Saturation and Errors (USE) (วิธีการสำหรับการวิเคราะห์ประสิทธิภาพของระบบใดๆ)

โดยแยกตัวอย่างความถี่ที่สูงกว่าของทุกกระบวนการที่กำลังดำเนินการบนระบบ จากนั้นสรุปตัวอย่างเหล่านี้ด้วยความถี่ที่ต่ำกว่า ตัวอย่างเช่น สามารถวัดทุกกระบวนการทุกๆ 200ms และสรุปตัวอย่างเหล่านี้ทุกๆ 5 วินาที รวมถึงค่าต่ำสุด/เฉลี่ย/สูงสุดสำหรับเมตริกบางตัว

การอ่านที่แนะนำ: เครื่องมือบรรทัดคำสั่ง 20 รายการเพื่อตรวจสอบประสิทธิภาพของ Linux

Cpustat ส่งข้อมูลออกมาในสองวิธีที่เป็นไปได้: รายการข้อความล้วนของช่วงเวลาสรุป และแดชบอร์ดแบบเลื่อนที่มีสีสันของแต่ละตัวอย่าง

วิธีการติดตั้ง Cpustat ใน Linux

คุณต้องติดตั้ง Go (GoLang) บนระบบ Linux ของคุณเพื่อใช้งาน cpustat คลิกลิงก์ด้านล่างเพื่อทำตามขั้นตอนการติดตั้ง GoLang หากคุณไม่มี มันติดตั้ง:

  1. ติดตั้ง GoLang (Go Programming Language) ใน Linux

เมื่อคุณติดตั้ง Go แล้ว ให้พิมพ์คำสั่ง go get ด้านล่างเพื่อติดตั้ง คำสั่งนี้จะติดตั้งไบนารี cpustat ใน GOBIN ของคุณ ตัวแปร:

go get github.com/uber-common/cpustat

วิธีใช้ Cpustat ใน Linux

เมื่อกระบวนการติดตั้งเสร็จสมบูรณ์ ให้รัน cpustat ดังต่อไปนี้ด้วยสิทธิ์รูทโดยใช้คำสั่ง sudo นั่นคือหากคุณควบคุมระบบในฐานะผู้ใช้ที่ไม่ใช่รูท ไม่เช่นนั้น คุณจะได้รับข้อผิดพลาดดังที่แสดง:

$GOBIN/cpustat
This program uses the netlink taskstats interface, so it must be run as root.

หมายเหตุ: หากต้องการเรียกใช้ cpustat รวมถึงโปรแกรม Go อื่น ๆ ทั้งหมดที่คุณได้ติดตั้งในระบบของคุณเช่นเดียวกับคำสั่งอื่น ๆ ให้รวม GOBIN ตัวแปรในตัวแปรสภาพแวดล้อม PATH ของคุณ เปิดลิงก์ด้านล่างเพื่อเรียนรู้วิธีตั้งค่าตัวแปร PATH ใน Linux

  1. เรียนรู้วิธีการตั้งค่าตัวแปร ` PATH ของคุณอย่างถาวรใน Linux

นี่คือวิธีการทำงานของ cpustat; ไดเร็กทอรี /proc ถูกสอบถามเพื่อรับรายการ ID กระบวนการปัจจุบันสำหรับทุกช่วงเวลา และ:

  • สำหรับแต่ละ PID ให้อ่าน /proc/pid/stat จากนั้นคำนวณความแตกต่างจากตัวอย่างก่อนหน้า
  • ในกรณีที่เป็น PID ใหม่ โปรดอ่าน /proc/pid/cmdline
  • สำหรับแต่ละ PID ให้ส่งข้อความ netlink เพื่อดึงข้อมูลสถิติงาน คำนวณความแตกต่างจากตัวอย่างก่อนหน้า
  • ดึงข้อมูล /proc/stat เพื่อรับสถิติระบบโดยรวม

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

เมื่อทำงานโดยไม่มีอาร์กิวเมนต์ใดๆ cpustat จะแสดงสิ่งต่อไปนี้ตามค่าเริ่มต้น: ช่วงเวลาการสุ่มตัวอย่าง: 200ms ช่วงเวลาสรุป: 2 วินาที (10 ตัวอย่าง) แสดง 10 อันดับแรก procs ตัวกรองผู้ใช้: ทั้งหมด ตัวกรอง pid: ทั้งหมดเป็น แสดงในภาพหน้าจอด้านล่าง:

sudo $GOBIN/cpustat 

จากผลลัพธ์ข้างต้น ต่อไปนี้คือความหมายของเมทริกสรุปทั้งระบบที่แสดงก่อนฟิลด์:

  • usr – เวลารันโหมดผู้ใช้ต่ำสุด/เฉลี่ย/สูงสุดเป็นเปอร์เซ็นต์ของ CPU
  • sys – เวลารันโหมดระบบต่ำสุด/เฉลี่ย/สูงสุดเป็นเปอร์เซ็นต์ของ CPU
  • ดี – โหมดผู้ใช้ต่ำสุด/เฉลี่ย/สูงสุด เวลารันที่มีลำดับความสำคัญต่ำคิดเป็นเปอร์เซ็นต์ของ CPU
  • ไม่ได้ใช้งาน – เวลารันโหมดผู้ใช้ต่ำสุด/เฉลี่ย/สูงสุดเป็นเปอร์เซ็นต์ของ CPU
  • iowait – เวลาหน่วงต่ำสุด/เฉลี่ย/สูงสุด กำลังรอดิสก์ IO
  • ตัด – จำนวนขั้นต่ำ/เฉลี่ย/สูงสุดของกระบวนการในสถานะที่รันได้ (เหมือนกับค่าเฉลี่ยโหลด)
  • pblock – จำนวนกระบวนการต่ำสุด/เฉลี่ย/สูงสุดที่ถูกบล็อกบนดิสก์ IO
  • pstart – จำนวนกระบวนการ/เธรดที่เริ่มต้นในช่วงเวลาสรุปนี้

จากผลลัพธ์ด้านบน สำหรับกระบวนการที่กำหนด คอลัมน์ต่างๆ หมายถึง:

  • ชื่อ – ชื่อกระบวนการทั่วไปจาก /proc/pid/stat หรือ /proc/pid/cmdline
  • pid – รหัสกระบวนการหรือที่เรียกว่า “tgid”
  • นาที – ตัวอย่างต่ำสุดของเวลาผู้ใช้+ระบบสำหรับ pid วัดจาก /proc/pid/stat สเกลคือเปอร์เซ็นต์ของ CPU
  • สูงสุด – ตัวอย่างสูงสุดของเวลาผู้ใช้+ระบบสำหรับ pid นี้ วัดจาก /proc/pid/stat เช่นกัน
  • usr – เวลาผู้ใช้เฉลี่ยสำหรับ pid ในช่วงเวลาสรุป วัดจาก /proc/pid/stat
  • sys – เวลาของระบบเฉลี่ยสำหรับ pid ในช่วงเวลาสรุป วัดจาก /proc/pid/stat
  • ดี – ระบุค่า “ดี” ในปัจจุบันสำหรับกระบวนการ วัดจาก /proc/pid/stat สูงกว่าหมายถึง "ดีกว่า"
  • runq – จับเวลากระบวนการและเธรดทั้งหมดที่ใช้ในการรันได้แต่กำลังรอที่จะรัน โดยวัดจากสถิติงานผ่าน netlink สเกลคือเปอร์เซ็นต์ของ CPU
  • iow – จับเวลากระบวนการและเธรดทั้งหมดที่ถูกบล็อกโดยดิสก์ IO โดยวัดจากสถิติงานผ่าน netlink สเกลคือเปอร์เซ็นต์ของ CPU โดยเฉลี่ยในช่วงเวลาสรุป
  • สลับ – จับเวลากระบวนการและเธรดทั้งหมดที่ใช้ในการรอการสลับ โดยวัดจากสถิติงานผ่าน netlink สเกลคือเปอร์เซ็นต์ของ CPU โดยเฉลี่ยในช่วงเวลาสรุป
  • vcx และ icx – จำนวนรวมของการสลับบริบทโดยสมัครใจโดยกระบวนการและเธรดทั้งหมดในช่วงเวลาสรุป วัดจากสถิติงานผ่าน netlink
  • rss – ค่า RSS ปัจจุบันดึงมาจาก /proc/pid/stat คือจำนวนหน่วยความจำที่กระบวนการนี้ใช้
  • ctime – ผลรวมของเวลา CPU ของผู้ใช้+sys ที่ใช้โดยรอลูกที่ออกในระหว่างช่วงเวลาสรุปนี้ วัดจาก /proc/pid/stat

โปรดทราบว่ากระบวนการย่อยที่รันระยะยาวมักจะสร้างความสับสนให้กับการวัดนี้ เนื่องจากเวลาจะถูกรายงานเฉพาะเมื่อกระบวนการย่อยออกเท่านั้น อย่างไรก็ตาม สิ่งนี้มีประโยชน์สำหรับการวัดผลกระทบของงาน cron บ่อยครั้งและการตรวจสอบสภาพที่กระบวนการย่อยจำนวนมากมักใช้เวลา CPU

  • thrd – จำนวนเธรดเมื่อสิ้นสุดช่วงเวลาสรุป วัดจาก /proc/pid/stat
  • sam – จำนวนตัวอย่างสำหรับกระบวนการนี้ที่รวมอยู่ในช่วงสรุป กระบวนการที่เพิ่งเริ่มต้นหรือออกอาจมองเห็นได้สำหรับตัวอย่างน้อยกว่าช่วงเวลาสรุป

คำสั่งต่อไปนี้แสดงกระบวนการผู้ใช้รูท 10 อันดับแรกที่ทำงานบนระบบ:

sudo $GOBIN/cpustat -u root

หากต้องการแสดงเอาต์พุตในโหมดเทอร์มินัลแฟนซี ให้ใช้แฟล็ก -t ดังต่อไปนี้:

sudo $GOBIN/cpustat -u roo -t

หากต้องการดูกระบวนการจำนวนสูงสุด x (ค่าเริ่มต้นคือ 10) คุณสามารถใช้แฟล็ก -n คำสั่งต่อไปนี้จะแสดงกระบวนการ Linux 20 อันดับแรกที่ทำงานบนระบบ:

sudo $GOBIN/cpustat -n 20 

คุณยังสามารถเขียนโปรไฟล์ CPU ลงในไฟล์ได้โดยใช้ตัวเลือก -cpuprofile ดังต่อไปนี้ จากนั้นใช้คำสั่ง cat เพื่อดูไฟล์:

sudo $GOBIN/cpustat -cpuprofile cpuprof.txt
cat cpuprof.txt

หากต้องการแสดงข้อมูลวิธีใช้ ให้ใช้แฟล็ก -h ดังต่อไปนี้:

sudo $GOBIN/cpustat -h

ค้นหาข้อมูลเพิ่มเติมจาก cpustat Github Repository: https://github.com/uber-common/cpustat

นั่นคือทั้งหมด! ในบทความนี้ เราได้แสดงวิธีการติดตั้งและใช้ cpustat ซึ่งเป็นเครื่องมือวัดประสิทธิภาพของระบบที่มีประโยชน์สำหรับ Linux แบ่งปันความคิดของคุณกับเราผ่านทางส่วนความคิดเห็นด้านล่าง