ฉันจะทราบได้อย่างไรว่ากระบวนการเชื่อมโยงกับ CPU, หน่วยความจำหรือดิสก์?
ฉันจะทราบได้อย่างไรว่ากระบวนการเชื่อมโยงกับ CPU, หน่วยความจำหรือดิสก์?
คำตอบ:
ที่ต้องมีวูดู มันขึ้นอยู่กับ. ตัวอย่าง:
หากมีหน่วยความจำและดิสก์ไม่เพียงพอดูเหมือนจะไม่ว่างอาจเป็น CPU-bound ดูการใช้งาน CPU และหากมีขอบที่ 100% จะเป็นการ จำกัด CPU หากไม่มีคอขวดเทียมในการใช้งาน เช่นใน CPU แบบดูอัลคอร์กระบวนการแบบเธรดเดี่ยวจะไม่เกินการใช้งาน CPU 50%
หาก CPU และหน่วยความจำพร้อมใช้งาน แต่ดิสก์ไม่ว่างมากหรือ IO latency ดูเหมือนสูงอาจเป็นไปได้ว่า IO ถูกผูกไว้ ดูว่าช่วยเพิ่มดิสก์ (RAID?) เพิ่มเติมได้หรือไม่
ไม่มีข้อใดถูก? ตรวจสอบหน่วยความจำที่มีอยู่
หน่วยความจำเพียงพอหรือไม่ อาจมีคอขวดเทียมในกระบวนการเองนั่นคือบางคนอาจลืมที่จะลบการนอนหลับ (1)? Naah มันไม่ค่อยง่ายเท่าไหร่ ;)
มีเหตุผลว่าทำไมเราจึงมีห้องปฏิบัติการทั้งหมดสำหรับวิศวกรด้านประสิทธิภาพใน บริษัท ส่วนใหญ่ที่เกี่ยวข้องกับผลิตภัณฑ์ที่ไวต่อประสิทธิภาพ!
ใช้เครื่องมือเช่น sar, vmstat, iostat, oprofile, lockstat, dtrace, เครื่องมือตรวจสอบสถานะ perf แบบเฉพาะเจาะจงของผลิตภัณฑ์ ฯลฯ เพื่อแก้ไขข้อบกพร่องของปัญหา perf
เครื่องมือที่สามารถเป็นประโยชน์สำหรับเวลาจริงการตรวจสอบตัวเลขสถิติกระบวนการ (หน่วยความจำ, การใช้งาน CPU, I / O, ฯลฯ ) เป็นhtop มันไม่ได้แทนที่เครื่องมือพิเศษอื่น ๆ ที่มีชื่อว่า Sudhanshu แต่อาจเป็นการเริ่มต้นที่ดี
เช่นเดียวกับเครื่องมืออื่น ๆ ที่กล่าวถึงให้เรียกใช้ps l PID
แทรกรหัสกระบวนการที่เกี่ยวข้องหรือดูที่คอลัมน์ STATE และ WCHAN ที่ด้านบนหรือด้านบน
หากอยู่ในสถานะ D (สำหรับดิสก์) แสดงว่าเป็นไฟล์ IO อาจเป็นเพราะมันกำลังอ่านไฟล์จำนวนมากหรือเพราะใช้หน่วยความจำจำนวนมากและสลับเปลี่ยน คอลัมน์ WCHAN จะบอกคุณว่าฟังก์ชั่นเคอร์เนลอยู่ภายในอะไร googling สำหรับพวกเขาหรือถามที่นี่อาจให้ข้อบ่งชี้ว่าพวกเขาหมายถึงอะไร
หากอยู่ในสถานะ R (เรียกใช้) แสดงว่ากำลังใช้ CPU ในพื้นที่ของผู้ใช้หรือกล่าวอีกนัยหนึ่งว่า CPU มีข้อ จำกัด ในขณะนั้น
หากอยู่ในสถานะ S (sleep) แสดงว่าอยู่ในการเรียกของระบบซึ่งอาจหมายถึงว่ากำลังหลับจริงหรือกำลังทำอะไรบางอย่างเช่นรอการรับส่งข้อมูลเครือข่ายหรือล็อค อีกครั้งการดู wchan ที่เฉพาะเจาะจงจะบอกคุณมากกว่านี้
ดูเพิ่มเติม"ช่องสัญญาณรอ" ของกระบวนการคืออะไร
รันtop
และดูที่บรรทัดการใช้ cpu ผู้ใช้% สูงบ่งชี้ว่ามันถูกผูกไว้กับ cpu % การรอสูงบ่งบอกว่ามันถูกผูกไว้กับ IO