อัลกอริธึมการจัดตารางเวลาแบบใดที่ใช้ใน 15.04 เป็นไปได้ไหมที่จะเปลี่ยน


12

ต้องการทราบว่ามีการใช้กลไกการจัดตารางเวลาแบบใดใน 15.04 การแชร์เวลาหรือแบบเรียลไทม์ฉันค่อนข้างแน่ใจว่า FIFO, Round Robin, SJF หรือไม่

PS: ใหม่สำหรับ Linux

คำตอบ:


14

กระบวนการจัดตารางเวลา

ตัวกำหนดตารางเวลากระบวนการจัดการการจัดสรรทรัพยากร 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 แบบมัลติทาสกิ้งในอุดมคติที่อธิบายไว้ข้างต้น ในทางปฏิบัติรันไทม์เสมือนจริงของงานคือรันไทม์จริงของมันที่ถูกทำให้เป็นมาตรฐานกับจำนวนงานที่รันทั้งหมด


  • เคอร์เนล 2.4: ตัวกำหนดตารางเวลา O (n) ; ไม่มี Ubuntu ออกมาพร้อมกับเคอร์เนลนั้น
  • Kernel 2.6.0 เพื่อ 2.6.22: O (1) การจัดตารางเวลา Warty 4.10 (รุ่นที่ 1) ใช้ 2.6.8 Gutsy 7.10 เป็นคนสุดท้ายที่ใช้ 2.6.22 หรือต่ำกว่า

ตัวกำหนดตารางเวลา 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

นี่หมายถึงกลไกการตั้งเวลาที่ใช้ใน Ubuntu 15.04 โดยค่าเริ่มต้นคืออัลกอริธึมการแชร์เวลาหรือ CFS หรือไม่? หรือมันมาพร้อมกับ OTHER, RR และ FIFO? ฉันได้รับข้อมูลของฉันที่นี่: manpages.ubuntu.com/manpages/hardy/man2/…
leslie_lyj

คุณกำลังดู manpages สำหรับ Hardy มันค่อนข้างเก่า;) 'cfq' เป็นค่าเริ่มต้น ดูลิงค์เพิ่มไปยัง kernel / git / torvalds / linux.git
Rinzwind

1
... สิ่งนี้ทำให้เกิดความสับสนระหว่างดิสก์และตัวกำหนดเวลาcpuหรือไม่ พวกมันเป็นสัตว์ร้าย ตัวกำหนดตารางเวลา CPU จะตัดสินใจว่ากระบวนการใดที่จะทำงานถัดไปและตัวกำหนดตารางเวลาดิสก์จะตัดสินใจว่าจะเข้าถึงกลุ่มข้อมูลในดิสก์ได้อย่างไร ดูตัวอย่างwiki.archlinux.org/index.php/Maximizing_performance
Rmano

ประเด็นหลักของคำถามนี้คือการชี้แจงว่ากลไกการกำหนดเวลากระบวนการใดที่ Ubuntu 15.04 ทำงานอยู่ (ขออภัยถ้าฉันยังไม่ชัดเจน)
leslie_lyj

2
@Mano ฉันคิดว่านี่เป็นข้อมูลที่ไม่เฉพาะเจาะจงสำหรับการใช้งานจริง แต่อาการทางประสาทในตัวฉันก็หมดไป>: - D ใคร ๆ ที่อยากจะเล่นด้วยสิ่งนี้ควรถูกคาดหวังว่าจะเป็นผู้เชี่ยวชาญ: X
Rinzwind
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.