ฉันจะทราบได้อย่างไรว่ากระบวนการนั้นเป็น CPU, หน่วยความจำหรือดิสก์ที่ถูกผูกไว้?


42

ฉันจะทราบได้อย่างไรว่ากระบวนการเชื่อมโยงกับ CPU, หน่วยความจำหรือดิสก์?


หากคุณใช้ gnome GUI คุณสามารถเพิ่มแอปเพล็ตการตรวจสอบระบบลงในพาเนลของคุณ ในการตั้งค่าคุณสามารถตั้งค่ารอบที่หายไปเป็น IO-Wait เพื่อแสดงเป็นสีขาวและตั้งค่ากราฟหน่วยความจำ, CPU และดิสก์อ่าน / เขียน ฉันมักจะเปลี่ยนสีกราฟเริ่มต้นเพื่อให้ง่ายต่อการแยกความแตกต่างของหน่วยความจำผู้ใช้ / OS และการอ่าน / เขียนดิสก์ มันไม่ใช่ทางออกที่แท้จริง แต่มีประโยชน์ที่จะมีเครื่องมือทั้งหมดที่กล่าวถึงในคำตอบ
Jeremy

1
@ luis-alvarado ฉันไม่เห็นด้วยที่คำถามนี้ไม่มีประโยชน์แม้ว่าฉันจะเถียงว่าเรื่องนี้อาจเหมาะกับ StackOverflow หรือสิ่งที่คล้ายกัน ฉันมาที่นี่เพื่อหาทางแก้ไข
skeggse

ปัญหาของคำถามตามที่ถามคือมันไม่ได้คำนึงถึงสภาพแวดล้อมของการดำเนินการ วิธีใดที่มีประสิทธิภาพมากที่สุดในการค้นพบคอขวดของส่วนประกอบโฮสต์ของงาน / กระบวนการที่เชื่อมโยงอย่างใกล้ชิดกับรันไทม์, สภาพแวดล้อมการดำเนินการ, ระบบปฏิบัติการโฮสต์, ฮาร์ดแวร์, ฯลฯ ของงานและเครื่องมือใดที่พร้อมใช้งานสำหรับแต่ละองค์ประกอบเพื่อตรวจสอบ บางครั้ง runtimes (เช่น Erlang runtime หรือ JVM ของ IBM) มีเครื่องมือในเชิงลึกสำหรับสิ่งนี้มากกว่าขยายสภาพแวดล้อมทั้งหมดส่วนคนอื่น ๆ ขาดเครื่องมือและทำให้คุณคาดเดาเกี่ยวกับการศึกษาตาม htop / iotop / etc สามารถแสดงให้คุณ
zxq9

คำตอบ:


19

ที่ต้องมีวูดู มันขึ้นอยู่กับ. ตัวอย่าง:

  • หากมีหน่วยความจำและดิสก์ไม่เพียงพอดูเหมือนจะไม่ว่างอาจเป็น CPU-bound ดูการใช้งาน CPU และหากมีขอบที่ 100% จะเป็นการ จำกัด CPU หากไม่มีคอขวดเทียมในการใช้งาน เช่นใน CPU แบบดูอัลคอร์กระบวนการแบบเธรดเดี่ยวจะไม่เกินการใช้งาน CPU 50%

  • หาก CPU และหน่วยความจำพร้อมใช้งาน แต่ดิสก์ไม่ว่างมากหรือ IO latency ดูเหมือนสูงอาจเป็นไปได้ว่า IO ถูกผูกไว้ ดูว่าช่วยเพิ่มดิสก์ (RAID?) เพิ่มเติมได้หรือไม่

  • ไม่มีข้อใดถูก? ตรวจสอบหน่วยความจำที่มีอยู่

  • หน่วยความจำเพียงพอหรือไม่ อาจมีคอขวดเทียมในกระบวนการเองนั่นคือบางคนอาจลืมที่จะลบการนอนหลับ (1)? Naah มันไม่ค่อยง่ายเท่าไหร่ ;)

มีเหตุผลว่าทำไมเราจึงมีห้องปฏิบัติการทั้งหมดสำหรับวิศวกรด้านประสิทธิภาพใน บริษัท ส่วนใหญ่ที่เกี่ยวข้องกับผลิตภัณฑ์ที่ไวต่อประสิทธิภาพ!

ใช้เครื่องมือเช่น sar, vmstat, iostat, oprofile, lockstat, dtrace, เครื่องมือตรวจสอบสถานะ perf แบบเฉพาะเจาะจงของผลิตภัณฑ์ ฯลฯ เพื่อแก้ไขข้อบกพร่องของปัญหา perf


2
มีเครื่องมือที่เชื่อมโยงสิ่งเหล่านี้เข้าด้วยกันหรือไม่?
ssanj

มักจะไม่ แต่ถ้า dtrace พร้อมใช้งานในระบบของคุณ (Solaris / FreeBSD / Mac OS X?) คุณอาจได้รับเพียงแค่ใช้มัน
Sudhanshu

ฉันเพิ่งจำได้ว่ามี Systemtap บน linux (คล้ายกับ dtrace) ยกเว้นฉันไม่แน่ใจเกี่ยวกับวุฒิภาวะของเครื่องมือ
Sudhanshu

vmstat มีประโยชน์
เจมส์

12

ตรวจสอบiotopสามารถเป็นประโยชน์


โดยค่าเริ่มต้นไอโซโทปจะไม่ได้รับการติดตั้งเป็นสีแดง
โมนา Jalal

9

เครื่องมือที่สามารถเป็นประโยชน์สำหรับเวลาจริงการตรวจสอบตัวเลขสถิติกระบวนการ (หน่วยความจำ, การใช้งาน CPU, I / O, ฯลฯ ) เป็นhtop มันไม่ได้แทนที่เครื่องมือพิเศษอื่น ๆ ที่มีชื่อว่า Sudhanshu แต่อาจเป็นการเริ่มต้นที่ดี


4

เช่นเดียวกับเครื่องมืออื่น ๆ ที่กล่าวถึงให้เรียกใช้ps l PIDแทรกรหัสกระบวนการที่เกี่ยวข้องหรือดูที่คอลัมน์ STATE และ WCHAN ที่ด้านบนหรือด้านบน

หากอยู่ในสถานะ D (สำหรับดิสก์) แสดงว่าเป็นไฟล์ IO อาจเป็นเพราะมันกำลังอ่านไฟล์จำนวนมากหรือเพราะใช้หน่วยความจำจำนวนมากและสลับเปลี่ยน คอลัมน์ WCHAN จะบอกคุณว่าฟังก์ชั่นเคอร์เนลอยู่ภายในอะไร googling สำหรับพวกเขาหรือถามที่นี่อาจให้ข้อบ่งชี้ว่าพวกเขาหมายถึงอะไร

หากอยู่ในสถานะ R (เรียกใช้) แสดงว่ากำลังใช้ CPU ในพื้นที่ของผู้ใช้หรือกล่าวอีกนัยหนึ่งว่า CPU มีข้อ จำกัด ในขณะนั้น

หากอยู่ในสถานะ S (sleep) แสดงว่าอยู่ในการเรียกของระบบซึ่งอาจหมายถึงว่ากำลังหลับจริงหรือกำลังทำอะไรบางอย่างเช่นรอการรับส่งข้อมูลเครือข่ายหรือล็อค อีกครั้งการดู wchan ที่เฉพาะเจาะจงจะบอกคุณมากกว่านี้

ดูเพิ่มเติม"ช่องสัญญาณรอ" ของกระบวนการคืออะไร


2

รันtopและดูที่บรรทัดการใช้ cpu ผู้ใช้% สูงบ่งชี้ว่ามันถูกผูกไว้กับ cpu % การรอสูงบ่งบอกว่ามันถูกผูกไว้กับ IO

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