ฉันกำลังดูการใช้งาน CPU เป็นเปอร์เซ็นต์โดยกระบวนการ กระบวนการใช้ CPU เพียง 50% อย่างไร กระบวนการใช้ 100% ไม่ได้ 0% แล้ว 100% ใช่ไหม มันไม่เหมือนคำสั่งอื่น ๆ ทุกโปรแกรมที่แตกต่างกัน
ฉันกำลังดูการใช้งาน CPU เป็นเปอร์เซ็นต์โดยกระบวนการ กระบวนการใช้ CPU เพียง 50% อย่างไร กระบวนการใช้ 100% ไม่ได้ 0% แล้ว 100% ใช่ไหม มันไม่เหมือนคำสั่งอื่น ๆ ทุกโปรแกรมที่แตกต่างกัน
คำตอบ:
มีเพียงโพลทั้งหมดประมาณหนึ่งครั้งต่อวินาที คุณกำลังดูว่ามันใช้วินาทีสุดท้ายเท่าไร
หากคุณเห็นซีพียูนั่งที่ 50% สักครู่สิ่งที่น่าจะเกิดขึ้นคือมันใช้ซีพียู 100% ในระบบซีพียูคู่
ในทางเทคนิคคุณถูกต้อง ในเวลาใดก็ตาม CPU กำลังถูกใช้งานหรือไม่ได้ใช้งาน แต่การแสดงให้เห็นว่าในกราฟจะไม่เป็นประโยชน์มากดังนั้นกราฟจึงใช้ค่าเฉลี่ยของการใช้ CPU ในบางช่วงเวลาซึ่งอาจเป็นในแต่ละวินาที
ระบบปฏิบัติการกำหนดเวลาดำเนินการในช่วงระยะเวลาหนึ่ง ดังนั้นหากกระบวนการถูกกำหนดเวลาไว้ (พูด) 1 มิลลิวินาทีจาก 10 มิลลิวินาทีก็จะใช้ซีพียู 10%
มันใช้งานง่ายเล็กน้อยเนื่องจาก (ในระบบเธรดเดี่ยว CPU เดียว) กระบวนการนั้นกำลังทำงานอยู่หรือไม่ได้ทำงานอยู่ นั่นคือมันใช้ 100% หรือ 0% เปอร์เซ็นต์ที่คุณเห็นนั้นวัดได้จากช่วงเวลาหนึ่ง ๆ และเป็นตัวชี้วัดของระบบปฏิบัติการที่จัดสรรช่วงเวลาให้กับกระบวนการของคุณที่จะทำงาน
โปรดทราบว่ากระบวนการของคุณจะไม่สนับสนุนสิ่งนี้หากคุณเข้าถึง I / O ดังนั้นหากคุณทำการคำนวณขนาดใหญ่คุณจะต้องลงทะเบียน 100% (หากไม่มีสิ่งใดทำงาน) หากคุณรอเครือข่ายแพ็คเก็ต / การเข้าถึงดิสก์เป็นต้นตัวเลข CPU ของคุณจะลดลงแม้ว่ากระบวนการของคุณจะยังทำงานอยู่ก็ตาม
ในระดับที่ต่ำมากคุณพูดถูก ตัวประมวลผลกำลังประมวลผลคำสั่งสำหรับกระบวนการที่กำหนดไม่ว่าในกรณีใดก็ตาม
แต่ระบบปฏิบัติการของคุณอยู่ระหว่างกระบวนการและตัวประมวลผลทำให้พวกเขาแบ่งปันเวลา เปอร์เซ็นต์ที่คุณเห็นคือเปอร์เซ็นต์ของเวลาประมวลผลล่าสุดที่ระบบปฏิบัติการอนุญาตให้กระบวนการนั้น
มันขึ้นอยู่กับเวลาเฉลี่ย แม้ว่าเธรดทั้งหมดจะมีเวลา CPU เท่ากัน (ขึ้นอยู่กับลำดับความสำคัญ) เธรดสามารถพูดว่า "ขอบคุณ แต่ฉันไม่ได้ใช้งาน" และผ่านมันไปที่เธรดถัดไป นั่นคือเหตุผลที่โปรแกรมไม่ได้ใช้เสมอเวลา% และโปรแกรมส่วนใหญ่ใช้ CPU 0% และโปรแกรมที่ต้องการ CPU จริงๆอาจใช้เวลาเกือบ 100% สำหรับตัวมันเอง
ทำไมถึงสูงสุด 50% คุณอาจมีแกน CPU สองแกนและใช้เพียงแกนเดียวเท่านั้น
หรือตามที่แนะนำก็ใช้ไฮเปอร์เธรด แต่ฉันไม่รู้ว่าอันนี้ทำงานอย่างไร
โปรแกรมของคุณอาจทำ I / O จำนวนมาก (ดิสก์หรือเครือข่ายอ่าน / เขียน) นั่นจะทำให้โปรแกรมไม่ว่าง แต่ต้องการเวลาของ CPU เพียงเล็กน้อยเท่านั้น
การใช้งานระบบถูกสุ่มตัวอย่างและโดยเฉลี่ยซึ่งเป็นสิ่งที่สมเหตุสมผลที่ต้องทำ
เช่นบันทึกเวลาที่กระบวนการ / เธรดที่ใช้ในการรันระหว่าง 1 วินาทีถูกเก็บไว้ หากใช้เวลา 1 วินาทีบน CPU นั่นคือ 100% CPU (หรือ 50% ถ้าคุณมี 2 CPU และต่อไป) ถ้าใช้เวลา 100ms นั่นคือการใช้งาน CPU 10%