ทำความเข้าใจกับค่าเฉลี่ยภาระสูงสุดและภาระ


12

ฉันกำลังสังเกตการโหลดเฉลี่ยสูงในเครื่องบางอย่าง (ประมาณ 9) ในทั้งสามเขตโหลด ฉันเข้าใจโหลดเป็นจำนวนกระบวนการในสถานะ "รัน" / เวลาที่ต้องการ CPU ฉันถูกต้องด้วยเหตุผลที่ว่าถ้ากระบวนการ N กำลังทำงานบนเครื่องของฉันสิ่งนี้ไม่สามารถสร้างภาระมากกว่า N หรือไม่?

นอกจากนี้จำนวนการโหลดที่เกี่ยวข้องกับกระบวนการหรือเธรด กล่าวอีกนัยหนึ่งกระบวนการมัลติเธรดสามารถสร้างโหลดมากกว่า 1 ได้หรือไม่?


โปรดทราบว่า (เนื่องจากโดยปกติแล้วพวกเขาคาดว่าจะมีการกำหนดเวลาเร็ว ๆ นี้) งานในสถานะ "ไม่หยุดชะงัก" จึงถูกนับว่าทำงานเช่นกัน แค่รายละเอียดไม่ใช่สิ่งที่เปลี่ยนคำถามของคุณ
mattdm

คำตอบ:


7

โหลดค่าเฉลี่ยมักจะอธิบายว่า "ความยาวเฉลี่ยของการรันคิว" กระบวนการหรือเธรดที่ใช้ CPU ไม่กี่ตัวสามารถเพิ่ม LA สูงกว่า 1 ได้ไม่มีปัญหาหาก LA น้อยกว่าจำนวนแกนประมวลผล CPU ทั้งหมด แต่ถ้าได้รับ CPU สูงกว่าจำนวนนี้หมายความว่าบางเธรด / กระบวนการจะอยู่ในคิวพร้อมที่จะทำงาน แต่รอ CPU ฟรี


3

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

การโหลด 1 เท่ากับ 100% ของมูลค่างานหนึ่ง CPU หากคุณมีแอพพลิเคชั่นแบบมัลติเธรดที่จัดการให้มีจำนวนเธรดที่ใช้งานอยู่เกินจำนวนซีพียูที่มีอยู่คุณอาจมีกระบวนการเดียวที่โหลดไดรฟ์ด้านบน 1 ซึ่งอาจเป็นระยะสั้นและไม่ปรากฏใน มุมมองชิ้นเวลานานขึ้นของค่าเฉลี่ยการโหลด

นอกจากนี้เนื่องจากค่าเฉลี่ยโหลดได้รับการพัฒนาก่อนที่จะมีระบบมัลติคอร์จึงเป็นสิ่งสำคัญที่จะแบ่งจำนวนโหลดตามจำนวนแกนที่มีอยู่ทั้งหมด หากนี่คือการโหลดอย่างต่อเนื่องของ 9 ในระบบ 4 ซ็อกเก็ตคอร์คอร์หลักแล้วนี่คือการโหลด 9 จาก 16 และไม่เป็นปัญหาจริงๆ


1
- ฉันยังไม่เห็นระบบที่มีหลายคอร์ในซ็อกเก็ตถูกเปิดเผยต่อผู้ใช้พื้นที่ในวิธีที่ทำให้พวกเขาดูเหมือนอะไร แต่ CPU เพิ่มเติม ดังนั้นด้านบนในระบบ 4 ซ็อกเก็ตคอร์คอร์ 16 ซีพียูจะเห็น (ดังนั้นเราจะเห็นได้ว่าโหลด 9 นั้นต่ำกว่าจำนวนซีพียู)
mattdm

ฉันเข้าใจว่าตัวเลขนั้นเป็นลอการิทึมดังนั้นมันจึงอยู่ภายใต้หรือสูงกว่า 1 ระบบที่ฉันมีฉันเห็นระบบรายงานสิ่งนี้: โหลดเฉลี่ย: 10.41, 9.57, 9.26 อะไร?? ทำไมระบบหนึ่งของลินุกซ์จึงรายงานค่าเฉลี่ยการโหลด: 0.81, 1.57, 0.98 ในขณะที่ระบบนี้รายงานค่าเฉลี่ยการโหลด: 10.41, 9.57, 9.26 unix ทั้งหมดนั้นไม่เหมือนกันหรือไม่?
djangofan

3

ดูkernel / sched / loadavg.cซึ่งมีความคิดเห็นที่ยาวและยอดเยี่ยมในช่วงเริ่มต้นที่อธิบายถึงการได้มาของค่าเฉลี่ยการโหลดจากค่าเฉลี่ยการเน่าเปื่อยแบบทวีคูณของจำนวนเธรดที่รันได้ ("คิวการทำงาน") บวกจำนวนเธรดที่ไม่หยุดชะงัก บน I / O หรือรอการล็อค)

นี่คือสาระสำคัญของความคิดเห็น แต่มันก็คุ้มค่าที่จะอ่านทั้งหมด:

 * The global load average is an exponentially decaying average of
 * nr_running + nr_uninterruptible.
 *
 * Once every LOAD_FREQ:
 *     nr_active = 0;
 *     for_each_possible_cpu(cpu)
 *         nr_active += cpu_of(cpu)->nr_running +
 *                      cpu_of(cpu)->nr_uninterruptible;
 *     avenrun[n] = avenrun[0] *
 *                  exp_n + nr_active *
 *                  (1 - exp_n)

ชีวิตจริงทำให้โค้ดค่อนข้างซับซ้อน: ตัวนับต่อซีพียู, เคอร์เนลที่ไม่ทำงาน, ซีพียู hotswap, การขาดรหัสจุดลอยที่ต้องการการใช้งานแบบคงที่ของ exp (n) แต่มันเป็นเรื่องง่ายที่จะเห็นว่าสิ่งเหล่านี้ล้วน แต่ทำงานเพื่อนำวิธีการที่อธิบายไว้ในความคิดเห็นไปใช้อย่างซื่อสัตย์

คุณจะทราบว่า Linux นับเธรดไม่ใช่เพียงแค่กระบวนการซึ่งตอบคำถามของคุณ


0

ค่าเฉลี่ยโหลด 3 ค่านั้นเป็นฟังก์ชันลอการิทึมซึ่งหมุนรอบหมายเลข 1 สิ่งที่คล้ายกับ f (x) = eX (e ถึง X เลขชี้กำลัง) ในทางเทคนิคการแสดงจุดคงที่ของฟังก์ชันการสลายตัวแบบเอ็กซ์โปเนนเชียลจำลองค่าเฉลี่ย มันเป็นสารเติมแต่งต่อซีพียูดังนั้นการโหลดเต็มอาจมีลักษณะเหมือน 4.00 บนระบบ quad-core หมายเลขแรกคือค่าเฉลี่ยในนาทีสุดท้ายส่วนที่สองคือค่าเฉลี่ยในช่วงห้านาทีที่ผ่านมาและตัวเลขที่สามคือค่าเฉลี่ยในช่วง 15 นาทีที่ผ่านมา ฉันคิดว่าควรจะทิ้งคำตอบไว้ที่นี่เพื่อระบุว่า


0

โหลดทันที: จำนวนงานที่กำลังรันอยู่หรือรอการเรียกใช้หรืออีกวิธีหนึ่งคือจำนวนงานที่ต้องการเรียกใช้

ค่าเฉลี่ยการโหลด: การวัดด้านบน แต่ค่าเฉลี่ยชี้แจงกับตัวอย่างก่อนหน้าของการวัดเดียวกัน

ตัวเลขทั้งสองนี้ไม่มีขอบเขตและมักจะใหญ่กว่า N มาก

เพื่อให้ชัดเจน: จำนวนการโหลดบน Linux มีหลายเธรดไม่ต้องสงสัยเลย คุณสามารถสร้างการโหลดขนาดใหญ่โดยพลการด้วยกระบวนการเดียวที่สร้างเธรดจำนวนมาก

เพิ่มเติมเกี่ยวกับเรื่องนี้ที่นี่

http://blog.angulosolido.pt/2015/04/linux-load-average-definitive-summary.html

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