ฉันพยายามที่จะเข้าใจข้อมูลบางอย่างที่ดึงมาจาก SAR ฉันมีสามคำถามหลักเกี่ยวกับเรื่องนี้ ในที่สุดฉันต้องการพิจารณาจำนวน CPU ที่ไม่ได้ใช้งานในแต่ละช่วงเวลาการสุ่มตัวอย่างในคลัสเตอร์ของเซิร์ฟเวอร์
- CPU จำนวนมากไม่ปรากฏขึ้นในทุก ๆ รายการ สิ่งนี้คาดหวังหรือไม่และนั่นหมายความว่าอย่างไร เกี่ยวข้องกับ # 2 หรือไม่
- มีเส้นที่ไม่ได้ใช้งาน (CPU = U) เอกสารกล่าวว่า "ท่านแสดงให้เห็นทั้งระบบกำลังการผลิตไม่ได้ใช้" ฉันไม่พบคำจำกัดความที่แม่นยำของ "ความจุที่ไม่ได้ใช้ทั้งระบบ" หรือคำจำกัดความใด ๆ เลย ฉันไม่แน่ใจว่าจะตีความบรรทัดที่บอกอะไรบางอย่างเช่น "ความจุที่ไม่ได้ใช้งานคือว่าง 70%"
- สุดท้ายฉันไม่แน่ใจว่าจะคำนวณ
-
หรือall
คำนวณบรรทัดอย่างไร ฉันคิดว่ามันเป็นค่าเฉลี่ยของซีพียูทั้งหมด แต่เมื่อฉันคำนวณทางคณิตศาสตร์กับซีพียูทั้งหมดฉันจะได้รับคำตอบที่แตกต่างอย่างมากจากสิ่งที่อยู่ในบรรทัดนั้น ใครสามารถบอกฉันได้อย่างแม่นยำถึงสิ่งที่เกิดขึ้นในการคำนวณนั้น เมื่อดูคำถามที่เกี่ยวข้องกับ SARอย่างใกล้ชิดปรากฏว่าsystem-wide
เปอร์เซ็นต์ว่างเป็นผลรวมของผลิตภัณฑ์ของเปอร์เซ็นต์ว่างของ CPU และค่า 'physc' น่าเสียดายที่ฉันไม่มีphysc
หรือ entc% (สมมติว่ามีอยู่) ดังนั้นฉันจึงไม่สามารถยืนยันด้วยข้อมูลของฉันเอง หากถูกต้องหมายความว่าฉันต้องการphysc
ค่าที่จะเข้าใจเปอร์เซ็นต์ที่ไม่ได้ใช้งานจริงหรือไม่
นี่คือตัวอย่างของสิ่งที่ฉันเห็น ทั้งหมดนี้มาจากวันเดียวกัน
CPU | Idle CPU | Idle CPU | Idle
---------- ---------- ----------
0 | 8 0 | 15 0 | 17
1 | 25 1 | 94 1 | 32
2 | 79 2 | 100 2 | 97
3 | 62 3 | 99 3 | 71
4 | 5 4 | 13 4 | 5
5 | 7 5 | 13 5 | 23
6 | 6 6 | 99 6 | 71
7 | 7 7 | 44 7 | 98
8 | 11 8 | 12 8 | 48
9 | 17 12 | 0 12 | 38
10 | 33 16 | 12 16 | 37
11 | 64 20 | 3 20 | 42
12 | 6 U | 95 U | 97
13 | 6 - | 15 - | 85
14 | 6
15 | 6
16 | 12
17 | 15
18 | 62
19 | 69
20 | 7
21 | 7
22 | 6
23 | 7
U | 80
- | 15
case 1: avg(24): 22
case 2: avg(12): 42
case 3: avg(12): 48
ข้อมูลนี้สร้างขึ้นโดยสคริปต์ที่รัน: sar -P ALL 1 1
จากนั้นจะรันคำสั่ง awk ฉันไม่ดีกับ awk แต่สิ่งเหล่านี้เป็นส่วนสำคัญอย่างชัดเจน:
กรอง: /System|AIX|^$|%/ {next}
แยก: {k=0;if(NR==7) k=1} {sub("^-", "all", $1); cpu=$(1+k); user=$(2+k); sys=$(3+k); io=$(4+k); idle=$(5+k)}
ดูเหมือนว่าจะถูกต้องตามสิ่งที่ฉันเข้าใจ awk และสิ่งที่ฉันเห็นจากตัวอย่างของผลลัพธ์
ถ้าฉันสมมติว่าค่าที่หายไปนั้นเป็นศูนย์ทั้งหมดสำหรับกรณีที่ 2 ค่าเฉลี่ยคือ 21 ซึ่งค่อนข้างสอดคล้องกับกรณีที่ 1 อย่างไรก็ตามถ้าฉันทำสมมติฐานนั้นสำหรับกรณีที่ 3 ฉันจะได้รับ 24% ซึ่งเป็นอัตราต่อรองที่สมบูรณ์ด้วย 85% ร้อยละค่าที่กำหนดโดย sar สำหรับการใช้งาน CPU โดยรวม
นี่คือกราฟของการบันทึกตลอดทั้งวัน (ทุก ๆ 30 วินาที):
เมื่อมีเวลาว่าง 'ทั้งระบบ' น้อยมากความสัมพันธ์ระหว่างเวลาว่างของ CPU โดยเฉลี่ยกับ 'รอบระบบ' ว่างเกือบจะสมบูรณ์แบบ แต่เมื่อเวลาว่างของระบบเพิ่มขึ้นความสัมพันธ์ก็ลดลงมาก ทำงานกับข้อสันนิษฐานว่าเป็นเครื่องจักรที่กำหนดขึ้นมาซึ่งบอกฉันว่าข้อมูลที่ฉันมีไม่ได้ให้ภาพเต็ม แต่ฉันจะสนใจมากแค่ไหน?
ฉันไม่เข้าใจว่าเหตุใด CPU บางตัวจึงไม่ถูกรายงานในแต่ละจุด แต่สิ่งที่ขาดหายไปนั้นไม่ได้กระจายอย่างเท่าเทียมกันดังที่เห็นในตัวอย่างด้านบน นอกจากนี้จากการอ่านRedbookนี้ฉันคิดว่าสิ่งเหล่านี้ต้องเป็น CPU แบบลอจิคัลและถ้าไม่มีphysc
ตัวเลขฉันคิดว่ามีอะไรที่ฉันสามารถทำได้กับค่าเหล่านี้ ฉันพยายามใช้U
ค่าในสมการต่าง ๆ แต่ฉันไม่พบสิ่งที่สมเหตุสมผล ฉันยังไม่ชัดเจนว่าเปอร์เซ็นต์การไม่ได้ใช้งานโดยรวมสามารถรับได้ตามมูลค่า
หมายเหตุ : มีบางอย่างผิดปกติกับการจับข้อมูลนี้จาก sar เป็นคำตอบที่ถูกต้องสมบูรณ์สำหรับ # 1 หากเป็นกรณีนี้ควรกลับมาเสมอ
sar -P ALL 1 1
และจากนั้นใช้ awk เพื่อแยกหมายเลข cpu จากนั้นผู้ใช้ระบบ IO-wait และเปอร์เซ็นต์ว่าง ฉันจะเพิ่มข้อมูลเพิ่มเติมในคำตอบของคุณ
sar -P ALL
โดยตรงแทนที่จะเป็นผลลัพธ์ของสคริปต์นี้ มันเป็นสคริปต์ที่ไม่ได้มาตรฐานและไม่มีใครสามารถบอกคุณได้ว่ามันทำอะไรโดยไม่เห็นมัน
sar -P ALL
เอาต์พุตมาตรฐาน