13 คะแนน โดย GN⁺ 2024-09-20 | 4 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ความคิดเห็น

 
ilotoki0804 2024-09-23

น่าจะมีคำอธิบายสั้น ๆ ไว้บ้างว่า ระบบปฏิบัติการเรียลไทม์คืออะไร PREEMPT_RT คืออะไร และเกี่ยวข้องกับระบบปฏิบัติการเรียลไทม์อย่างไร แต่เสียดายที่แทบไม่มีรายละเอียดเลย T_T

 
tongji 2024-09-23

ความแตกต่างหลักระหว่าง Linux กับ Real-Time Operating System (RTOS) อยู่ที่ความสามารถด้านเวลาจริงและการทำงานแบบกำหนดได้แน่นอน ความแตกต่างนี้ส่งผลอย่างมากต่อข้อจำกัดด้านเวลาที่ระบบต้องตอบสนองและความแม่นยำ และช่วยให้เข้าใจว่า OS แต่ละแบบเหมาะกับสถานการณ์ใด

  1. ภาพรวมของ Linux และ RTOS
    Linux: เป็นระบบปฏิบัติการที่โดยทั่วไปใช้ Linux kernel ที่มีการปรับแต่ง และถูกใช้งานบนฮาร์ดแวร์แบบ embedded ที่หลากหลาย ใช้งานง่ายสำหรับผู้ใช้ และมีฟังก์ชันต่าง ๆ เช่น เครือข่าย file system และไดรเวอร์ จึงเหมาะกับแอปพลิเคชันที่ซับซ้อน

RTOS (Real-Time Operating System): เป็นระบบปฏิบัติการที่รับประกันการตอบสนองซึ่งต้องประมวลผลงานให้เสร็จภายในเวลาที่กำหนด RTOS มักใช้ในงานที่การตอบสนองแบบเวลาจริงมีความสำคัญ เช่น ระบบอัตโนมัติในอุตสาหกรรม อุปกรณ์การแพทย์ และระบบควบคุมยานยนต์

  1. ความแตกต่างด้านเวลาจริงและการทำงานแบบกำหนดได้แน่นอน
    ลักษณะของ 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 ที่ต่ำมาก เหมาะเมื่อจำเป็นต้องมีการตอบสนองที่รวดเร็วในระดับฮาร์ดแวร์

  1. สรุปความแตกต่างหลักในมุมมองด้านเวลาจริง
    คุณสมบัติ || Linux RTOS
    ============================================================
    เวลาตอบสนอง || ไม่กำหนดแน่นอน, มีความผันผวน กำหนดได้แน่นอน, รับประกันเวลาตอบสนองที่คงที่
    การจัดการลำดับความสำคัญ || มีลำดับความสำคัญ แต่ไม่รับประกันเวลาจริง ลำดับความสำคัญชัดเจน และ
    || ประมวลผลงานที่มีความสำคัญสูงก่อน
    kernel || ขนาดใหญ่และมีฟังก์ชันมาก ขนาดเล็กและน้ำหนักเบา
    latency || ได้รับผลจากเครือข่าย, disk I/O เป็นต้น ต่ำมาก และแทบคงที่
    จึงอาจเกิดความล่าช้าได้
    ความซับซ้อนของระบบ || เหมาะกับการรันแอปพลิเคชันที่ซับซ้อน เหมาะกับงานเวลาจริงที่ไม่ซับซ้อน
    การใช้งาน || มัลติมีเดีย, เครือข่าย เป็นต้น การควบคุมอุตสาหกรรม, หุ่นยนต์, อุปกรณ์การแพทย์ เป็นต้น
    || อินเทอร์เฟซผู้ใช้ที่ซับซ้อน
    บทสรุป
    Embedded Linux เหมาะกับระบบ embedded ที่ต้องการการประมวลผลเครือข่าย แอปพลิเคชันมัลติมีเดีย และอินเทอร์เฟซผู้ใช้ที่ซับซ้อน แม้จะปรับปรุงประสิทธิภาพแบบเวลาจริงได้ในระดับหนึ่งด้วยแพตช์เวลาจริง แต่ก็ยังไม่เป็นแบบกำหนดได้แน่นอนเท่า RTOS

RTOS เป็นสิ่งจำเป็นสำหรับแอปพลิเคชันแบบ mission-critical ที่เวลาเป็นปัจจัยสำคัญ หากต้องการเวลาตอบสนองที่คงที่ โดยเฉพาะในสภาพแวดล้อมที่มีข้อจำกัดด้านเวลาจริง เช่น การควบคุมฮาร์ดแวร์ หุ่นยนต์อุตสาหกรรม อวกาศยาน และอุปกรณ์การแพทย์ จะเลือกใช้ RTOS

 
helloppfm 2024-09-22

ก่อนหน้านี้ต้องปวดหัวกับ QNX และ VxWorks มาตลอด แต่ตอนนี้ทุกคนน่าจะเข้าถึงได้ง่ายขึ้นอีกหน่อยแล้ว

 
GN⁺ 2024-09-20
ความคิดเห็นจาก Hacker News
  • นี่คือความสำเร็จครั้งใหญ่หลังจากความพยายามหลายปี

    • งานส่วนใหญ่ดำเนินการโดย Thomas Gleixner และทีมของเขา
    • เขาก่อตั้ง Linutronix และปัจจุบัน Intel เป็นเจ้าของ
    • มีลิงก์ไปยัง pull request สำหรับ printk บิตสุดท้าย
    • มีลิงก์ไปยัง pull request สำหรับ PREEMPT_RT ในการตั้งค่าเคอร์เนล
    • มีลิงก์บันทึกแพตช์ RT บนเคอร์เนล v6.11
    • โครงสร้างพื้นฐาน printk แบบใหม่จำเป็นต้องถูกนำไปใช้ในไดรเวอร์จริง
    • ขนาดของชุดแพตช์ RT เล็กลงกว่าก่อนมาก
    • นี่เป็นสัญญาณใหญ่ที่แสดงว่า Linus ให้ความไว้วางใจ
    • ขอแสดงความยินดีกับทีม
  • หากอยากเห็นผลของเคอร์เนลแบบเรียลไทม์ แนะนำให้ build และรันยูทิลิตี cyclictest

    • มันวัดและแสดงเวลาแฝงของ interrupt ในแต่ละคอร์ CPU
    • หากไม่มีแพตช์เรียลไทม์ เวลาแฝงกรณีเลวร้ายที่สุดอาจไปถึงระดับหลายสิบมิลลิวินาที
    • เมื่อใช้แพตช์เรียลไทม์แล้ว เวลาแฝงกรณีเลวร้ายที่สุดจะลดลงเหลือระดับไมโครวินาทีเลขหลักเดียว
    • หากต้องการเวลาแฝงต่ำอย่างสม่ำเสมอ ควรปิดสถานะประหยัดพลังงาน
    • cyclictest เป็นเครื่องมือสำคัญเมื่อทำงานเรียลไทม์บน Linux
    • มีการอธิบายความแตกต่างของประสิทธิภาพระบบระหว่างการประมวลผล software-defined radio (SDR)
    • เมื่อใช้เคอร์เนลเรียลไทม์ SDR ก็ทำงานได้ไม่มีปัญหาแม้จะรัน GNOME และ libreoffice อยู่ด้วย
  • หากไม่มีชุดแพตช์ RT ก็สามารถรันเครื่องดนตรีได้หนึ่งหรือสองตัวที่เวลาแฝง 3ms

    • หากใช้ชุดแพตช์ RT จะสามารถรันเครื่องดนตรีได้ 6 ตัวที่เวลาแฝง 1ms
    • ไม่มีปัญหาแม้จะเปิดหน้าต่าง Chrome หลายสิบหน้าต่างและเล่นเกมยิง 3D ไปด้วย
    • เห็นความแตกต่างชัดเจนเมื่อเทียบกับ scheduler แบบ low-latency ทั่วไป
  • มีการแชร์ประสบการณ์ที่พยายามใช้ Linux สำหรับงานเรียลไทม์ในช่วงกลางทศวรรษ 2000

    • ตอนนั้น real-time Linux มีลักษณะค่อนข้างแฮ็กและอยู่นอก tree หลัก
    • วิธีแก้ทั่วไปเพื่อให้ได้พฤติกรรมแบบเรียลไทม์คือโฮสต์ Linux เป็นโปรเซสภายในไมโครเคอร์เนลเรียลไทม์แท้จริง
    • เหตุผลที่ real-time Linux ใช้งานจริงได้ยากคือจำเป็นต้องรับประกันเวลาในการรันของทุกส่วนที่ไม่สามารถ preempt ได้
    • สงสัยว่าข้อกำหนดนี้ถูกแก้ไขอย่างไร
    • ถามว่า Linux รองรับ priority inversion หรือไม่
  • มีคำถามว่ามีแหล่งข้อมูลดี ๆ อธิบายว่าการเขียนโปรแกรมแบบเรียลไทม์ทำอย่างไรหรือไม่

    • สงสัยว่าจะตรวจสอบได้อย่างไรว่าซอฟต์แวร์เป็นแบบเรียลไทม์จริง
    • ถามว่าการเขียนโค้ดแบบเรียลไทม์แตกต่างจากการเขียนโค้ดทั่วไปหรือไม่
    • สงสัยว่า CPU architecture สมัยใหม่ส่งผลต่อการเขียนโปรแกรมแบบเรียลไทม์อย่างไร
  • มีการตั้งข้อสงสัยต่อคำกล่าวที่ว่า Torvalds เป็นคนเขียนโค้ดดั้งเดิมของ printk

    • ไม่เห็นด้วยกับคำอธิบายเกี่ยวกับเครื่องมือดีบัก printk
  • สิ่งนี้จะช่วยชุมชน CNC ได้มาก

    • RT เป็นสิ่งจำเป็นและทำให้การ build ง่ายขึ้นมาก
  • คิดว่านี่เจ๋งมาก

    • สงสัยว่าจะ “เปิดใช้” อย่างไร
    • ถามว่าเป็นตัวเลือกตอนคอมไพล์/บูต หรือเป็นการที่โปรเซสที่กำลังรันบนระบบร้องขอการรับประกัน time slice/latency
  • สงสัยว่าการใช้เคอร์เนลเรียลไทม์มีข้อเสียอะไรบ้างสำหรับผู้ใช้เดสก์ท็อป