การจัดตารางเวลากระบวนการแบบเรียลไทม์ใน Linux


24

ฉันได้เรียนรู้แนวคิดการตั้งเวลา ปัจจุบันความเข้าใจของฉันอยู่ในขณะนี้ดังต่อไปนี้

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

สำหรับกระบวนการเรียลไทม์การchrtส่งออกให้เป็น

chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99

อย่างที่เราเห็นสำหรับโพรเซส5ลำดับความสำคัญคือ 99 ซึ่งสูงที่สุด นอกจากนี้นโยบายการตั้งเวลาคือSCHED_FIFO

ตอนนี้สำหรับกระบวนการที่ไม่ใช่แบบเรียลไทม์chrtจะให้เอาต์พุตเป็น

chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0

ในฐานะที่เราสามารถดูกระบวนการ22383ลำดับความสำคัญคือ 0 SCHED_OTHERและนโยบายการจัดตารางเวลาคือ

คำถาม

  1. เป็นไปได้หรือไม่ที่ฉันจะทำให้กระบวนการใด ๆ เป็นกระบวนการตามเวลาจริง
  2. เป็นไปได้หรือไม่ที่ฉันจะตั้งอัลกอริทึมการจัดตารางเวลาอื่นSCHED_OTHERที่ไม่ใช่กระบวนการเรียลไทม์?
  3. จากที่นี่ฉันเห็นด้วยว่าฉันสามารถแก้ไขแอตทริบิวต์สำหรับกระบวนการที่กำลังทำงานอยู่ได้เช่น

    chrt -p prio pid
    

    นอกจากนี้ฉันเห็นchrt -mให้ฉันรายการอัลกอริทึมการตั้งเวลา คำสั่งให้ผลลัพธ์เป็นฉัน

    SCHED_OTHER min/max priority    : 0/0
    SCHED_FIFO min/max priority     : 1/99
    SCHED_RR min/max priority       : 1/99
    SCHED_BATCH min/max priority    : 0/0
    SCHED_IDLE min/max priority     : 0/0
    

    ตอนนี้ตามที่แนะนำข้างต้นถ้าฉันตั้งchrt -p 55 22383อัลกอริทึมที่จะใช้?

คำตอบ:


19

คำถามที่ 1

เป็นไปได้สำหรับผู้ใช้ที่จะใช้ลำดับความสำคัญตามเวลาจริงสำหรับกระบวนการเช่นกัน การกำหนดค่านี้สามารถตั้งค่าได้จาก/etc/security/limits.confไฟล์ ฉันเห็นเนื้อหาด้านล่างในไฟล์นั้น

# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>

หากเราตรวจสอบส่วนของรายการเราจะเห็นรายการด้านล่างซึ่งช่วยให้สามารถกำหนดลำดับความสำคัญตามเวลาจริงสำหรับผู้ใช้

#        - rtprio - max realtime priority

คำถามที่ 2 และคำถามที่ 3

หากต้องการตั้งค่านโยบายการกำหนดเวลาเป็นSCHED_FIFO:

chrt -f -p [1..99] {pid}

หากต้องการตั้งค่านโยบายการกำหนดเวลาเป็นSCHED_RR:

chrt -r -p [1..99] {pid}

ดังนั้นเพื่อตอบคำถามที่ 3 เราควรตรวจสอบอัลกอริทึมการตั้งเวลาที่มีอยู่และลำดับความสำคัญโดยใช้chrt -mคำสั่งจากนั้นใช้อัลกอริทึมการตั้งเวลาใด ๆ ที่เหมาะสมกับความต้องการของเรา ในการตั้งค่าลำดับความสำคัญที่แตกต่างกันเราสามารถใช้คำสั่งดังกล่าวข้างต้น

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