ทำความเข้าใจกับเอาต์พุตจาก sar บน AIX


11

ฉันพยายามที่จะเข้าใจข้อมูลบางอย่างที่ดึงมาจาก SAR ฉันมีสามคำถามหลักเกี่ยวกับเรื่องนี้ ในที่สุดฉันต้องการพิจารณาจำนวน CPU ที่ไม่ได้ใช้งานในแต่ละช่วงเวลาการสุ่มตัวอย่างในคลัสเตอร์ของเซิร์ฟเวอร์

  1. CPU จำนวนมากไม่ปรากฏขึ้นในทุก ๆ รายการ สิ่งนี้คาดหวังหรือไม่และนั่นหมายความว่าอย่างไร เกี่ยวข้องกับ # 2 หรือไม่
  2. มีเส้นที่ไม่ได้ใช้งาน (CPU = U) เอกสารกล่าวว่า "ท่านแสดงให้เห็นทั้งระบบกำลังการผลิตไม่ได้ใช้" ฉันไม่พบคำจำกัดความที่แม่นยำของ "ความจุที่ไม่ได้ใช้ทั้งระบบ" หรือคำจำกัดความใด ๆ เลย ฉันไม่แน่ใจว่าจะตีความบรรทัดที่บอกอะไรบางอย่างเช่น "ความจุที่ไม่ได้ใช้งานคือว่าง 70%"
  3. สุดท้ายฉันไม่แน่ใจว่าจะคำนวณ-หรือ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เอาต์พุตมาตรฐาน
สวิส

@Swiss นี่มาจากสคริปต์ที่ฉันไม่ได้เขียน มันเรียกsar -P ALL 1 1และจากนั้นใช้ awk เพื่อแยกหมายเลข cpu จากนั้นผู้ใช้ระบบ IO-wait และเปอร์เซ็นต์ว่าง ฉันจะเพิ่มข้อมูลเพิ่มเติมในคำตอบของคุณ
JimmyJames

@Swiss ฉันแก้ไขตัวอย่างเพื่อให้มีความไตร่ตรองมากขึ้นเกี่ยวกับลักษณะของผลลัพธ์ของสคริปต์
JimmyJames

คุณสามารถให้ผลลัพธ์sar -P ALLโดยตรงแทนที่จะเป็นผลลัพธ์ของสคริปต์นี้ มันเป็นสคริปต์ที่ไม่ได้มาตรฐานและไม่มีใครสามารถบอกคุณได้ว่ามันทำอะไรโดยไม่เห็นมัน
สวิส

@ สวิสน่าเสียดายที่ฉันทำไม่ได้ ฉันสามารถดูสคริปต์และมันออก มีบางอย่างขาดหายไปจากคำอธิบายของสิ่งที่ฉันสามารถชี้แจงได้หรือไม่?
JimmyJames

คำตอบ:


4

เอาต์พุตที่คุณระบุมีลักษณะแตกต่างจากมาตรฐานsar -P ALLหรือsar -uเอาต์พุต ฉันไม่แน่ใจว่าคุณจัดรูปแบบมือหรือใช้เครื่องมืออื่น แต่ฉันคิดว่ามีข้อมูลเพียงพอที่จะเข้าใจสิ่งนี้

นี่คือข้อมูลชิ้นสำคัญที่ได้รับจากหน้า man สำหรับ sar

หมายเหตุ: บนเครื่อง SMP โปรเซสเซอร์ที่ไม่มีกิจกรรมใด ๆ เลย (0.00 สำหรับทุกฟิลด์) เป็นโปรเซสเซอร์ที่ปิดใช้งาน (ออฟไลน์)

เนื่องจากคุณกำลังทำงานในคลัสเตอร์ดูเหมือนว่าค่อนข้างปลอดภัยที่จะสมมติว่าคุณกำลังใช้เครื่อง SMP

โปรดทราบว่าในตัวอย่างที่ 2 และ 3 มีเพียง 12 จาก 24 คอร์เท่านั้นที่รายงานสถิติ หากคุณคิดว่าแกนเหล่านี้ถูกปิดการใช้งานดังที่ได้กล่าวไว้ในหน้าคนแล้วสถิติก็สมเหตุสมผล

มาอัปเดตข้อมูลของคุณดังนี้เพื่อระบุแกนปิดการใช้งานด้วย -

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      9   | -       9   | -
10  | 33      10  | -       10  | -
11  | 64      11  | -       11  | -
12  | 6       12  | 0       12  | 38
13  | 6       13  | -       13  | -
14  | 6       14  | -       14  | -
15  | 6       15  | -       15  | -
16  | 12      16  | 12      16  | 37
17  | 15      17  | -       17  | -
18  | 62      18  | -       18  | -
19  | 69      19  | -       19  | -
20  | 7       20  | 3       20  | 42
21  | 7       21  | -       21  | -
22  | 6       22  | -       22  | -
23  | 7       23  | -       23  | -

จากนั้นเราสามารถใช้สิ่งต่อไปนี้ในการคำนวณค่าเฉลี่ย (นี่เป็นข้อมูลแบบด่วนที่ฉันเขียนฉันมั่นใจว่าจะสามารถเขียนได้ดีกว่า)

$ awk '{idle = $3; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f  Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 22.208333  Cores: 24
$ awk '{idle = $6; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f  Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 42.000000  Cores: 12
$ awk '{idle = $9; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f  Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 48.250000  Cores: 12

โปรดทราบว่าจำนวนแกนในตัวอย่าง 2 และ 3 คือ 12 และค่าเฉลี่ยตรงกับสิ่งที่คุณเห็นในผลลัพธ์ตัวอย่างของคุณ

ดูเหมือนว่าในบางกรณีระหว่างเคสแรกและเคสที่สองของคุณครึ่งแกน CPU ของคุณถูกปิดการใช้งาน

สรุปคำถามของคุณอย่างรวดเร็ว:

  1. ข้อมูลที่ขาดหายไปอาจหมายความว่าโปรเซสเซอร์หลักถูกปิดใช้งาน
  2. Uในบรรทัดโดยเฉลี่ยอยู่ที่แตกต่างกว่าUในหน้าคนว่า การUอ้างอิงถึงในหน้า man ควรปรากฏขึ้นภายใต้คอลัมน์ ID โปรเซสเซอร์
  3. เอาต์พุตที่คุณระบุแตกต่างจากsarเอาต์พุตมาตรฐานและมีข้อมูลไม่เพียงพอที่จะระบุว่าอะไรUหรือallในบรรทัดเฉลี่ยที่อ้างถึง หมายเลขแรกดูเหมือนจะเป็น% ว่างบนแกนที่ใช้งานอยู่

"โปรดทราบว่าจำนวนแกนในตัวอย่างที่ 2 และ 3 คือ 12 และค่าเฉลี่ยตรงกับสิ่งที่คุณเห็นในผลลัพธ์ตัวอย่างของคุณ" ขออภัยฉันอาจยังไม่ชัดเจนฉันคำนวณค่าเฉลี่ยจากตัวเลข นั่นไม่ได้มาจาก sar Uและallค่ามาจาก sar เป็นเส้น ฉันโพล่งออกมาในคำตอบของฉันเพราะพวกเขาแตกต่างจากค่าซีพียูพื้นฐานจากสิ่งที่ฉันเข้าใจ
JimmyJames

หากแกนถูกปิดใช้งานเหตุใดเวลาว่างของ 'ระบบทั้งระบบ' จึงน้อยกว่าในกรณีที่ 2 มากกว่าในกรณีที่ 3 ฉันพยายามที่จะเข้าใจว่าพวกเขาสามารถมีเวลาว่างโดยเฉลี่ยเกือบเท่าเดิมใน 12 cpus เดียวกันได้อย่างไรและเวลาว่างของทั้งระบบจะต่างกันอย่างสิ้นเชิง
JimmyJames

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

ฉันอัปเดตคำถามด้วยการเปลี่ยนแปลงเล็กน้อยเพื่อชี้แจงปัญหา ดังนั้นดูที่กรณีที่ 2 หากปิดใช้งาน 12 cpus และเปอร์เซ็นต์ sys-idle คำนวณจาก 24 ทั้งหมด idle% ไม่สามารถต่ำกว่า 50% ดังนั้นถ้าฉันมี 15% นั่นหมายความว่า sys idle% ต้องไม่สนใจ CPU ที่ถูกปิดใช้งานใช่ไหม
JimmyJames
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.