หากคุณทำงานกับระบบที่เวลาตอบสนองเป็นสิ่งสำคัญที่สุด PREEMPT_RT คือส่วนผสมที่เปลี่ยน Linux "ปกติ" ให้กลายเป็นระบบที่พร้อมใช้งานแบบเรียลไทม์ เรากำลังพูดถึงความล่าช้าที่ควบคุมได้ ตัวกำหนดเวลาที่มีความสำคัญอย่างเคร่งครัด และเครื่องมือวิเคราะห์ที่อนุญาตให้ปรับแต่งได้อย่างละเอียดถึงไมโครวินาทีสุดท้ายในเอกสารบทช่วยสอนนี้ คุณจะพบว่า PREEMPT_RT คืออะไร สถานะในเคอร์เนล วิธีการติดตั้งหรือคอมไพล์ วิธีการวัดและเพิ่มประสิทธิภาพ และแม้กระทั่งวิธีตั้งค่าใน VM แบบเรียลไทม์ด้วย ACRN ในรูปแบบที่จัดระบบอย่างดี
นอกเหนือจากทฤษฎีแล้ว ฉันยังนำเสนอคำแนะนำเชิงปฏิบัติที่ได้รับการสนับสนุนโดยสคริปต์ที่ช่วยทำการคอมไพล์เคอร์เนล RT แพ็คเกจที่พร้อมใช้งานในระบบปฏิบัติการยอดนิยม และสูตร Yocto โดยอัตโนมัติ นอกจากนี้ คุณยังจะได้เห็นวิธีการตรวจสอบว่าระบบกำลังทำงานในโหมด RT ตัวเลือกเคอร์เนลใดที่ต้องปิดใช้งานเพื่อหลีกเลี่ยงความล่าช้า และวิธีปรับแต่ง IRQ, CPU และบริการต่างๆเรายังได้ครอบคลุมถึงความเข้ากันได้ของไดรเวอร์ NVIDIA ในสภาพแวดล้อม PREEMPT_RT และกรณีในโลกแห่งความเป็นจริงด้วย Clear Linux บน Intel NUC ที่ออกแบบมาสำหรับงานที่สำคัญต่อภารกิจ
PREEMPT_RT คืออะไร และมันอยู่ตรงไหนในเคอร์เนล?
PREEMPT_RT ถูกสร้างขึ้นเป็นชุดแพตช์ที่เปลี่ยน Linux ให้เป็นระบบเรียลไทม์ โดยมีเป้าหมายเพื่อลดเวลาแฝงและรับประกันความสามารถในการคาดเดาได้ โครงการนี้เริ่มต้นในปี 2005 ภายใต้โครงการ Realtime-Preempt (-rt) ส่งต่อไปยัง Linux Foundation ในปี 2015 และมีบทบาทสำคัญในภาคส่วนต่างๆ เช่น การเงิน เสียง/วิดีโอระดับมืออาชีพ การบิน การแพทย์ หุ่นยนต์ โทรคมนาคม และระบบอัตโนมัติในอุตสาหกรรม.
ตั้งแต่ปี 2019 เป็นต้นมา โค้ดของมันได้รับการส่งเสริมไปสู่เคอร์เนลหลัก ซีรีส์ 6.12 ช่วยให้สามารถกำหนดค่าแบบเรียลไทม์ในเคอร์เนลหลักสำหรับ x86, ARM64 และ RISC-V ได้ โดยปลดล็อกหลังจากการรวมส่วนประกอบ printk ที่สำคัญและการรองรับคอนโซลแบบอะตอมมิกตัวควบคุม UART 8250 มีคอนโซลอะตอม ในขณะที่สถาปัตยกรรมอื่นๆ เช่น ARM และ POWERPC ยังคงต้องรวมส่วนสำคัญเข้าด้วยกัน ดังนั้น การรองรับเต็มรูปแบบอาจมาถึงช้ากว่าเล็กน้อยหากไม่รวมทุกอย่างไว้ในเวลาที่กำหนด
แม้ว่าการสนับสนุนพื้นฐานจะสิ้นสุดใน 6.12 ผู้ดูแลระบบแนะนำให้ปฏิบัติตามแพตช์ PREEMPT_RT ล่าสุดในคิว RT เมื่อต้องการประสิทธิภาพที่ดีที่สุด (สถาปัตยกรรมใหม่ การปรับแต่งกราฟิกที่เร่งความเร็ว และการปรับปรุงที่มักจะมาถึงก่อนในคิวแพตช์เสมอ) ในสภาพแวดล้อมการผลิต ขอแนะนำให้ใช้ RT tree เวอร์ชันเสถียรล่าสุด.
ในทางแนวคิด การเปลี่ยนแปลงที่สำคัญคือความสามารถในการแย่งชิงเกือบทุกส่วนของเคอร์เนล ซึ่งจะช่วยลดหน้าต่างที่ไม่หยุดชะงัก ซึ่งจะแปลเป็นการสั่นน้อยลงและการตอบสนองที่คาดเดาได้มากขึ้นเมื่อเทียบกับเคอร์เนลทั่วไปสิ่งที่ขาดไม่ได้เมื่องานไม่อาจรอได้

การกำหนดค่าเคอร์เนลที่จำเป็นสำหรับเวลาจริง
การตั้งค่าหลักคือการเปิดใช้งานเคอร์เนลที่สามารถถูกขัดจังหวะได้อย่างสมบูรณ์: CONFIG_PREEMPT_RT ในเคอร์เนลล่าสุด จะปรากฏภายใต้ "การตั้งค่าทั่วไป" และหากคุณไม่เห็นตัวเลือกนี้ การเปิดใช้งาน CONFIG_EXPERT มักจะเผยให้เห็นตัวเลือกนี้ในเวอร์ชันก่อนหน้านี้ PREEMPT_RT อาจอยู่ในเมนู "Preemption Model"
มีการตั้งค่าที่เน้นการดีบักทั่วไปซึ่งจะเพิ่มความล่าช้าและควรปิดใช้งานเมื่อคุณกำลังมองหาประสิทธิภาพแบบเรียลไทม์ ตัวอย่างทั่วไปที่ควรหลีกเลี่ยง: DEBUG_LOCKDEP, DEBUG_PREEMPT, DEBUG_OBJECTS และ SLUB_DEBUGหากคุณเริ่มต้นด้วยไฟล์ .config ของการแจกจ่าย เป็นไปได้ว่าไฟล์ใดไฟล์หนึ่งเหล่านี้ทำงานอยู่ ให้ตรวจสอบและล้างข้อมูลเพื่อลดการสั่นไหว
การสร้างและบูตเคอร์เนลด้วย PREEMPT_RT ไม่แตกต่างจากเคอร์เนลมาตรฐานมากนัก ยกเว้นตัวเลือกที่กล่าวถึงข้างต้น โปรดทราบว่าเครื่องมือสร้างบางอย่างมีการเปลี่ยนแปลงเล็กน้อยโดยเริ่มจาก Linux 6.x และขั้นตอนบางอย่างอาจต้องใช้แพ็คเกจเพิ่มเติม (คุณจะเห็นรายละเอียดเชิงปฏิบัติด้านล่างในระหว่างการรวบรวมอัตโนมัติ)
การติดตั้งอย่างรวดเร็วบนระบบกระจายและการตรวจสอบโหมด RT
การติดตั้งบน Debian:
sudo apt-get install linux-image-rt-amd64
Yocto มีสูตรเฉพาะสำหรับเคอร์เนล RT และอีกอิมเมจที่ใช้สูตรนี้ตามค่าเริ่มต้น โดยทั่วไปผู้ให้บริการเคอร์เนลจะถูกตั้งค่าใน local.conf, bblayers.conf หรือ $MACHINE.conf:
ตัวอย่าง Yocto:
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-rt"
หากคุณตั้งค่า BSP ที่ต้องการใช้ linux-yocto-rt ตามค่าเริ่มต้น ให้เพิ่มการตั้งค่านี้ลงใน bbappend สำหรับ linux-yocto-rt ด้วย: การดำเนินการนี้จะจำกัดการรองรับเครื่องของคุณและป้องกันปัญหาความเข้ากันได้ที่ไม่พึงประสงค์:
ตัวอย่าง bbappend:
COMPATIBLE_MACHINE:$MACHINE = $MACHINE
หลังจากเริ่มต้นแล้ว ตรวจสอบว่าคุณกำลังอยู่ในเวลาจริงหรือไม่ มองหาตัวบ่งชี้ PREEMPT_RT ใน uname และตรวจสอบ /sys/kernel/realtime:
ตรวจสอบโหมด RT:
uname -a
cat /sys/kernel/realtime # debe devolver 1
จุดสำคัญอีกประการหนึ่งคือเวลา CPU ที่สงวนไว้สำหรับงานที่ไม่ใช่ RT ซึ่งโดยค่าเริ่มต้นจะป้องกันไม่ให้เธรดเรียลไทม์บล็อกระบบ ปรับขีดจำกัด SCHED_FIFO/SCHED_RR ทั่วโลกเป็นไมโครวินาทีหรือปิดใช้งานหากคุณรู้ว่าคุณกำลังทำอะไรอยู่:
การตั้งเวลา RT:
cat /proc/sys/kernel/sched_rt_runtime_us # por defecto ~50000 (50 ms por segundo)
# Para desactivarlo (sin reservas para tareas no RT):
echo -1 | sudo tee /proc/sys/kernel/sched_rt_runtime_us
การคอมไพล์และปรับใช้แบบอัตโนมัติด้วยสคริปต์
หากคุณต้องการคอมไพล์และติดตั้งเคอร์เนล RT ก็มีสคริปต์ที่ดำเนินการเกือบจะอัตโนมัติ รวมถึงการเลือกเวอร์ชันและการรองรับเพิ่มเติม (Docker, NVIDIA เป็นต้น) ขั้นตอนทั่วไปเริ่มต้นด้วยการระบุเคอร์เนลปัจจุบันของคุณเพื่อเลือกเวอร์ชัน RT ที่ใกล้เคียง:
ตรวจสอบเวอร์ชันของคุณ:
uname -r # por ejemplo: 5.15.XX-generic → elegir 5.15.XX-rt-YY o lo más próximo
ตัวอย่างการใช้ที่เก็บข้อมูลพร้อมสคริปต์ในการคอมไพล์และติดตั้ง PREEMPT_RT ในรูปแบบแนะนำบน Debian/Ubuntu ภายในพื้นที่ทำงานภายในเครื่อง ขั้นตอนเหล่านี้จะดำเนินการพึ่งพา ดาวน์โหลดต้นฉบับ และจัดแพคเกจโดยอัตโนมัติ:
cd tu_workspace
git clone https://github.com/2b-t/docker-realtime.git
cd docker-realtime/src
chmod +x install_debian_preemptrt
chmod +x compile_kernel_preemptrt
mkdir tmp && cd tmp
./../compile_kernel_preemptrt
ในระหว่างการดำเนินการ คุณจะสามารถเลือกเวอร์ชันเคอร์เนลและโหมดการติดตั้ง (Debian) ได้ หากการสร้างล้มเหลว ให้ตรวจสอบและปรับไฟล์ .config เช่น ในเวอร์ชัน 6.1.x บางเวอร์ชัน จำเป็นต้องเพิ่มแพ็คเกจและเปลี่ยนเป้าหมายการสร้าง:
# Para kernels >= 6 puede ser necesario:
sudo apt install dbhelper
# Empaquetado en .deb desde el árbol de fuentes del kernel
sudo make -j$(nproc) bindeb-pkg
หลังจากการติดตั้ง ให้สร้างกลุ่มสำหรับสิทธิ์ RT และเพิ่มผู้ใช้ของคุณ วิธีนี้ช่วยให้คุณกำหนดลำดับความสำคัญและล็อกหน่วยความจำได้โดยไม่ต้องใช้สิทธิ์รูทสำหรับคำสั่งทั้งหมด:
sudo addgroup realtime
sudo usermod -a -G realtime $(whoami)
กำหนดค่าขีดจำกัดใน /etc/security/limits.conf เพื่อให้สมาชิก "เรียลไทม์" มีลำดับความสำคัญและ memlock ที่เหมาะสม การตั้งค่านี้ป้องกันความล้มเหลวของการจำกัดผู้ใช้โดยการเพิ่มลำดับความสำคัญหรือบล็อกหน่วยความจำ:
# Edita el fichero de límites con tu editor favorito
sudo editor /etc/security/limits.conf
@realtime soft rtprio 99
@realtime soft priority 99
@realtime soft memlock 102400
@realtime hard rtprio 99
@realtime hard priority 99
@realtime hard memlock 102400
หากคุณพบข้อผิดพลาดส่วนหัวที่หายไปหลังจากติดตั้งเคอร์เนล ให้ตรวจสอบ /usr/src และหากจำเป็น ให้ติดตั้งแพ็กเกจส่วนหัวที่สอดคล้องกัน การเลือกแพ็คเกจ RT ที่ถูกต้องเป็นสิ่งสำคัญ:
cd /ruta/donde/compilaste/el/kernel
sudo dpkg -i linux-headers-*<TAB TAB> # elige el que termine en -rt
สำหรับไดร์เวอร์ NVIDIA บน RT คุณสามารถบังคับการติดตั้งได้โดยการละเว้นการตรวจจับ PREEMPT_RT วิธีนี้ทำให้ DKMS สามารถคอมไพล์โมดูลบนเคอร์เนลแบบเรียลไทม์ได้ง่ายขึ้น:
export IGNORE_PREEMPT_RT_PRESENCE=1
sudo -E apt-get install nvidia-driver-XXX # p.ej. XXX=535
หากได้ติดตั้งไดรเวอร์แล้วก่อนการติดตั้งแพตช์ RT ให้ติดตั้งโมดูลสำหรับเวอร์ชันและเคอร์เนลของคุณด้วยตนเอง ตรวจสอบให้แน่ใจว่าคุณชี้ไปที่หมายเลขเวอร์ชันไดรเวอร์ที่ถูกต้องและเคอร์เนล -rt:
ls /usr/src # identifica nvidia/<versión> y tu versión de kernel
export IGNORE_PREEMPT_RT_PRESENCE=1
sudo -E dkms install nvidia/535.XX.XX -k 5.15.XX-rt
เครื่องมือประเมิน: cyclictest, timerlat และอื่นๆ
ในการวัดคุณภาพ RT เครื่องมือคลาสสิกคือ cyclictest ซึ่งเป็นส่วนหนึ่งของแพ็คเกจ rt-tests ที่มีให้ใช้งานในดิสโทรส่วนใหญ่ ใน Debian/derivatives การติดตั้งนั้นตรงไปตรงมา:
sudo apt-get install rt-tests
ตัวอย่างการทดสอบเปิดเธรดหนึ่งต่อ CPU ด้วย SCHED_FIFO 98 ช่วงเวลา 250 µs และแสดงเวลาแฝงเป็นไมโครวินาที รูปแบบนี้จำลองการโหลด RT เป็นระยะเพื่อตรวจจับการพุ่งสูงและจิตเตอร์:
sudo cyclictest -S -m -p98 -i250
ในเวลาจริงจะมีการใช้คลาสการกำหนดตารางเวลาสองคลาส ได้แก่ SCHED_FIFO และ SCHED_RR FIFO จะดำเนินการด้วยลำดับความสำคัญคงที่ (1..99) จนกว่า CPU จะถูกปล่อยออกหรือเธรดที่มีลำดับความสำคัญสูงกว่ามาถึง RR แบ่งเวลาเมื่อมีเธรดหลายเธรดที่มีลำดับความสำคัญเท่ากันการเลือกคลาสที่เหมาะสมจะทำให้มีความแตกต่างอย่างชัดเจนในคิวงานที่มีความหน่วงต่ำ
เคอร์เนลรวมตัวติดตามที่ช่วยวินิจฉัยความล่าช้าในการปลุก เครื่องมือติดตาม timerlat และ rtla userspace ช่วยให้คุณสามารถดูและเชื่อมโยงความล่าช้าใน IRQ เธรดเคอร์เนล และเธรดผู้ใช้กรณีการใช้งานทั่วไปที่หยุดโดยอัตโนมัติหากเกินขีดจำกัด จะเป็นดังนี้:
การใช้งานทั่วไปของ rtla:
sudo rtla timerlat top -a 4000 -Pf:98
# ... al superar 4000 µs detiene el tracing y muestra posibles causas
ชุมชน OSADL บำรุงรักษาแพตช์ที่มีประโยชน์สำหรับการประเมินเวลาแฝงโดยใช้ฮิสโทแกรมในเคอร์เนลเอง จาก debugfs คุณสามารถอ่านค่า CPU สูงสุดและดูว่างานใดมีความล่าช้ามากที่สุด:
ฮิสโทแกรมความหน่วง:
cd /sys/kernel/debug/latency_hist/timerandwakeup
cat max_latency-CPU*
หมายเหตุเชิงปฏิบัติ: ในบางดิสโทรมีบริการระบบ (เช่น NTP บางตัว) ที่เริ่มต้นด้วยลำดับความสำคัญของ RT และอาจรบกวนเธรดสำคัญของคุณได้ รัน top/ps ที่เรียงลำดับตามลำดับความสำคัญเพื่อค้นหากระบวนการที่มี SCHED_FIFO/RR ที่ใช้งานอยู่ และปรับเปลี่ยนใหม่หากจำเป็น.
การปรับแต่งระบบ: การขัดจังหวะ ลำดับความสำคัญ และการแยกแกนหลัก
โดยค่าเริ่มต้น เธรดขัดจังหวะจะทำงานด้วย SCHED_FIFO ที่ลำดับความสำคัญ 50 คุณสามารถยกระดับความสำคัญของ IRQ ที่สำคัญ (เช่น จาก NIC) และประสานงานกับ NAPI เพื่อลดเวลาแฝงของเครือข่าย:
ตัวอย่างการตั้งค่า IRQ:
# Localiza threads de IRQ y NAPI para tu interfaz (ej. enp4s0)
ps aux | grep enp4s0
# Ajusta prioridades (ejemplos)
sudo chrt -p -f 98 658
sudo chrt -p -f 98 659
sudo chrt -p -f 97 752
sudo chrt -p -f 97 753
หากต้องการอุทิศคอร์ทั้งหมดให้กับเวิร์กโหลด RT คุณสามารถแยก CPU ออกจากตัวกำหนดตารางเวลาทั่วไปและเส้นทางการขัดจังหวะ พารามิเตอร์เคอร์เนลเหล่านี้ในบรรทัดการบูตช่วยลดการรบกวนจากงานระบบ:
isolcpus=2,3 rcu_nocbs=2,3 nohz_full=2,3 irqaffinity=0
กำหนดความสัมพันธ์ IRQ:
echo 4 | sudo tee /proc/irq/<irq_number>/smp_affinity
ในการตรวจสอบผลลัพธ์ ให้ทำการทดสอบซ้ำด้วย cyclictest/rtla และตรวจสอบว่าคิวของแอปพลิเคชันและ IRQ ที่เกี่ยวข้องมีอยู่ร่วมกันโดยมีการแข่งขันน้อยที่สุด โปรดจำไว้ว่าจะมีงานดูแลบ้านบางอย่างอยู่เสมอที่ระบบจะไม่ให้คุณควบคุม 100%.
การปรับใช้ VM แบบเรียลไทม์ด้วย ACRN (Clear Linux บน Intel NUC)
ความเป็นไปได้อีกประการหนึ่งคือการรันแขก Linux แบบเรียลไทม์บนไฮเปอร์ไวเซอร์ ACRN สำหรับ RTVM (Real-Time VM) คุณต้องมีอุปกรณ์ส่งผ่านที่อุทิศให้และอยู่ภายใต้ตัวควบคุม PCI ที่แตกต่างจากตัวควบคุมของ SOS (Service OS)Intel KBL NUC (เช่น NUC7ixDNHE) มีประโยชน์มากเนื่องจากมีไดรฟ์ NVMe และ SATA แยกจากกัน
ตัวอย่างเวิร์กโฟลว์ได้แก่: การติดตั้ง Clear Linux (v29400) บนไดรฟ์ NVMe และ SATA ทั้งสองตัว; กำหนดค่าไดรฟ์ SATA เป็น SOS และการเพิ่มไฮเปอร์ไวเซอร์ไปยังพาร์ติชัน EFI ขั้นตอนต่อไปคือเตรียมและเปิดตัวแขก RT บน NVMe พร้อมด้วยบันเดิลและโมดูลที่เหมาะสม.
ขั้นตอนปฏิบัติ: เพิ่มบันเดิล kernel-lts2018-preempt-rt คัดลอกโมดูล preempt-rt ไปยังดิสก์ NVMe และดึง ID PCI สำหรับการส่งผ่าน (เช่น [01:00.0] และ [8086:f1a6]) แก้ไขสคริปต์ launch_hard_rt_vm.sh เพื่อถ่ายโอน NVMe ไปยังแขกและกำหนดค่าเครือข่ายตามความต้องการของคุณ:
ตัวเลือกเครือข่าย:
# Opción 1: virtio-net
# Opción 2: passthrough de una NIC PCIe
เริ่ม VM แบบเรียลไทม์และตรวจสอบเคอร์เนลด้วย uname -a ภายในเกสต์ เมื่อใช้งานแล้ว ให้ติดตั้ง rt-tests และเรียกใช้ cyclictest เพื่อตรวจสอบพฤติกรรม:
sudo cyclictest -S -m -p98 -i250
หากต้องการเพิ่มประสิทธิภาพเพิ่มเติม ให้ปรับ BIOS/UEFI โดยการปิดใช้งานเทคโนโลยีที่ประหยัดพลังงานแต่ทำให้เกิดความล่าช้า และเปิดใช้งานความสามารถในการจำลองเสมือน คู่มืออ้างอิง BIOS สำหรับแพลตฟอร์มประเภทนี้จะประกอบด้วยสิ่งนี้:
| สิ่งของ | การปรับ |
|---|---|
| VMX | เปิดใช้งาน |
| VT-d | เปิดใช้งาน |
| Hyper-Threading | พิการ |
| สปีดสเต็ป | พิการ |
| กะความเร็ว | พิการ |
| ซี-สเตท | พิการ |
| การเพิ่มประสิทธิภาพแรงดันไฟฟ้า | พิการ |
| จีที อาร์ซี6 | พิการ |
| โหมดพลังงานต่ำ Gfx | พิการ |
| เอสเอ จีวี | พิการ |
| การสนับสนุน LPM แบบก้าวร้าว | พิการ |
| การสนับสนุน ACPI S3 | พิการ |
| ASPM ดั้งเดิม | พิการ |
หมายเหตุ เอกสารอ้างอิง และเอกสารประกอบ
หากคุณต้องการเจาะลึกแนวคิด ระบบย่อย และการเปลี่ยนแปลงต่างๆ ที่ทำให้สามารถใช้โหมด RT ได้ (รวมถึงเค้าโครง ผู้วางแผน และรายละเอียดทางสถาปัตยกรรม) คุณจะพบเอกสารการฝึกอบรมที่ครอบคลุมมาก ตัวอย่างเช่น สไลด์เหล่านี้ที่อุทิศให้กับ PREEMPT_RT อาจมีประโยชน์มากสำหรับคุณ: ดาวน์โหลด PDF
การแจกจ่ายบางส่วนนำเสนอไบนารี RT ที่สร้างไว้ล่วงหน้าหรือการรวมเข้าในระบบการสร้างของพวกเขา เป็นจุดเริ่มต้นที่ดีสำหรับการประเมินโดยไม่ต้องคอมไพล์จากจุดเริ่มต้นและเปรียบเทียบผลลัพธ์กับเคอร์เนลที่กำหนดเองของคุณ.
คำถามที่พบบ่อย: การเปิดใช้งาน การแจกจ่าย และอาร์กิวเมนต์เคอร์เนล
ด้วยการมาถึงของ 6.12 ตัวเลือก PREEMPT_RT ได้ถูกรวมเข้าไว้ในเคอร์เนลหลักสำหรับสถาปัตยกรรมต่างๆ การที่จะเปิดใช้งานตามค่าเริ่มต้นนั้นขึ้นอยู่กับการจัดจำหน่าย โดยบางรายการมีตัวแปร RT ที่แยกจากกัน บางรายก็มีแพ็คเกจเฉพาะ และบางรายก็ปล่อยให้เป็นการสร้างแบบกำหนดเองควรตรวจสอบบันทึกการเปิดตัวของดิสโทรของคุณเสมอ และหากมี "linux-image-rt" หรือไฟล์ที่คล้ายกัน นั่นคือวิธีที่แนะนำให้เริ่มต้น
เกี่ยวกับอาร์กิวเมนต์เคอร์เนล "preempt=full": มันไม่เทียบเท่ากับ PREEMPT_RT และผลของมันขึ้นอยู่กับการกำหนดค่าที่คอมไพล์ หากการส่งคำสั่ง `preempt=full` ในเคอร์เนลล่าสุด (เช่น ตั้งแต่เวอร์ชัน 6.10.6 เป็นต้นไป) ไม่สามารถบูตระบบของคุณได้ ให้ลบพารามิเตอร์นั้นและตรวจสอบการกำหนดค่าเคอร์เนลจริงหากต้องการแบบเรียลไทม์อย่างเคร่งครัด วิธีหนึ่งคือเปิดใช้งาน/กำหนดค่า CONFIG_PREEMPT_RT หรือติดตั้งเคอร์เนล RT สำหรับการแจกจ่ายของคุณ
ตรวจสอบเสมอว่า /sys/kernel/realtime เป็น 1 และ uname แสดง PREEMPT_RT หลีกเลี่ยงการรวมเอาความคาดหวังเรื่อง "ความหน่วงต่ำ" เข้ากับ "เวลาจริง" เนื่องจากทั้งสองอย่างนี้เป็นโปรไฟล์ที่แตกต่างกันและมีวัตถุประสงค์ที่แตกต่างกันหากคุณต้องการ RT แบบฮาร์ด ควรให้ความสำคัญกับเคอร์เนล RT ที่เสถียรและเครื่องมือวินิจฉัย (cyclictest/rtla) ก่อนที่จะแตะอาร์กิวเมนต์เชิงรุกใน bootloader
การตั้งค่าระบบ Linux แบบเรียลไทม์ในปัจจุบันเป็นเรื่องง่ายขึ้นด้วยการมาถึงของ PREEMPT_RT บนสายหลัก เนื่องจากมีแพ็คเกจ สูตร และสคริปต์ที่ช่วยประหยัดเวลาให้คุณได้หลายชั่วโมง เริ่มต้นด้วยการตรวจสอบด้วยไฟล์ไบนารี RT หากมี วัดด้วย cyclictest/rtla ปิดใช้งานตัวเลือกการดีบักที่ส่งผลเสียต่อเวลาแฝง ปรับลำดับความสำคัญ/IRQ และแยก CPU เมื่อเวิร์กโหลดของคุณต้องการหากคุณคอมไพล์ ให้ใช้สคริปต์ที่สร้างไฟล์ .deb และกำหนดขีดจำกัดผู้ใช้สำหรับงาน RT หากคุณใช้ GPU ของ NVIDIA โปรดจำตัวแปร IGNORE_PREEMPT_RT_PRESENCE ไว้ และหากกรณีของคุณต้องการการจำลองเสมือนแบบกำหนดตายตัว ACRN ที่มีการส่งผ่านแบบเฉพาะบน NUC ที่มี NVMe+SATA ถือเป็นรากฐานที่แข็งแกร่งสำหรับ RTVM ที่ตอบสนองได้ทันที