ค่าเฉลี่ยการโหลดหมายถึงอะไรบน Unix / Linux


68

ถ้าฉันวิ่งuptimeฉันจะได้รับสิ่งนี้:

10:50:30 up 366 days, 23:27,  1 user,  load average: 1.27, 2.06, 1.54

ตัวเลขเหล่านั้นในตอนท้ายหมายถึงอะไร? หน้าคนบอกฉันว่า "ค่าเฉลี่ยการโหลดของระบบในช่วง 1, 5 และ 15 นาทีที่ผ่านมา" แต่เครื่องชั่งคืออะไร? 1.27 สูงหรือไม่ ต่ำ? มันขึ้นอยู่กับระบบของฉันหรือไม่?


2
ฉันสงสัยว่าค่าเฉลี่ยของโหลดควรถูกตีความในระบบมัลติคอร์ของซีพียูอย่างไร
nagul

3
ตามกฎทั่วไปคุณควรแบ่งโหลดเฉลี่ยตามจำนวนของ CPU สำหรับระบบมัลติคอร์ ดังนั้นการโหลด 2.0 บนระบบดูอัลคอร์จึงเท่ากับประมาณ 1.0 บนระบบคอร์เดียว สิ่งนี้ไม่เป็นความจริงอย่างสมบูรณ์เพราะสิ่งต่าง ๆ เช่นดิสก์ I / O และทราฟฟิกเครือข่าย แต่การโหลดนั้นเป็นการประเมินที่ค่อนข้างดี
Mike Cooper

1
ฉันพบบล็อกนี้มีประโยชน์จริง ๆ : ทำความเข้าใจกับการโหลดซีพียูของ Linux
atmaish

คำตอบ:


59

โหลดเฉลี่ยเป็นเครื่องวัดจำนวนกระบวนการโดยเฉลี่ยและเรียกร้องความสนใจของ CPU พร้อมกัน

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

โดยทั่วไปนี่เป็นการคำนวณที่มีประสิทธิภาพอย่างที่คุณจะได้รับไม่มีการสูญเสียเนื่องจากสวิตช์บริบท

อย่างไรก็ตามในระบบปฏิบัติการมัลติทาสกิ้งที่ทันสมัยมีมากกว่าหนึ่งสิ่งที่ต้องการความสนใจของ CPU ดังนั้นภายใต้การโหลดในระดับปานกลางจากกระบวนการเดียวโหลดเฉลี่ยควรลอยตัวระหว่าง 0.8 และ 2

หากคุณตัดสินใจที่จะทำสิ่งที่บ้าเช่นสร้างเคอร์เนลด้วยmake -j 60แม้จะมีเพียงหนึ่งหน่วยประมวลผลเชิงตรรกะแล้วโหลดเฉลี่ยจะรีบไปที่ 60 และคอมพิวเตอร์ของคุณจะไร้ประโยชน์อย่างไม่น่าเชื่อสำหรับคุณ (ความตายโดยการเปลี่ยนบริบท)

นอกจากนี้โปรดทราบว่าการวัดนี้ไม่คำนึงถึงจำนวนคอร์ / CPU ที่มี สำหรับระบบที่มีสองแกนการรันหนึ่งกระบวนการที่ใช้คอร์ทั้งหมด (ปล่อยให้ idle อื่นไม่ทำงาน) ส่งผลให้โหลดเฉลี่ย 1.0 ในการตัดสินใจว่าระบบที่โหลดนั้นคุณจะต้องทราบจำนวนแกนประมวลผลและทำการหารด้วยตัวคุณเอง


1
ดังนั้นโหลดเฉลี่ยน้อยกว่า 1 จึงหมายความว่า "กระบวนการโดยทั่วไปไม่ต้องรอ"? ฉันสามารถแปลค่าเฉลี่ยการโหลดของ 2 เป็น "แต่ละกระบวนการใช้เวลาประมาณสองเท่าตราบเท่าที่มันจะอยู่ในสภาพที่เหมาะ" (ฉันรู้ว่ามี I / O ต้องกังวลเกี่ยวกับเช่นกัน)
จอห์น Fouhy

ใช่ว่าจะทำให้ความรู้สึกไม่สนใจ IO ที่เป็น;)
เคนท์เฟรดริก

@ KentFredric "โดยทั่วไปการคำนวณที่มีประสิทธิภาพที่สุดเท่าที่คุณจะได้รับไม่มีการสูญเสียอันเนื่องมาจากการสลับบริบท" ... กระบวนการ 1 กระบวนการทำงานที่ 100% ตลอดเวลามีประสิทธิภาพหรือไม่? แน่นอนฉันขาดอะไรบางอย่างพื้นฐานที่นี่ คุณช่วยอธิบายความหมายของคุณได้ไหม ฉันสับสนว่าหนึ่งกระบวนการสามารถบีบอัดทรัพยากร cpu ทั้งหมดให้มีประสิทธิภาพได้อย่างไร
Geek

2
ฉันรู้ว่ากระบวนการทำงานที่ 100% ไม่ได้ฟังว่า "มีประสิทธิภาพ" มาก แต่ถ้ากระบวนการ จำกัด โดยพลการให้ใช้เพียง 20% มันจะใช้เวลานานถึง 5 เท่า ดังนั้นที่นี่ประสิทธิภาพหมายถึง "การใช้ทรัพยากรให้เกิดประโยชน์สูงสุด"
Kent Fredric

1
ดังนั้นสำหรับระบบแบบ n-cored ค่าเฉลี่ยการโหลดของ n หมายความว่าแต่ละคอร์คือ / กำลังจัดการกระบวนการ 100% ของเวลาและดังนั้นจึงมีประสิทธิภาพมากที่สุด?
joshreesjones

9

ผู้ชาย 5 proc:

/ proc / loadavg สามฟิลด์แรกในไฟล์นี้คือตัวเลขเฉลี่ยการโหลดที่ให้จำนวนงานในรันคิว (state R) หรือรอ disk I / O (state D) เฉลี่ยอายุ 1, 5 และ 15 นาที . พวกเขาเป็นเช่นเดียวกับจำนวนเฉลี่ยโหลดที่ได้รับจาก uptime (1) และโปรแกรมอื่น ๆ


3

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


2
ลิงค์นั้นลงวันที่ '03 Linux 2.6 ออกมาตั้งแต่นั้นมา (คุณจะสังเกตได้ว่าพวกเขากำลังใช้ 2.0, อุ๊ย) ตัวชี้วัดที่ปรากฏในทางปฏิบัติค่อนข้างแตกต่างจากที่ระบุไว้ในหน้านั้น
Kent Fredric

นี่คือหนึ่งในตอนท้ายของ '06 ซึ่งไม่แตกต่างจากบทความที่เชื่อมโยง: linuxjournal.com/article/9001
nagul

ลิงก์ของคุณยังใช้งานได้และเทอร์มินอลเอาท์พุทของพวกเขามาจากปี 2001 😂ยอดเยี่ยมมาก
MS Berends

2

ฉันอ้างอิงจากการอ้างอิงของหลักสูตร:

โหลดเฉลี่ยคือค่าเฉลี่ยของหมายเลขโหลดสำหรับช่วงเวลาที่กำหนด มันเข้าสู่กระบวนการบัญชีที่:

  • ใช้งาน CPU อย่างจริงจัง
  • พิจารณาว่ารันได้ แต่รอให้ CPU พร้อมใช้งาน
  • การนอนหลับ: นั่นคือการรอทรัพยากรบางประเภท (โดยทั่วไปคือ I / O)

ฉันอ้างอิงเพิ่มเติมเกี่ยวกับการตีความค่าเฉลี่ยของโหลด :

ค่าเฉลี่ยการโหลดจะแสดงโดยใช้ชุดตัวเลขสามชุดดังแสดงในตัวอย่างต่อไปนี้:

ข้อมูลชิ้นสุดท้ายคือภาระเฉลี่ยของระบบ สมมติว่าระบบของเราเป็นระบบ CPU เดียว 0.25 หมายความว่าในนาทีที่ผ่านมาโดยเฉลี่ยระบบได้ถูกใช้ไปแล้ว 25% 0.12 ในตำแหน่งถัดไปหมายความว่าในช่วง 5 นาทีที่ผ่านมาโดยเฉลี่ยระบบได้ใช้ไปแล้ว 12% และ 0.15 ในตำแหน่งสุดท้ายหมายความว่าในช่วง 15 นาทีที่ผ่านมาโดยเฉลี่ยระบบใช้งานไปแล้ว 15% หากเราเห็นค่า 1.00 ในตำแหน่งที่สองนั่นก็หมายความว่าระบบซีพียูเดี่ยวนั้นถูกใช้งานโดยเฉลี่ย 100% ในช่วง 5 นาทีที่ผ่านมา นี่เป็นสิ่งที่ดีถ้าเราต้องการใช้ระบบอย่างเต็มที่ ค่ามากกว่า 1.00 สำหรับระบบ CPU เดียวหมายความว่าระบบมีการใช้มากเกินไป: มีกระบวนการที่ต้องใช้ CPU มากกว่า CPU ที่มีอยู่

หากเรามี CPU มากกว่าหนึ่งตัวให้พูดว่าระบบ quad-CPU เราจะหารจำนวนโหลดเฉลี่ยด้วยจำนวน CPU ในกรณีนี้ตัวอย่างเช่นการเห็นค่าเฉลี่ยการโหลด 1 นาทีที่ 4.00 แสดงว่าระบบโดยรวมคือ 100% (4.00 / 4) ที่ใช้ในช่วงนาทีสุดท้าย

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


การเพิ่มลิงก์ไปยังข้อมูลอ้างอิงของคุณจะเป็นประโยชน์
Pierz

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