ค่าเฉลี่ยการโหลดของ 0.00 มีอยู่อย่างไร


12

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


6
โปรดทราบว่าในกรณีส่วนใหญ่สิ่งที่คุณเห็นว่าเป็น 0.00 คือ 0.0001 จริงหรือมากกว่านั้น
ลาสม่า HH

1
ในวันเก่ามันเป็นความยาวเฉลี่ยของคิวการทำงาน กล่าวอีกนัยหนึ่งว่ามีกี่กระบวนการที่พร้อมที่จะดำเนินการ (และไม่รอ I / O เป็นต้น) หากไม่มีให้เลยคือ 0.00 ทุกวันนี้สิ่งนี้เป็นประสบการณ์ของฉันที่เป็นไปได้หากคุณไม่ได้เรียกใช้กราฟิกเดสก์ท็อป แต่เป็นเพียงเซิร์ฟเวอร์ที่ใช้ GUI น้อยกว่า
Thorbjørn Ravn Andersen

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

คำตอบ:


16

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

ตัวอย่างเช่นค่าเฉลี่ยการโหลด 0.6 มากกว่า 5 นาทีมักจะหมายความว่าในช่วง 5 นาทีนั้น CPU ถูกใช้เป็นเวลา 3 นาทีโดยกระบวนการ (es) (หรือโดยเคอร์เนล) และรวม 2 นาที ไม่ได้ใช้งาน แต่อย่างที่ @UKMonkey สังเกตก็อาจหมายถึงว่าหลังจากทำอะไรไป 4 นาทีครึ่งกระบวนการ 6 รายการแข่งขันกันสำหรับซีพียูในช่วง 30 วินาทีที่ผ่านมา ...

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

ลิงก์ของ @ Panther ให้การสนทนาเชิงลึกเพิ่มเติมเกี่ยวกับค่าเฉลี่ยของการโหลด


1
ค่าเฉลี่ยการโหลด 0.6 เป็นเวลา 5 นาทีอาจหมายความว่าไม่ได้ทำอะไรเลยเป็นเวลา 4 และครึ่งนาที - จากนั้นในช่วง 30 วินาทีที่ผ่านมามีกระบวนการจำนวนมากรอเวลา CPU ... มันไม่ได้เป็นตัวบ่งบอกว่า CPU ทำไปแล้ว แต่มีกี่กระบวนการที่รอการใช้งาน
UKMonkey

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

13

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

ต่อไปนี้จะถือว่า CPU แกนเดียว (เธรดเดียว):

  • 0.0

    CPU ไม่ได้ทำอะไรเลย หากกระบวนการใดกำลังจะเริ่มใช้งาน CPU มันก็จะเป็นกระบวนการเดียวที่ใช้มัน

    idle CPU ไม่ได้หมายความว่าไม่มีกระบวนการที่ทำงานอยู่ ตัวอย่างเช่นบริการพื้นหลังและเคอร์เนลยังคงทำงานอยู่และยังคงมีหน่วยความจำอยู่ พวกเขาไม่ได้ใช้ CPU เพราะพวกเขาไม่ได้ทำอะไรเลย

  • 1.0

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

  • มากกว่า 1.0

    CPU มีการใช้งานสูงสุดและมีหลายกระบวนการที่ต้องการใช้พร้อมกันเพื่อให้ทำงานได้อย่างมีประสิทธิภาพช้ากว่าที่พวกเขาจะสามารถทำงานบน CPU ที่ไม่ทำงาน ตัวอย่างเช่นค่าเฉลี่ยการโหลด 3.0 หมายถึงกระบวนการกำลังทำงานที่ความเร็วหนึ่งในสามที่ต้องการใช้ ค่าเฉลี่ยการโหลด 50.0 หมายถึงกระบวนการกำลังทำงานที่ 1/50 ความเร็วที่พวกเขาต้องการเรียกใช้เนื่องจากกระบวนการอื่นทั้งหมดทำงานอยู่ นั่นคือตัวเลขที่สูงกว่า 1.0 บ่งชี้ว่า CPU ที่มีอยู่กำลังถูกยืดระหว่างกระบวนการมากขึ้นเรื่อย ๆ

การมีซีพียูหลายคอร์ไม่ได้เปลี่ยนแปลงความหมายของตัวเลข แต่สามารถเปลี่ยนการตีความได้ ตัวอย่างเช่นหากคุณมีซีพียู 4 คอร์โหลดที่ 1.0 จะยังคงเท่ากับกระบวนการหนึ่งที่ใช้ CPU 100% ในหนึ่งคอร์ แต่มีคอร์อื่นอีกสามคอร์ ดังนั้นสำหรับซีพียู 4 คอร์จุดที่มีประสิทธิภาพสูงสุดคือ 4.0 ไม่ใช่ 1.0 - และจุดที่ทุกอย่างทำงานด้วยประสิทธิภาพ 1/3 คือ 12.0 ไม่ใช่ 3.0 เพื่อเพิ่มความซับซ้อนกระบวนการเดียวอาจมีเธรดมากกว่าหนึ่งเธรดแต่ละตัวที่อ้างสิทธิ์ CPU ของตัวเอง ดังนั้นกระบวนการเดียวสามารถใช้ 100% ของทั้ง 4 คอร์หากเป็นแบบมัลติเธรด

โน๊ตสำคัญ

การใช้ CPU เป็นเพียงทรัพยากรเดียวที่อาจ จำกัด ประสิทธิภาพของกระบวนการ I / O เป็นอีกสิ่งหนึ่งและไม่ได้รวมอยู่ในโหลด CPU กระบวนการที่ใช้ซีพียูจำนวนหนึ่งจะไม่สามารถใช้งานได้มากขึ้นในเครื่องที่มีน้ำหนักเบาเนื่องจากอาจเกิดปัญหาคอขวดอื่น ๆ

โหลดเฉลี่ยที่ดีที่สุดคืออะไร

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

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

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

สำหรับแขกผู้ใช้งานเวอร์ช่วลไลเซชัน (เช่น KVM) ยิ่งโหลดเฉลี่ยลดลงก็ยิ่งดีเพราะคุณแชร์ CPU กับแขกคนอื่น ๆ บนโฮสต์เดียวกัน


ฉันตกใจที่เห็นว่าบางครั้งเธรด "กำลังรอ I / O" รวมอยู่ในโหลดเฉลี่ยserverfault.com/a/524818/27813ดูเหมือน ...
rogerdpack

@rodgerpack ใช่Dกระบวนการสถานะจะรวมอยู่ในค่าเฉลี่ยการโหลดใน Linux เสมอ ใช่มันสับสน ใช่เราควรดูการวัดอื่น ๆ เป็นหลักมากกว่า load avg
kubanczyk

2

ค่าเฉลี่ยโหลดเฉลี่ย 0.00 หมายถึงระบบของคุณไม่มีการใช้งานและไม่มีความล่าช้าหรือความเค้นหรือปัญหาคอขวดของ CPU ในช่วงเวลาที่วัด

มันไม่ได้หมายความว่า CPU ของคุณไม่ได้ใช้งาน แต่ก็หมายความว่าหากกระบวนการต้องการเวลาของ CPU จะไม่มีการรอ

เป็นการยากที่จะพูดเพิ่มเติมจากสิ่งเล็ก ๆ น้อย ๆ ที่คุณโพสต์เพราะขึ้นอยู่กับว่าคุณวัดภาระของคุณอย่างไร (ระบบ, ต่อผู้ใช้?) และเวลาใด

สำหรับรายละเอียดบางอย่างและการอ่านที่น่าสนใจดู

https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/

http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html

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