เชิงลบของกระบวนการทำงานที่มีลำดับความสำคัญตามเวลาจริงหรือไม่


9

มีข้อเสียของกระบวนการทำงานที่มีลำดับความสำคัญตามเวลาจริง ( chrt -f 99) หรือไม่?

สมมติฐานของฉันคือว่าสิ่งนี้รวมกับ affinity จะช่วยให้มั่นใจว่ากระบวนการใด ๆ ของฉัน pre-emption มีน้อยและดังนั้นใด ๆ ที่กระวนกระวายใจ เกี่ยวข้องกับกระวนกระวายใจ

(เคอร์เนล: 2.6.16 / 3.0)


2
สิ่งนี้มีประโยชน์สำหรับคุณ: จะลด jitter สำหรับ Java ได้อย่างไร
ire_and_curses

@ire_and_curses ปัจจุบันกระบวนการทำงานบนแกนแยกของตัวเอง (อย่างน้อยเธรดการประมวลผลหลัก) อย่างไรก็ตามอินเทอร์รัปต์ไม่ได้ถูกกำหนดเวลาบนแกนเดียวกันนั้น ) นี่เป็นความพยายามครั้งสุดท้ายมากกว่าความถี่ APIC น่าสนใจฉันไม่เคยพบมาก่อน
Nim

คำตอบ:


4

ข้อเสียอย่างฉับพลันที่สุดของการเรียกใช้กระบวนการแบบเรียลไทม์คือกระบวนการนั้นสามารถทำให้กระบวนการอื่น ๆ ในระบบหมดไปได้อย่างง่ายดาย ผลลัพธ์จากมุมมองของคุณคือคอมพิวเตอร์ไม่ตอบสนองต่อแป้นพิมพ์เมาส์และเครือข่ายอย่างสมบูรณ์ตราบใดที่กระบวนการเรียลไทม์ใช้ CPU สิ่งนี้อาจเกิดขึ้นได้หากมีสิ่งผิดปกติและกระบวนการเข้าสู่วงวนไม่สิ้นสุดหรือแม้กระทั่งชั่วคราวหากกระบวนการเริ่มการคำนวณที่ใช้เวลานานโดยไม่ต้องรออินพุตเป็นระยะ (ตัวอย่างเช่นอย่าใช้ SETI @ home พร้อมลำดับความสำคัญแบบเรียลไทม์)

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

sched_setscheduler(2)หน้าคนมีคำแนะนำที่ดี:

เนื่องจากการวนลูปไม่สิ้นสุดในกระบวนการที่กำหนดเวลาไว้ภายใต้ SCHED_FIFO หรือ SCHED_RR จะบล็อกกระบวนการทั้งหมดที่มีระดับความสำคัญต่ำกว่าตลอดไปนักพัฒนาซอฟต์แวร์ควรให้พร้อมใช้งานบนคอนโซลเชลล์ที่กำหนดเวลาภายใต้ลำดับความสำคัญคงที่สูงกว่าแอพพลิเคชันที่ทดสอบ สิ่งนี้จะช่วยให้เกิดการฆ่าฉุกเฉินของแอปพลิเคชันตามเวลาจริงที่ทดสอบซึ่งไม่ได้บล็อกหรือยกเลิกตามที่คาดไว้ ดูคำอธิบายของข้อ จำกัด ทรัพยากร RLIMIT_RTTIME ใน getrlimit (2)

นั่นควรเป็นเชลล์บนคอนโซล - ไม่ใช่ภายใต้ Xterm ยกเว้นว่าคุณต้องการให้ลำดับความสำคัญ X แบบเรียลไทม์ทั้งหมดเช่นกัน


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