- Realtime Linux ถูกรวมเข้าเป็นส่วนหนึ่งของเคอร์เนลอย่างเป็นทางการ ทำให้ตอนนี้สามารถใช้ "Realtime Linux" ได้โดยไม่ต้องพึ่งระบบปฏิบัติการเรียลไทม์ (RTOS)
- หากต้องการใช้ "Realtime Linux" กับอุปกรณ์เสียง เลเซอร์เชื่อมในภาคอุตสาหกรรม หรือยานสำรวจดาวอังคาร ตัวเลือกนี้มีมานานแล้ว (ภายใต้สมมติฐานว่าไม่ได้เลือกใช้ทางเลือกอื่นอย่าง QNX)
- มหาวิทยาลัยต่าง ๆ เริ่มสร้างเคอร์เนลเรียลไทม์ของตนเองมาตั้งแต่ช่วงปลายทศวรรษ 1990
- ชุดแพตช์ PREEMPT_RT มีมาอย่างน้อยตั้งแต่ปี 2005
- แง่มุมบางส่วนของงานเรียลไทม์ เช่น NO_HZ ได้ถูกรวมเข้าสู่เมนไลน์เคอร์เนลมานานแล้ว ทำให้สามารถใช้งานได้ในดาต้าเซ็นเตอร์ คลาวด์คอมพิวติ้ง หรือระบบใด ๆ ที่มี CPU จำนวนมาก
การรวม PREEMPT_RT เข้าสู่เมนไลน์
- มีความเป็นไปได้สูงว่า PREEMPT_RT จะถูกรวมเข้าสู่เมนไลน์ในเคอร์เนล 6.12
- การอนุมัติขั้นสุดท้ายเกิดขึ้นระหว่างที่ Linus Torvalds เข้าร่วมงาน Open Source Summit Europe
- Torvalds เป็นผู้เขียนโค้ดดั้งเดิมของ
printk ซึ่งเป็นเครื่องมือดีบักที่สามารถระบุจังหวะที่โปรเซสชนกันได้อย่างแม่นยำ แต่ก็เพิ่ม latency ที่ขัดกับแนวคิดของการประมวลผลแบบเรียลไทม์
- บล็อก Phoronix ติดตามความคืบหน้าของ PREEMPT_RT ในการเข้าสู่เคอร์เนลมาโดยตลอด รวมถึงการเปลี่ยนแปลงของ
printk สำหรับการรองรับ thread/atomic console ซึ่งมีความสำคัญต่อการทำให้ระบบเรียลไทม์เข้าเมนไลน์
ผลกระทบต่อเดสก์ท็อป Linux? แทบไม่มี
- นอกเหนือจากงานผลิตเสียงระดับสูงหรือการทำสำเนา (ซึ่งแม้แต่นั่นก็ยังมีข้อถกเถียง) เคอร์เนลเรียลไทม์จะไม่ได้ทำให้หน้าต่างทำงานเร็วขึ้นหรือทำให้โปรแกรมทำงานเร็วขึ้น
- อย่างไรก็ตาม การรับประกันการทำงานและ latency สูงสุดในกรณีเลวร้ายที่สุดที่ Realtime Linux มอบให้ มีประโยชน์อย่างมากกับระบบที่ใช้ตรวจสอบเบรกของรถยนต์ ควบคุมเครื่อง CNC และกำกับดูแลระบบหลาย CPU ที่ซับซ้อน
- การนำ PREEMPT-RT เข้าไว้ในเมนไลน์เคอร์เนลจะทำให้การดูแลรักษาระบบเรียลไทม์ง่ายขึ้น และไม่จำเป็นต้องจัดการแพตช์นอก tree อีกต่อไป
ผลกระทบต่อผู้ให้บริการโซลูชันระบบปฏิบัติการเรียลไทม์เฉพาะทาง
- Ubuntu เริ่มให้บริการดิสทริบิวชันเวอร์ชันเรียลไทม์ตั้งแต่ปี 2023 แต่ต้องใช้การสมัครสมาชิก Ubuntu Pro
- Ubuntu เคยออกรีลีสเรียลไทม์พร้อมการแก้ไข แพตช์ การรวมโมดูล และการทดสอบสำหรับงานด้านหุ่นยนต์ ระบบอัตโนมัติ Embedded Linux และความต้องการแบบเรียลไทม์อื่น ๆ
- จากนี้ไป สถานการณ์ของผู้ให้บริการโซลูชันระบบปฏิบัติการเรียลไทม์เฉพาะทางสำหรับระบบ mission-critical อาจเปลี่ยนไป
มุมมองของ Linus Torvalds
- ในงาน Kernel Summit ปี 2006 Torvalds เคยกล่าวว่า "การควบคุมเลเซอร์ด้วย Linux เป็นเรื่องบ้าบอ แต่ทุกคนในห้องนี้ต่างก็บ้าในแบบของตัวเอง"
- เขายังกล่าวว่า "ถ้าคุณต้องการใช้ Linux เพื่อควบคุมเลเซอร์เชื่อมอุตสาหกรรม ก็ไม่มีปัญหาอะไรกับการใช้ PREEMPT_RT"
- ราว 18 ปีต่อมา Torvalds, ทีมเคอร์เนล และ Steven Rostedt ผู้ดูแลระยะยาวและผู้ผลักดันด้านเรียลไทม์ ได้ทำให้งานลักษณะนี้ทำได้ง่ายขึ้น
ความเห็นของ GN⁺
- คาดว่าการรวม Realtime Linux เข้าสู่เมนไลน์จะช่วยขยายขอบเขตการใช้งานของ Linux ให้กว้างขึ้น และเปิดทางให้ถูกนำไปใช้ในหลากหลายสาขามากขึ้น
- โดยเฉพาะในภาคอุตสาหกรรม ระบบ Embedded และงานวิศวกรรมหุ่นยนต์ที่ความเป็นเรียลไทม์มีความสำคัญ Linux น่าจะถูกใช้งานอย่างแพร่หลายยิ่งขึ้น
- อย่างไรก็ตาม การนำ Realtime Linux มาใช้ยังต้องพิจารณาเรื่องความเข้ากันได้ของฮาร์ดแวร์ ความเสถียรของระบบ และความยากง่ายในการพัฒนา
- ระบบปฏิบัติการเรียลไทม์เดิมอย่าง QNX, VxWorks และ INTEGRITY ก็ยังคงมีความสามารถในการแข่งขันในแต่ละด้านอยู่ จึงควรเลือกให้เหมาะกับสถานการณ์
- เมื่อ Realtime Linux ถูกรวมเข้าเมนไลน์แล้ว คาดว่าระบบนิเวศการพัฒนาจะคึกคักขึ้นยิ่งกว่าเดิม และขอบเขตการรองรับฮาร์ดแวร์กับซอฟต์แวร์หลากหลายประเภทจะกว้างขึ้น
4 ความคิดเห็น
น่าจะมีคำอธิบายสั้น ๆ ไว้บ้างว่า ระบบปฏิบัติการเรียลไทม์คืออะไร PREEMPT_RT คืออะไร และเกี่ยวข้องกับระบบปฏิบัติการเรียลไทม์อย่างไร แต่เสียดายที่แทบไม่มีรายละเอียดเลย T_T
ความแตกต่างหลักระหว่าง Linux กับ Real-Time Operating System (RTOS) อยู่ที่ความสามารถด้านเวลาจริงและการทำงานแบบกำหนดได้แน่นอน ความแตกต่างนี้ส่งผลอย่างมากต่อข้อจำกัดด้านเวลาที่ระบบต้องตอบสนองและความแม่นยำ และช่วยให้เข้าใจว่า OS แต่ละแบบเหมาะกับสถานการณ์ใด
Linux: เป็นระบบปฏิบัติการที่โดยทั่วไปใช้ Linux kernel ที่มีการปรับแต่ง และถูกใช้งานบนฮาร์ดแวร์แบบ embedded ที่หลากหลาย ใช้งานง่ายสำหรับผู้ใช้ และมีฟังก์ชันต่าง ๆ เช่น เครือข่าย file system และไดรเวอร์ จึงเหมาะกับแอปพลิเคชันที่ซับซ้อน
RTOS (Real-Time Operating System): เป็นระบบปฏิบัติการที่รับประกันการตอบสนองซึ่งต้องประมวลผลงานให้เสร็จภายในเวลาที่กำหนด RTOS มักใช้ในงานที่การตอบสนองแบบเวลาจริงมีความสำคัญ เช่น ระบบอัตโนมัติในอุตสาหกรรม อุปกรณ์การแพทย์ และระบบควบคุมยานยนต์
ลักษณะของ Linux
เวลาตอบสนองแบบไม่กำหนดแน่นอน: Linux kernel ถูกออกแบบโดยเน้น throughput และประสิทธิภาพเป็นหลัก จึงไม่สามารถคาดการณ์ได้อย่างแม่นยำว่างานจะถูกรันเมื่อใด เนื่องจาก scheduler ต้องจัดการงานที่มีลำดับความสำคัญต่างกัน และยังได้รับผลจากกระบวนการที่ซับซ้อน เช่น งาน I/O และการจัดการหน่วยความจำ
ข้อจำกัดของ Preemption: Linux kernel ทั่วไปมีความสามารถด้านเวลาจริงอยู่บ้าง แต่ไม่ใช่งานทุกอย่างใน kernel ที่จะถูกขัดจังหวะได้ทันที โดยเฉพาะเมื่อ kernel ไม่ตอบสนองต่อ interrupt เป็นเวลานาน หรือกำลังทำงานสำคัญอยู่จนทำให้ task อื่นล่าช้า
ความผันผวนของ Latency: ในสภาพแวดล้อมที่มีงานระบบหลากหลายและมี multitasking ค่า latency อาจเปลี่ยนแปลงอย่างไม่สม่ำเสมอ ซึ่งอาจได้รับผลจากหลายปัจจัย เช่น การประมวลผล network stack และ disk I/O
แพตช์เวลาจริง (PREEMPT-RT): เพื่อปรับปรุงการตอบสนองแบบเวลาจริง สามารถใช้แพตช์ PREEMPT-RT เพื่อเพิ่มความเป็นเวลาจริงของ kernel ได้ แต่ก็ยังไม่สามารถรับประกันการตอบสนองที่คาดการณ์ได้สมบูรณ์แบบเหมือน RTOS
ลักษณะของ RTOS
เวลาตอบสนองแบบกำหนดได้แน่นอน: RTOS ถูกออกแบบให้รับประกันได้ว่างานจะเสร็จภายในเวลาที่กำหนด เนื่องจากต้องดำเนินงานให้เสร็จภายในช่วงเวลาที่กำหนดไว้ การตอบสนองจึงสม่ำเสมอและคาดการณ์ได้สูง
การจัดการ interrupt ความเร็วสูง: RTOS จัดการ interrupt ได้อย่างรวดเร็วและให้ความสำคัญสูง โดยในกรณีส่วนใหญ่จะให้ความสำคัญกับ interrupt เพื่อให้ task สำคัญได้รับการประมวลผลอย่างรวดเร็ว ซึ่งช่วยให้ตอบโจทย์ข้อกำหนด hard real-time ได้
kernel ขนาดเล็กและน้ำหนักเบา: RTOS มีเฉพาะฟังก์ชันขั้นต่ำที่จำเป็น ทำให้มีขนาดเล็กมาก และการจัดตารางงานมีประสิทธิภาพสูง ดังนั้นภาระของระบบจึงต่ำ และสามารถรันงานตามจังหวะเวลาที่ออกแบบไว้อย่างแม่นยำ
การจัดตารางงานตามลำดับความสำคัญ: มีการกำหนดลำดับความสำคัญของ task อย่างชัดเจน และงานที่มีความสำคัญสูงสามารถได้รับการประมวลผลทันที ซึ่งทำให้เหมาะกับสภาพแวดล้อมแบบ mission-critical
Low Latency: RTOS ประมวลผลงานแบบเวลาจริงด้วย latency ที่ต่ำมาก เหมาะเมื่อจำเป็นต้องมีการตอบสนองที่รวดเร็วในระดับฮาร์ดแวร์
คุณสมบัติ || Linux RTOS
============================================================
เวลาตอบสนอง || ไม่กำหนดแน่นอน, มีความผันผวน กำหนดได้แน่นอน, รับประกันเวลาตอบสนองที่คงที่
การจัดการลำดับความสำคัญ || มีลำดับความสำคัญ แต่ไม่รับประกันเวลาจริง ลำดับความสำคัญชัดเจน และ
|| ประมวลผลงานที่มีความสำคัญสูงก่อน
kernel || ขนาดใหญ่และมีฟังก์ชันมาก ขนาดเล็กและน้ำหนักเบา
latency || ได้รับผลจากเครือข่าย, disk I/O เป็นต้น ต่ำมาก และแทบคงที่
จึงอาจเกิดความล่าช้าได้
ความซับซ้อนของระบบ || เหมาะกับการรันแอปพลิเคชันที่ซับซ้อน เหมาะกับงานเวลาจริงที่ไม่ซับซ้อน
การใช้งาน || มัลติมีเดีย, เครือข่าย เป็นต้น การควบคุมอุตสาหกรรม, หุ่นยนต์, อุปกรณ์การแพทย์ เป็นต้น
|| อินเทอร์เฟซผู้ใช้ที่ซับซ้อน
บทสรุป
Embedded Linux เหมาะกับระบบ embedded ที่ต้องการการประมวลผลเครือข่าย แอปพลิเคชันมัลติมีเดีย และอินเทอร์เฟซผู้ใช้ที่ซับซ้อน แม้จะปรับปรุงประสิทธิภาพแบบเวลาจริงได้ในระดับหนึ่งด้วยแพตช์เวลาจริง แต่ก็ยังไม่เป็นแบบกำหนดได้แน่นอนเท่า RTOS
RTOS เป็นสิ่งจำเป็นสำหรับแอปพลิเคชันแบบ mission-critical ที่เวลาเป็นปัจจัยสำคัญ หากต้องการเวลาตอบสนองที่คงที่ โดยเฉพาะในสภาพแวดล้อมที่มีข้อจำกัดด้านเวลาจริง เช่น การควบคุมฮาร์ดแวร์ หุ่นยนต์อุตสาหกรรม อวกาศยาน และอุปกรณ์การแพทย์ จะเลือกใช้ RTOS
ก่อนหน้านี้ต้องปวดหัวกับ QNX และ VxWorks มาตลอด แต่ตอนนี้ทุกคนน่าจะเข้าถึงได้ง่ายขึ้นอีกหน่อยแล้ว
ความคิดเห็นจาก Hacker News
นี่คือความสำเร็จครั้งใหญ่หลังจากความพยายามหลายปี
หากอยากเห็นผลของเคอร์เนลแบบเรียลไทม์ แนะนำให้ build และรันยูทิลิตี cyclictest
หากไม่มีชุดแพตช์ RT ก็สามารถรันเครื่องดนตรีได้หนึ่งหรือสองตัวที่เวลาแฝง 3ms
มีการแชร์ประสบการณ์ที่พยายามใช้ Linux สำหรับงานเรียลไทม์ในช่วงกลางทศวรรษ 2000
มีคำถามว่ามีแหล่งข้อมูลดี ๆ อธิบายว่าการเขียนโปรแกรมแบบเรียลไทม์ทำอย่างไรหรือไม่
มีการตั้งข้อสงสัยต่อคำกล่าวที่ว่า Torvalds เป็นคนเขียนโค้ดดั้งเดิมของ printk
สิ่งนี้จะช่วยชุมชน CNC ได้มาก
คิดว่านี่เจ๋งมาก
สงสัยว่าการใช้เคอร์เนลเรียลไทม์มีข้อเสียอะไรบ้างสำหรับผู้ใช้เดสก์ท็อป