ต้องการทราบว่ามีการใช้กลไกการจัดตารางเวลาแบบใดใน 15.04 การแชร์เวลาหรือแบบเรียลไทม์ฉันค่อนข้างแน่ใจว่า FIFO, Round Robin, SJF หรือไม่
PS: ใหม่สำหรับ Linux
ต้องการทราบว่ามีการใช้กลไกการจัดตารางเวลาแบบใดใน 15.04 การแชร์เวลาหรือแบบเรียลไทม์ฉันค่อนข้างแน่ใจว่า FIFO, Round Robin, SJF หรือไม่
PS: ใหม่สำหรับ Linux
คำตอบ:
กระบวนการจัดตารางเวลา
ตัวกำหนดตารางเวลากระบวนการจัดการการจัดสรรทรัพยากร CPU สำหรับการดำเนินการกระบวนการและมีจุดมุ่งหมายเพื่อเพิ่มการใช้งาน CPU โดยรวมในขณะที่ยังเพิ่มประสิทธิภาพการโต้ตอบสูงสุด
ตั้งแต่เคอร์เนล 2.6.23 (ที่จะเป็นของ Hardy 8.04 LTS) Fair Scheduler (CFS)โดยสิ้นเชิงตาม "เส้นตายการหมุน Staircase" ภาพรวมจาก kernel.org :
CFS ย่อมาจาก "Completely Fair Scheduler" และเป็นตัวกำหนดตารางกระบวนการ "เดสก์ท็อป" ใหม่ที่ดำเนินการโดย Ingo Molnar และรวมเข้าด้วยกันใน Linux 2.6.23 มันเป็นการแทนที่รหัสการโต้ตอบ SCHED_OTHER ของ vanilla scheduler's ก่อนหน้า
80% ของการออกแบบของ CFS สามารถสรุปได้ในประโยคเดียว: CFS นั้นเป็นแบบจำลอง "CPU แบบมัลติทาสก์ที่เหมาะอย่างยิ่งและแม่นยำ" บนฮาร์ดแวร์จริง
"ซีพียูมัลติทาสกิ้งในอุดมคติ" เป็นซีพียู (ไม่มีอยู่จริง :-)) ที่มีพลังทางกายภาพ 100% และสามารถทำงานแต่ละงานด้วยความเร็วที่เท่าเทียมกันอย่างแม่นยำในแบบคู่ขนานแต่ละอันที่ความเร็ว 1 / nr_running ตัวอย่างเช่น: หากมี 2 งานที่กำลังทำงานอยู่มันจะทำงานแต่ละอย่างด้วยพลังงานกายภาพ 50% --- นั่นคือขนานกันจริง ๆ
บนฮาร์ดแวร์จริงเราสามารถเรียกใช้เพียงงานเดียวในครั้งเดียวดังนั้นเราจึงต้องแนะนำแนวคิดของ "รันไทม์เสมือน" รันไทม์เสมือนของงานระบุว่าช่วงเวลาถัดไปของมันจะเริ่มต้นการประมวลผลบน CPU แบบมัลติทาสกิ้งในอุดมคติที่อธิบายไว้ข้างต้น ในทางปฏิบัติรันไทม์เสมือนจริงของงานคือรันไทม์จริงของมันที่ถูกทำให้เป็นมาตรฐานกับจำนวนงานที่รันทั้งหมด
ตัวกำหนดตารางเวลา I / O
การกำหนดตารางเวลาอินพุต / เอาต์พุตเป็นวิธีที่ระบบปฏิบัติการใช้ในการตัดสินใจว่าการดำเนินการบล็อก I / O ในลำดับใดจะถูกส่งไปยังไดรฟ์ข้อมูลหน่วยเก็บข้อมูล
บทความ Phoronix เกี่ยวกับการกำหนดเวลา : Linux 3.16: กำหนดเวลา I / O กำหนดเวลาโดยทั่วไปนำไปสู่กับ SSD
คุณสามารถเปลี่ยนตารางเวลาของ I / O ได้โดยเพิ่มตัวเลือก "elevator =" เป็น "GRUB_CMDLINE_LINUX_DEFAULT =" ใน grub
มันอาจจะง่ายกว่า (สมมติว่า sda และกำหนดส่ง) เพื่อทำสิ่งนี้แม้ว่า:
หากต้องการแสดงรายการตัวกำหนดเวลาที่มีอยู่ให้ทำดังนี้
cat /sys/block/sda/queue/scheduler
และการเปลี่ยนตารางเวลา (สามารถทำได้ทันที):
echo deadline > /sys/block/sda/queue/scheduler
จากเคอร์เนล / git / torvalds / linux.git
คุณสามารถตรวจสอบสิ่งที่กำลังใช้กับ (สมมติว่า sda เป็นแม่แบบ):
cat /sys/block/sda/queue/scheduler