เครื่องมือสำหรับการตรวจสอบเวลาขโมย (st)


12

เรากำลังทำงานบนเซิร์ฟเวอร์ "ทุ่มเท" เสมือนจริงซึ่งในทางทฤษฎีควรหมายความว่าเราเป็นคนเดียวในเซิร์ฟเวอร์ ในทางปฏิบัติ .... ฉันคิดว่าเราอาจจะไม่ใช่

ป้อนคำอธิบายรูปภาพที่นี่

โปรดสังเกตว่าแม้ว่าดูเหมือนว่าเรากำลังฆ่าเครื่องจักรของเรา แต่ "เวลาขโมย" อยู่ที่ 71%

ฉันใช้สถิติในการโหลดและฉันรู้สึกผิดหวังที่สถิตินี้ไม่แสดงในกราฟของฉัน มีเครื่องมือใดบ้างที่ตรวจสอบสิ่งนี้ซึ่งอาจช่วยได้บ้าง?


ข้อมูลเพิ่มเติม:

เรากำลังใช้งาน 4 คอร์รุ่น:

# grep "model name" /proc/cpuinfo | sort -u
model name  : Intel(R) Core(TM)2 Duo CPU     E7500  @ 2.93GHz

1
เสมือนจริงหรือไม่ ในกรณีของ XEN พวกเขาจะต้องปักหมุดคอร์เฉพาะสำหรับการใช้งานเฉพาะใน VM ของคุณ ดูเหมือนว่าผู้ให้บริการของคุณมีซีพียูที่จองเกินจำนวนโดย amout ที่ไม่เป็นธรรม เขาพูดอะไรกับสิ่งนี้
นิลส์

1
คุณมี vCPU กี่ตัวและมีการรายงาน CPU ประเภทgrep "model name" /proc/cpuinfo|sort -uใด ถ้านี่เป็นเซิร์ฟเวอร์เฉพาะจริงๆแล้วก็มีบางอย่างที่ทำให้ซีพียูเสียเวลาใน Dom0 หรือพวกเขาให้ vCPU มากกว่าที่มีให้ใน Dom0
นิลส์

1
เว้นแต่ว่านี่เป็นค่าผิดปกติชั่วขณะดูเหมือนว่า isp ของคุณกำลังโกหกคุณและพวกเขากำลังใช้งาน cpu vms หนักหน่วงอื่น ๆ บนเครื่องนี้หรือมีบางสิ่งที่กำหนดค่าผิดอย่างมากซึ่งทำให้ dom0 หมูมากเวลา .
psusi

1
SuSE แนะนำให้จองสองคอร์ แต่เพียงผู้เดียวสำหรับ Dom0 เพื่อให้สามารถจัดการ IO ทั้งหมดได้โดยไม่ต้องรบกวน VM อื่น ๆ ในสายตาของฉันที่จะมีความจำเป็นสำหรับระบบที่มีเวลาที่ถูกขโมยในการรับส่งข้อมูล DomUs และ IO หนัก ฉันต้องการทราบว่าผู้ให้บริการของคุณกำหนด vCPU มากกว่าแกนตรรกะ - เช่นกำหนด 4 vCPU ในขณะที่มีเพียง 2 CPU เชิงตรรกะเท่านั้นที่มีอยู่ใน Dom0 - ซึ่งจะอธิบายว่า "ขโมย" เช่นกัน (และเป็นแนวคิดที่ค่อนข้างสวย - แต่เป็นไปได้ใน XEN) .
นิลส์

1
สาเหตุที่แท้จริงของสิ่งนี้กลายเป็นว่า ISP มีการกำหนดค่า VM อย่างไม่ถูกต้อง แขกถูกบอกว่ามันมีแกนมากกว่าที่เป็นจริง เรื่องนี้ดูเหมือนจะทำให้เกิดความเสียหายด้วยการตั้งเวลา ISP ไม่สามารถให้การสนับสนุนเทคโนโลยีอัจฉริยะได้ แต่เราสามารถ "พิสูจน์" ปัญหาได้โดยการปิดการใช้งานคอร์จำนวนคี่ใน / proc ไม่เคยมีปัญหามาตั้งแต่
mgjk

คำตอบ:


12

คุณมีคำถามที่ชัดเจน แต่คุณไม่ได้ให้ข้อมูลมากมายเกี่ยวกับสภาพแวดล้อมของคุณวิธีการตรวจสอบในปัจจุบันหรือเครื่องมือสร้างกราฟที่คุณใช้อยู่ อย่างไรก็ตามเนื่องจาก SNMP นั้นถูกใช้อย่างแพร่หลายในระดับสากลเพื่อที่ฉันจะสมมติว่าคุณกำลังใช้งานอยู่และอย่างน้อยก็มีความคุ้นเคยกับมัน

แม้ว่า (ใกล้เท่าที่ฉันจะบอก) เวลา CPU Steal ไม่สามารถใช้งานได้จาก snmpd คุณสามารถขยายเวลาด้วยตัวเองด้วยUCD-SNMP-MIB::extOutputวัตถุและexecคำสั่ง

วิธีที่ง่ายที่สุด (ที่ผมเคยพบ) iostatเพื่อให้ได้ขโมยเวลาจาก โดยใช้โครงสร้างต่อไปนี้เราจะได้รับเพียงแค่ขโมยเวลา:

$ iostat -c | awk 'NR==4 {print $5}'
0.00

ดังนั้นผนวกสิ่งต่อไปนี้ใน snmpd.conf ของคุณ:

exec cpu_steal_time /usr/bin/iostat -c | /usr/bin/awk 'NR==4 {print $5}'

(หรือคุณสามารถใส่คำสั่งในสคริปต์ตัวคลุมและเรียกใช้ตัวตัดคำจากด้านในsnmpd.conf)

แต่ละexecการโทรในsnmpd.confการจัดทำดัชนีราคาเริ่มต้นที่ 1 ดังนั้นหากคุณมีเพียงคำสั่ง exec UCD-SNMP-MIB::extOutput.1เดียวแล้วคุณจะต้องการที่จะสำรวจความคิดเห็น หากนี่คือคำสั่ง exec ที่ 5 ดังนั้นโพUCD-SNMP-MIB::extOutput.5ลเป็นต้น

OID ที่UCD-SNMP-MIB::extOutputเป็นตัวเลขสำหรับ.1.3.6.1.4.1.2021.8.1.101ถ้าคุณอยู่ที่ดัชนี 1 มันจะเป็น.1.3.6.1.4.1.2021.8.1.101.1และดัชนี 5 จะเป็น.1.3.6.1.4.1.2021.8.1.101.5เช่นนั้นเป็นต้น

จากนั้นคุณสร้างการสำรวจกราฟที่ SNMPD OID ของตัววัดชนิดตั้งแต่ 0–100 นี่ควรให้กราฟสวย ๆ กับคุณ


คำตอบที่ดี สถิตเหล่านี้จะรวบรวมบ่อยแค่ไหน? ในระหว่างการสำรวจความคิดเห็นหรือมีวิธีใน RMON-MIB ที่จะบันทึกค่าโดยไม่มีแบบสำรวจภายนอกหรือไม่
นิลส์

ฉันเชื่อว่ามันจะดึงสิ่งนี้ทุกครั้งที่snmpdมีการสอบถาม OID
บาฮามาต

หากไม่ได้ติดตั้ง iostat: top -bn1 | sed -nr '3s /.*,// gp'
davide

9

sar -uอาจเป็นประโยชน์ในกรณีของคุณ sar เป็นส่วนหนึ่งของsysstat -package


ฉันหวังว่าฉันสามารถตั้งได้มากกว่าหนึ่งคำตอบเป็นคำตอบที่ยอมรับได้ คำตอบทั้งสองมีประโยชน์มาก :-) ขอบคุณ!
mgjk

0

คำตอบที่ได้รับการโหวตมากที่สุดนั้นยอดเยี่ยม แต่ในเวลานี้มันไม่ทำงานอย่างเต็มที่: net-snmpสูญเสียการexecโทรไปที่ท่อดังนั้นควรมีลักษณะเช่นนี้

extend-sh cpu_steal_time /usr/bin/iostat -c 1 1 | /usr/bin/awk '!/%user|Linux|^$/ {print $5}'

และผลลัพธ์จะปรากฏภายใต้nsExtendOutput1Table:

# snmpwalk localhost NET-SNMP-EXTEND-MIB::nsExtendOutput1Table
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."cpu_steal_time" = STRING: 0.60
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."cpu_steal_time" = STRING: 0.60
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."cpu_steal_time" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."cpu_steal_time" = INTEGER: 0

โดยที่nsExtendOutput1Lineoid คือ .1.6.6.1.4.1.8072.1.3.2.3.1.1:

snmpwalk localhost .1.3.6.1.4.1.8072.1.3.2.3.1.1
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."cpu_steal_time" = STRING: 0.60
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.