ค้นหา
  • Pom Tanyanon

KPI สำหรับการ Monitoring Windows Server

ปัญหาการทำงานของ Microsoft Windows Server ก็เป็นอีกหนึ่งประเด็นที่ซึ่งผู้ดูแลระบบเครือข่ายและ System ได้รับผลกระทบการทำงาน ปัญหาของ Server สามารถแบ่งออกเป็น 3 ส่วน ได้แก่ ปัญหาที่เกี่ยวข้องกับระบบ Hardware และสภาพแวดล้อมการติดตั้ง รวมทั้งขีดความสามารถของทรัพยากรทางกายภาพของ Server ปัญหาที่เกี่ยวข้องกับระบบปฎิบัติการ ปัญหาที่เกี่ยวข้องกับ Application ในบทความต่อไปนี้ จะกล่าวถึงวิธีการใช้ ตัว Counter ที่มากับ Microsoft Windows Server เพื่อวิเคราะห์ปัญหาการทำงานของ Server ซึ่งในอดีตที่ผ่านมา ก็มี ผู้ผลิต Software ที่ใช้บริหารจัดการเครือข่ายและ Server บางรายได้สร้างหัวข้อสำหรับ Monitor counter ต่างๆต่อไปนี้อีกด้วย

ขอเริ่มต้นที่ Counter ซึ่งท่านสามารถเรียกดูได้จากคำสั่ง Perfmon


[Processor] "% Processor time"


เป็นจำนวน percent ของเวลาที่ผ่านไป ที่ซึ่ง processor ดำเนินการประมวลผลอย่างเต็มที่ โดย counter นี้จะให้ค่าที่วัดได้โดยทั่วไป ที่แสดงว่า processor ทำงานหนักมากน้อยเพียงใด หากค่าใน counter ค่อนข้างคงที่ เช่นเกินกว่า 90%, ให้ตรวจสอบดู counters อื่นที่เกี่ยวข้องกัน เพื่อที่จะตรวจสอบดูว่า เหตุใด CPU ได้รับการกดดันอย่างหนัก (ทำงานหนัก)

ภาพ 1 แสดงปริมาณใช้งาน Processor บน Server


Processor] "% Privileged time"

เป็นการวัด ปริมาณเวลาที่ Processor ต้องเสียเวลาไปกับการประมวลผลใน kernel mode. เนื่องจาก counter นี้ เป็นการแสดงเฉพาะการทำงานเกี่ยวกับ kernel เท่านั้น (เช่น memory management) ซึ่งจำนวนเปอร์เซ็นต์ที่สูง ของ privileged timeเช่นสูงเกินกว่า 25% เป็นการบ่งบอกถึงปัญหาเกี่ยวกับ driver หรือปัญหาทาง hardware ของอุปกรณ์บน Server


ภาพ 2 แสดงปริมาณใช้งาน Processor แต่ละตัวคิดเป็น %


[Processor] "% User time"

เป็นห้วงเวลาที่ผ่านไปที่ซึ่ง processor ใช้ไปกับการประมวลผลคำสั่งภายใต้ user mode. พูดง่ายๆคือ เป็นจำนวนเวลาที่ซึ่ง Processor ใช้ไปเพื่อดำเนินการจัดการกับคำสั่ง หรือโปรแกรมของ user application โดยทั่วไป หาก counter นี้นำมาใช้กับ SQL Server ค่าที่วัดได้ ควรอยู่ต่ำกว่า 65% เนื่องจากเราต้องการที่จะมี buffer บางส่วนสำหรับการทำงานของ kernel และการติดต่อสื่อสารเพื่อขอใช้บริการแบบ bursts จาก CPU โดย applications อื่นๆ. ค่าที่สูงเกินกว่า 65% ควรได้รับการตรวจสอบ เพื่อที่จะดูว่า process ใดที่ใช้อภิสิทธิ์ ต่อการทำงานของ CPU (หากไม่ใช่ SQL Server) โดยการใช้ "[Process] % User time" counter เพื่อตรวจสอบแต่ละ processes เป็นการเฉพาะ.


[Processor] "Queue Length"

จำนวนของ threads ที่พร้อมจะดำเนินการจัดการ (execute) แต่จะต้องรอคอยให้ core ของ CPU มีความพร้อมเสียก่อน หากมีค่าสูงเกินกว่า 2-3 ย่อมหมายถึงว่า มีปัญหา CPU ทำงานไม่ทัน เช่นเดียวกัน หาก server ที่มีหลาย core และจำนวนของ Thread ที่รอคอย มากกว่า 2-3 สำหรับแต่ละ Core แสดงว่า CPU ทำงานไม่ทันอย่างแน่นอน


ภาพ 3 แสดง ขนาดความยาวของ Queue สำหรับ Processor


[System] \Processor Queue Length

Processor Queue Length แสดงถึงจำนวนของ threads ที่ถูกสังเกตุ ว่าเป็นค่าหน่วงเวลา ที่รอคอย จังหวะหรือจ่อคิว ใช้บริการประมวลผลจาก processor.

สำหรับ server ที่ใช้ CPU Core เดียว ค่าที่สูงระดับ 5-10 หรือมากกว่า แสดงให้เห็นถึง ปริมาณงาน ที่เพิ่มมากขึ้น จน processor ตัวหนึ่ง ไม่สามารถรับมือได้

สำหรับ server แบบหลายๆ core ให้ใช้กฎของการแบ่ง Queue Length ด้วยจำนวนของ core ในระบบ และใช้หลักการคำนวณแบบเดียวกับที่มี CPU เพียง core เดียว

Microsoft® Description – Processor Queue Length เป็นจำนวนของ threads ใน processor queue. ต่างกันกับ disk counters, ตรงที่ counter นี้แสดงให้เห็นถึงความพร้อม ของ Thread เท่านั้น ไม่ใช่แสดงถึง thread ที่กำลังทำงาน มีการใช้ queue เพียงหนึ่งเดียว สำหรับ processor ถึงแม้ว่าในระบบจะใช้ หลายๆ processor ก็ตาม ด้วยเหตุนี้ หากคอมพิวเตอร์หนึ่ง ติดตั้ง processor หลายตัว เราจะต้องแบ่งค่านี้ ด้วยจำนวนของปริมาณงานของ processors ค่ายิ่งน้อยยิ่งดี


ภาพ 4 หนึ่ง Processor จะมี queue length ไม่ควรเกินสอง ค่ายิ่งน้อยยิ่งดี


[Physical Disk] "Current Disk Queue Length" & "Avg. Disk Queue Length"

"Current Disk Queue Length" เป็นการตรวจวัด disk queue length ในช่วงเวลาที่มีการสุ่มตัวอย่างเวลา ถ้าจะให้ดีให้ตรวจวัด "Avg. Disk Queue Length" จะดีกว่า เนื่องจากค่านี้ได้รับมาจาก การใช้ (Disk Transfers/sec)*(Disk sec/Transfer) counters. เราสามารถใช้การคำนวณนี้ เพื่อตรวจวัด disk queue ในช่วงเวลาหนึ่ง ค่าเฉลี่ย ของ disk ทางกายภาพ หนึ่งตัว ไม่ควรมีค่าเฉลี่ย Disk queue length สูงเกินกว่า 2 ในช่วงเวลาหนึ่ง เป็นการบ่งบอกถึงปัญหาคอขวด บน Disk เกิดขึ้น


ภาพ 5 disk queue length


[Physical Disk] "% Idle Time"

เป็นการวัดค่าเวลา คิดเป็นเปอร์เซ็นต์ ที่ disk อยู่ในสภาวะว่าง (ไม่มีการร้องขอใช้บริการจากระบบปฎิบัติการ) ค่านี้ ยิ่งมากยิ่งดี เพราะยิ่งเป็นการบ่งบอก ถึงความพร้อมของ Disk โดยทั่วไปไม่ควรน้อยกว่า 60%


[Physical Disk] "Avg. Disk sec/Read" & "Avg. Disk sec/Write"

ทั้งสอง counter นี้เป็นการตรวจวัดค่า latency ของ disks, ซึ่งก็คือ ค่าเฉลี่ยของเวลาที่ใช้ไปสำหรับการเสร็จสิ้นจากการส่งถ่ายข้อมูล ถึงแม้ว่าค่านี้ แสดงออกในลักษณะของ milliseconds. ค่าที่เหมาะสมคือ ไม่ควรสูงเกินกว่า 20 ms ลองพิจารณาใช้ SSD ที่มีค่า access time ที่ต่ำกว่ามาก


[Physical Disk] "Disk Reads/sec" & "Disk Writes/sec"

counters นี้มีไว้เพื่อตรวจวัดจำนวนทั้งหมดของ IO requests ที่เสร็จสิ้นต่อวินาที. คล้ายคลึงกับ latency counters, เช่นเดียวกันค่านี้ ไม่ควรสูงเกินกว่า 20 ms


[Memory] "Available MBs"

จำนวนของหน่วยความจำที่พร้อมใช้งาน ในระบบ ปกติเราควรรักษาพื้นที่ว่างให้มากกว่า 10% แต่สำหรับในระบบที่มีหน่วยความจำขนาดใหญ่ (>50GB)

ค่าที่น้อยกว่า 10% แสดงให้เห็นถึงหน่วยความจำไม่เพียงพอ ซึ่งจะทำให้เกิดการเพิ่มกิจกรรมของ paging ให้พิจารณาเพิ่ม หน่วยความจำ หากมีปัญหา paging เกิดขึ้น


\Memory\Available Bytes

Available Bytes counter เป็นขนาดของ pool ของ page ที่พร้อมใช้งาน ใน RAM ที่ระบบต้องใช้เพื่อรองรับ การร้องขอใช้ pages ใหม่ๆ ปกติ เมื่อค่านี้ยังอยู่ที่ ไม่น้อยกว่า 10% ที่มีอยู่ในระบบทั้งหมด

อย่างไรก็ตาม หากค่านี้น้อยกว่า 10% เราจะต้องดู counters อื่นเพิ่มเติม อย่างเช่น Pages/sec เพื่อที่จะระบุว่าหน่วยความจำของระบบเพียงพอสำหรับภาระงานหรือไม่?


[Memory] "Pages/sec"

เป็นการนำเอาผลรวมของ "Pages Input/sec" และ "Pages Output/sec" counters ซึ่งเป็นอัตราที่ซึ่ง pages กำลังถูกอ่านและถูกเขียน ในสถานะของ pages faults. ค่าที่แกว่งไปมานี้ ไม่ได้หมายความว่า กำลังเกิดเป็นประเด็น แต่หากค่านี้ สูงเกินกว่า 50 เป็นเวลายาวนาน หรือตลอดไป แสดงว่า memory มีปัญหาไม่พอใช้งาน


[Memory] "Paging File(_Total)\% Usage"

เป็นการแสดงให้เห็น page files ที่ถูกใช้งานในปัจจุบัน คิดเป็นเปอร์เซ็นต์ โดย counter นี้ไม่ได้มีความสัมพันธ์กันกับ ประสิทธิภาพโดยตรง แต่เราอาจเจอกับ ประเด็นเกี่ยวกับปัญหา application อย่างมาก หาก page file สูงเกินกว่า 10% ตลอดเวลา และหน่วยความจำ เพิ่มเติมยังถูกเรียกใช้งานโดย applications.


\Memory\Pool Nonpaged Bytes

Pool Nonpaged Bytes counter เป็นจำนวนของ pages ที่อยู่ใน RAM ที่ซึ่ง Kernel นำมาใช้งาน และไม่สามารถเกิด paged out.


Pool Nonpaged Bytes counter ยังถูกเรียกว่า “Kernel Memory”. หากเรากำลังเข้าสู่ปัญหาใดๆที่เกี่ยวข้องกับ Kernel Memory แล้วจะเป็นเรื่องยากที่จะ หาจุดที่เป็นปัญหา แต่สามารถใช้เครื่องมือเรียกว่า “poolmon” เพื่อติดตามดูว่าเกิดอะไรขึ้น


Microsoft Windows ได้กำหนดหน่วยความจำเฉพาะสำหรับ kernel ไว้ใช้งาน เรียกว่า kernel memory เช่น Windows Server 2008 ใช้ memory สูงสุดไม่เกิน 75% ของหน่วยความจำทางกายภาพที่มีอยู่. หาก Kernel Memory ใช้ memory ถึงจุดนั้น Windows อาจ เสียหาย

ดู 40 ครั้ง0 ความคิดเห็น