การทำงานเป็นอย่างไร


20

sched_setschedulerพูดว่า:

การกำหนดตารางเวลาทั้งหมดถูกจองไว้ล่วงหน้า: หากกระบวนการที่มีลำดับความสำคัญคงที่สูงกว่าพร้อมที่จะเรียกใช้กระบวนการที่กำลังทำงานอยู่ในปัจจุบันจะถูกจองล่วงหน้าและกลับสู่รายการรอสำหรับระดับความสำคัญคงที่

ในขณะที่setpriorityพูดว่า

สิ่งนี้ทำให้ค่า nice ที่ต่ำมาก (+19) เพื่อให้ CPU เล็ก ๆ น้อย ๆ กับกระบวนการอย่างแท้จริงเมื่อใดก็ตามที่มีการโหลดลำดับความสำคัญสูงกว่าอื่น ๆ บนระบบและทำให้ค่า nice ที่สูง (-20) ส่งมอบ CPU ส่วนใหญ่ให้กับแอปพลิเคชันที่ต้องการ

ดังนั้นการเปลี่ยนแปลงค่าที่ดีจะมีผลต่อการดำเนินการของโปรแกรมอย่างไร มันคล้ายกับการจัดตารางเวลา RT (ที่โปรแกรมที่มีค่า nice ที่ดีกว่ากำลังจะไปขัดจังหวะโปรแกรมที่มีค่า nice ต่ำกว่า) หรือไม่


ข้อมูลทั้งหมดบนอินเทอร์เน็ตเป็นวิธีการใช้niceและวิธีการเปลี่ยนลำดับความสำคัญของกระบวนการ ไม่มีลิงก์อธิบายว่ากระบวนการที่มีลำดับความสำคัญต่างกันอย่างไร ฉันไม่สามารถหารหัสต้นฉบับได้

คำตอบ:


24

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

Linux Schedely Fair Scheduler (CFS) คำนวณน้ำหนักตามความดี 1024 / (1.25 ^ nice_value)น้ำหนักประมาณเทียบเท่ากับ เมื่อค่า nice ลดลงน้ำหนักก็เพิ่มขึ้นเป็นทวีคูณ ช่วงเวลาที่จัดสรรสำหรับกระบวนการเป็นสัดส่วนกับน้ำหนักของกระบวนการหารด้วยน้ำหนักรวมของกระบวนการที่ทำงานได้ทั้งหมด การดำเนินงานของ CFS kernel/sched/fair.cอยู่ใน

CFS มีเวลาแฝงเป้าหมายสำหรับช่วงเวลาการจัดกำหนดการ เวลาแฝงเป้าหมายที่เล็กลงจะทำให้การโต้ตอบดีขึ้น แต่เมื่อเวลาแฝงเป้าหมายลดลงค่าโอเวอร์เฮดของการสลับจะเพิ่มขึ้นดังนั้นจึงลดปริมาณงานโดยรวม

ให้ตัวอย่างเวลาแฝงเป้าหมาย 20 มิลลิวินาทีและกระบวนการที่เรียกใช้ได้สองกระบวนการที่มีความเท่ากันอย่างเท่าเทียมกันจากนั้นกระบวนการทั้งสองจะทำงานเป็นเวลา 10 มิลลิวินาทีก่อนที่จะถูกประมวลผลล่วงหน้าเพื่อสนับสนุนกระบวนการอื่น หากมีกระบวนการที่มีความอ่อนโยนเท่ากัน 10 กระบวนการแต่ละกระบวนการจะประมวลผล 2 มิลลิวินาทีสำหรับแต่ละกระบวนการ

ตอนนี้ให้พิจารณาสองโพรเซสหนึ่งโพรเซสที่มีค่าเป็น 0 (ค่าดีฟอลต์), อีกอันที่มีความดีเท่ากับ 5 ความแตกต่างเชิงสัดส่วนระหว่างน้ำหนักที่สอดคล้องกันคือประมาณ 1/3 ซึ่งหมายความว่ากระบวนการลำดับความสำคัญสูงกว่าจะได้รับเวลาประมาณ 15 มิลลิวินาที ในขณะที่กระบวนการที่มีลำดับความสำคัญต่ำกว่าจะได้รับช่วงเวลา 5 มิลลิวินาที

สุดท้ายพิจารณากระบวนการที่สองด้วยค่าความดีที่ 5 และ 10 ตามลำดับ ในขณะที่ความแน่นอนสัมบูรณ์มีขนาดใหญ่กว่าในกรณีนี้ความแตกต่างสัมพัทธ์ระหว่างค่าความสวยงามจะเหมือนกันกับในตัวอย่างก่อนหน้า


แค่สิ่งที่ฉันกำลังมองหา ขอบคุณ! หลังจากนั้นฉันพบบทความนี้ซึ่งอธิบายทุกอย่างในรายละเอียด แต่ไม่ใช่สิ่งที่คุณเพิ่งเขียน
BЈовић

มีบางอย่างที่ฉันไม่เข้าใจ .. บทบาทของ vruntime คืออะไร
โต้คลื่นในฤดูใบไม้ร่วง

@Surferonthefall vruntime เป็นกลไกภายใน CFS ที่ติดตามกระบวนการ CPU เวลามากได้รับการจัดสรร คำถามนี้เกี่ยวกับค่า nice ที่ผู้ใช้สามารถเห็นได้ หากคุณมีคำถามเกี่ยวกับ internals CFS และไม่สามารถหาคำตอบอื่น ๆ , ถามคำถามใหม่
โทมัส Nyman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.