ตัวนับ Perfmon“% ตัวประมวลผลเวลา” สามารถนับได้อย่างไรเกิน 100%


9

ตัวนับProcess(sqlservr)\% Processor Timeกำลังโฮเวอร์ประมาณ 300% บนหนึ่งในเซิร์ฟเวอร์ฐานข้อมูลของฉัน ตัวนับนี้แสดงถึงเปอร์เซ็นต์ของเวลาทั้งหมดที่ SQL Server ใช้ในการทำงานบน CPU (โหมดผู้ใช้ + โหมดสิทธิ์) หนังสือSql Server 2008 Internals และการแก้ไขปัญหาบอกว่าอะไรที่มากกว่า 80% เป็นปัญหา

เป็นไปได้อย่างไรที่ตัวนับนั้นจะเกิน 100%

คำตอบ:


21

มีสองเคาน์เตอร์ที่มีชื่อเดียวกัน:

Process\% Processor Time: ผลรวมของเวลาตัวประมวลผลในโปรเซสเซอร์แต่ละตัว

Processor(_Total)\% Processor Time: ยอดรวมสำหรับโปรเซสเซอร์ทั้งหมด

คำถามของคุณระบุว่าคุณกำลังใช้ตัวนับแรกซึ่งหมายความว่าค่าสูงสุดของมันคือ 100% * (ไม่มี CPU)

ดังนั้นถ้าคุณมี 4 CPU ดังนั้นจำนวนสูงสุดคือ 400% และ 80% เป็นจริง (400 * 0.8 =) 320% (และสำหรับ 8 CPUs คือ 640% ฯลฯ ฯลฯ )


อ้อ! แค่นั้นแหละ. ฉันมีซีพียู 8 ตัว ดังนั้นการใช้งาน CPU โดยรวมของ sqlservr ของฉันจึงประมาณ 37% และนั่นหมายความว่าทุกอย่างเป็นปกติ ขอบคุณ @Farseeker!
Bill Paetzke

เมื่อใดก็ได้ ฉันมีคำถามที่คล้ายกันเมื่อฉันเริ่มใช้ perfmon ในระบบที่มีหลายซีพียู
Mark Henderson

2
จำนวนของ CPU รวมถึงการทำไฮเปอร์เธรดหรือไม่ ตัวอย่างเช่นหากคอมพิวเตอร์ของฉันคือ quad core และฉันมี hyperthreading ฉันควรแยกเป็น 4 procs หรือ 8 หรือไม่
Matthew Rodatus

1
มีวิธีการค้นหาการใช้งานตัวประมวลผลของกระบวนการเดียวที่มีค่าระหว่าง 0 ถึง 100% หรือไม่ (aka: มันจะแสดงปริมาณการแพร่กระจายของ CPU ทั้งหมดหรือไม่) ฉันไม่ต้องการแบ่งตัวเอง
Jeroen Vannevel

0

ค่านี้คำนวณจากเส้นฐานที่ (ไม่มี Logical CPUS * 100) ดังนั้นนี่จะเป็นค่าที่คำนวณได้จาก baselin มากกว่า 100

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