นี่เป็นคำถามที่ยอดเยี่ยมอย่างแท้จริงและเป็นความอัปยศที่ไม่มีความรักมากขึ้น!
ทฤษฎีพื้นฐานของการวิเคราะห์ของฉันคอขวดคือการรักษาระบบเป็นกล่องที่มี 4 ประเภทของทรัพยากร จำกัด : หน่วยประมวลผลหน่วยความจำดิสก์และเครือข่าย ดังนั้นฉันต้องการได้รับหมายเลขพื้นฐานสำหรับแต่ละเหล่านี้เพื่อตรวจสอบสุขภาพของกล่อง ฉันต้องการตัวเลขที่ตีความได้ง่าย: สูงไม่ดีต่ำมากดี 0 เป็นสิ่งที่ดีที่สุดแม้ว่าจะไม่สามารถทำได้อย่างสมบูรณ์แบบ (หลังจากทั้งหมดเราซื้อคอมพิวเตอร์เพื่อทำงานใช่มั้ย) เมื่อฉันเห็นว่าทรัพยากรสี่อย่างใดเป็นคอขวดหลักฉันสามารถดำเนินการตรวจสอบว่าโปรแกรมหรือกระบวนการใดกำลังกินทรัพยากรทั้งหมดและทำการตัดสินใจอย่างมีความรู้ว่าฉันต้องการเพิ่มทรัพยากรนั้นหรือปรับโปรแกรม / กระบวนการให้ใช้ ทรัพยากรน้อย
ฉันจะจัดรูปแบบตัวนับประสิทธิภาพหลักที่ฉันใช้จากบทความนี้เป็นแบบสอบถามแบบ WMIC เนื่องจากไม่จำเป็นต้องใช้สคริปต์ (แม้ว่าจะเป็นไปได้อย่างแน่นอน!) คุณสามารถป้อนคำค้นหาแต่ละข้อเหล่านี้ลงในคอนโซล cmd ได้โดยตรง:
wmic path Win32_PerfFormattedData_PerfOS_System get ProcessorQueueLength
เหนือขึ้นไปเป็นตัวประมวลผลคิวยาว สิ่งนี้บอกจำนวนเธรดที่รออยู่ในคิวที่ CPU จะจัดการ ตัวเลขสูงไม่ดีตัวเลขต่ำดี โดยทั่วไปฉันคิดว่าค่า <10 เป็นระบบที่ดีต่อสุขภาพ
wmic path Win32_PerfFormattedData_PerfOS_Memory get PagesInputPerSec
ด้านบนคือหน่วยความจำหน้าที่นำเข้าต่อวินาทีอัตราการอ่านหน้าจากดิสก์เพื่อแก้ไขข้อบกพร่องของหน้ากระดาษอย่างหนัก ความผิดพลาดของหน้าฮาร์ดเกิดขึ้นเมื่อกระบวนการอ้างถึงหน้าในหน่วยความจำเสมือนที่ไม่ได้อยู่ในหน่วยความจำกายภาพและจะต้องดึงมาจากดิสก์ ตัวนับนี้ทำงานได้ดีที่สุดในมุมมองกราฟของ Perfmon บนคอมพิวเตอร์ที่มีสุขภาพดี (ไม่ใช่คอขวด) คุณจะเห็นหนามแหลมเป็นครั้งคราวเนื่องจากข้อมูลถูกอ่านจากดิสก์ไปยัง RAM ยิ่งมีหนามแหลมมากเท่าไหร่คุณก็ยิ่งเห็นมากขึ้นและยิ่งมีหน่วยความจำที่ จำกัด มากขึ้น หากระบบยังคงอยู่ที่ค่าที่ไม่ใช่ศูนย์เป็นระยะเวลานานกว่าพูดห้าวินาทีคุณอาจมีระบบคอขวดหน่วยความจำ
wmic path Win32_PerfFormattedData_PerfDisk_PhysicalDisk get AvgDiskQueueLength, name
เหนือขึ้นไปเป็นPhysicalDisk เฉลี่ยดิสก์คิวยาว ฉันคิดว่านี่เป็นตัวบ่งชี้สำคัญของความสมบูรณ์ของระบบเนื่องจากคอขวดของหน่วยความจำจะชะงักลงดิสก์เนื่องจากมีการสลับไฟล์เพจมากเกินไปและมักจะผลักดันการใช้งาน CPU เช่นกัน มันจะแสดงรายการสำหรับดิสก์ที่เมานต์แต่ละตัวรวมถึงดิสก์ทั้งหมด ดิสก์เดียวที่มีประสิทธิภาพดีจะมีค่านี้ที่ 2 หรือต่ำกว่า สำหรับอาร์เรย์ให้แบ่งจำนวนแกนหมุนตามความยาวของคิว (เช่น: 4 แกนหมุนในอาร์เรย์หารด้วยความยาวคิว 8 = 2 ซึ่งหมายความว่าอาร์เรย์ทำงานได้ดี)
wmic path Win32_PerfFormattedData_Tcpip_NetworkInterface get OutputQueueLength, PacketsReceivedErrors, Name, currentbandwidth
และในที่สุดข้างต้นเรามีประสิทธิภาพ NIC โดยเฉพาะเครือข่ายอินเตอร์เฟซเอาท์พุทคิวยาวและข้อผิดพลาดข้อมูลที่ได้รับ ตัวนับสองตัวนี้แจ้งให้เราทราบว่ากำลังรอส่งแพ็กเก็ตจำนวนเท่าใดและแพ็คเก็ตขาเข้าจำนวนมากทำให้เกิดข้อผิดพลาดซึ่งอาจส่งผลให้เกิดการส่งซ้ำ เราต้องการให้ตัวเลขทั้งสองอยู่ที่ศูนย์ ในแบบสอบถามนี้ฉันยังได้รับแบนด์วิดธ์ปัจจุบันของ NIC ซึ่งเป็นข้อมูลที่มีประโยชน์
เมื่อฉันทราบว่าทรัพยากรใดมีการใช้มากเกินไปฉันมักจะพึ่งพาProcess Explorerหรือวัตถุกระบวนการของ Perfmon เพื่อค้นหาว่ากระบวนการใดเป็นหมูทรัพยากร