যদি আপনি এমন সিস্টেমের সাথে কাজ করেন যেখানে প্রতিক্রিয়া সময়ই সবকিছু, তাহলে PREEMPT_RT হল সেই উপাদান যা একটি "স্বাভাবিক" লিনাক্সকে রিয়েল-টাইম-রেডি সিস্টেমে পরিণত করে। আমরা নিয়ন্ত্রিত বিলম্ব, কঠোর অগ্রাধিকার সহ শিডিউলার এবং বিশ্লেষণ সরঞ্জামগুলির কথা বলছি যা শেষ মাইক্রোসেকেন্ড পর্যন্ত সূক্ষ্ম-টিউনিং করার অনুমতি দেয়।এই টিউটোরিয়াল ডসিয়ারে আপনি সুসংগঠিতভাবে পাবেন, PREEMPT_RT কী, কার্নেলে এর অবস্থা, এটি কীভাবে ইনস্টল বা কম্পাইল করতে হয়, কীভাবে এটি পরিমাপ ও অপ্টিমাইজ করতে হয়, এমনকি ACRN দিয়ে রিয়েল-টাইম VM-এ এটি কীভাবে সেট আপ করতে হয়।
তত্ত্বের পাশাপাশি, আমি আপনাদের জন্য ব্যবহারিক নির্দেশনা নিয়ে এসেছি যা স্ক্রিপ্ট দ্বারা সমর্থিত যা RT কার্নেল, জনপ্রিয় বিতরণে ব্যবহারের জন্য প্রস্তুত প্যাকেজ এবং Yocto রেসিপিগুলির সংকলন স্বয়ংক্রিয় করে। আপনি আরও দেখতে পাবেন কিভাবে সিস্টেমটি RT মোডে চলছে কিনা তা যাচাই করবেন, ল্যাটেন্সি স্পাইক এড়াতে কোন কার্নেল বিকল্পগুলি অক্ষম করবেন এবং কীভাবে IRQ, CPU এবং পরিষেবাগুলিকে সূক্ষ্ম-টিউন করবেন।আমরা PREEMPT_RT পরিবেশে NVIDIA ড্রাইভারের সামঞ্জস্যতা এবং মিশন-সমালোচনামূলক কাজের জন্য ডিজাইন করা Intel NUC-তে Clear Linux-এর সাথে একটি বাস্তব-বিশ্বের কেসও কভার করেছি।
PREEMPT_RT কী এবং এটি কার্নেলের কোথায় ফিট করে?
PREEMPT_RT তৈরি করা হয়েছিল প্যাচের একটি সিরিজ হিসেবে যা লিনাক্সকে একটি রিয়েল-টাইম সিস্টেমে রূপান্তরিত করে, যার লক্ষ্য হল ল্যাটেন্সি কমানো এবং ভবিষ্যদ্বাণীযোগ্যতা নিশ্চিত করা। প্রকল্পটি ২০০৫ সালে রিয়েলটাইম-প্রিম্পট (-rt) ছাতার অধীনে শুরু হয়েছিল, ২০১৫ সালে লিনাক্স ফাউন্ডেশনের কাছে হস্তান্তরিত হয়েছিল এবং অর্থ, পেশাদার অডিও/ভিডিও, বিমান চলাচল, চিকিৎসা, রোবোটিক্স, টেলিকম এবং শিল্প অটোমেশনের মতো খাতের জন্য গুরুত্বপূর্ণ ভূমিকা পালন করেছে।.
২০১৯ সাল থেকে, এর কোডটি মূল কার্নেলের দিকে প্রচারিত হয়েছে। 6.12 সিরিজটি x86, ARM64, এবং RISC-V-এর জন্য প্রধান কার্নেলে রিয়েল-টাইম কনফিগারেশন সক্ষম করে, যা গুরুত্বপূর্ণ printk উপাদান এবং অ্যাটমিক কনসোল সাপোর্টের ইন্টিগ্রেশনের পরে আনলক করা হয়।UART 8250 কন্ট্রোলারে একটি পারমাণবিক কনসোল রয়েছে, অন্যদিকে ARM এবং POWERPC-এর মতো অন্যান্য আর্কিটেকচারের জন্য এখনও প্রয়োজনীয় যন্ত্রাংশের একীকরণ প্রয়োজন, তাই যদি সবকিছু সময়মতো অন্তর্ভুক্ত না করা হয় তবে তাদের সম্পূর্ণ সমর্থন কিছুটা পরে আসতে পারে।
যদিও মৌলিক সমর্থন 6.12-এ শেষ হয়, রক্ষণাবেক্ষণকারীরা সেরা পারফরম্যান্স (নতুন আর্কিটেকচার, ত্বরিত গ্রাফিক্সের জন্য পরিবর্তন এবং প্যাচ সারিতে সর্বদা প্রথমে আসা উন্নতি) খুঁজতে RT সারিতে সর্বশেষ PREEMPT_RT প্যাচগুলি অনুসরণ করার পরামর্শ দেন। উৎপাদন পরিবেশে, RT ট্রির সর্বশেষ স্থিতিশীল সংস্করণ ব্যবহার করা যুক্তিযুক্ত।.
ধারণাগতভাবে, মূল পরিবর্তন হল কার্নেলের প্রায় যেকোনো অংশকে প্রি-এমপ্ট করার ক্ষমতা, যা নিরবচ্ছিন্ন উইন্ডোগুলিকে হ্রাস করে। এটি একটি জেনেরিক কার্নেলের তুলনায় কম ভীতিকর এবং আরও অনুমানযোগ্য প্রতিক্রিয়ার দিকে পরিচালিত করে।, যখন কোনও কাজ অপেক্ষা করতে পারে না তখন অপরিহার্য কিছু।

রিয়েল-টাইমের জন্য প্রয়োজনীয় কার্নেল কনফিগারেশন
প্রধান সেটিং হল সম্পূর্ণরূপে প্রি-এমপিটিবল কার্নেল সক্রিয় করা: CONFIG_PREEMPT_RT। সাম্প্রতিক কার্নেলগুলিতে, এটি "জেনারেল সেটআপ" এর অধীনে প্রদর্শিত হয় এবং যদি আপনি এটি দেখতে না পান, তাহলে CONFIG_EXPERT সক্রিয় করলে সাধারণত বিকল্পটি প্রকাশিত হয়।পূর্ববর্তী সংস্করণগুলিতে, PREEMPT_RT "প্রিম্পশন মডেল" মেনুতে অবস্থিত থাকতে পারে।
কিছু সাধারণ ডিবাগিং-ভিত্তিক সেটিংস আছে যা ল্যাটেন্সি বাড়ায় এবং যখন আপনি রিয়েল-টাইম পারফরম্যান্স খুঁজছেন তখন এগুলি অক্ষম করা উচিত। এড়িয়ে চলার জন্য সাধারণ উদাহরণ: DEBUG_LOCKDEP, DEBUG_PREEMPT, DEBUG_OBJECTS, এবং SLUB_DEBUGযদি আপনি কোনও ডিস্ট্রিবিউশনের .config ফাইল দিয়ে শুরু করেন, তাহলে সম্ভবত এর মধ্যে একটি সক্রিয় আছে; ভীতি কমাতে এটি পরীক্ষা করে পরিষ্কার করুন।
PREEMPT_RT দিয়ে কার্নেল তৈরি এবং বুট করা একটি স্ট্যান্ডার্ড কার্নেলের থেকে খুব বেশি আলাদা নয়, উপরে উল্লিখিত বিকল্পগুলি ছাড়া। মনে রাখবেন যে কিছু বিল্ড টুল Linux 6.x থেকে শুরু করে সূক্ষ্মভাবে পরিবর্তিত হয় এবং কিছু পদক্ষেপের জন্য অতিরিক্ত প্যাকেজের প্রয়োজন হতে পারে। (স্বয়ংক্রিয় সংকলনের সময় আপনি নীচে ব্যবহারিক বিবরণ দেখতে পাবেন)।
বিতরণ এবং RT মোড যাচাইকরণে দ্রুত ইনস্টলেশন
ডেবিয়ানে ইনস্টলেশন:
sudo apt-get install linux-image-rt-amd64
Yocto-তে RT কার্নেলের জন্য একটি নির্দিষ্ট রেসিপি এবং আরেকটি চিত্র রয়েছে যা ডিফল্টরূপে এটি ব্যবহার করে। কার্নেল প্রোভাইডার সাধারণত local.conf, bblayers.conf, অথবা $MACHINE.conf এ সেট করা থাকে।:
ইয়োক্টো উদাহরণ:
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-rt"
যদি আপনি এমন একটি BSP সেট আপ করেন যা ডিফল্টরূপে linux-yocto-rt ব্যবহার করতে চায়, তাহলে linux-yocto-rt-এর জন্য একটি bbappend-এ এই সেটিংটিও যোগ করুন: এটি আপনার মেশিনে সমর্থন সীমিত করে এবং অবাঞ্ছিত সামঞ্জস্যের সমস্যাগুলি প্রতিরোধ করে।:
উদাহরণ bbappend:
COMPATIBLE_MACHINE:$MACHINE = $MACHINE
শুরু করার পরে, পরীক্ষা করে দেখুন যে আপনি আসলে রিয়েল টাইমে আছেন। uname-এ PREEMPT_RT সূচকটি খুঁজুন এবং /sys/kernel/realtime যাচাই করুন:
আরটি মোড পরীক্ষা করুন:
uname -a
cat /sys/kernel/realtime # debe devolver 1
আরেকটি গুরুত্বপূর্ণ বিষয় হল নন-আরটি কাজের জন্য সিপিইউ সময় সংরক্ষিত, যা ডিফল্টরূপে একটি রিয়েল-টাইম থ্রেডকে সিস্টেম ব্লক করতে বাধা দেয়। গ্লোবাল SCHED_FIFO/SCHED_RR সীমা মাইক্রোসেকেন্ডে সামঞ্জস্য করুন অথবা আপনি যদি জানেন যে আপনি কী করছেন তাহলে এটি অক্ষম করুন।:
আরটি সময় নির্ধারণ:
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 কার্নেল কম্পাইল এবং ইনস্টল করতে পছন্দ করেন, তাহলে এমন কিছু স্ক্রিপ্ট আছে যা এটি প্রায় স্বয়ংক্রিয়ভাবে করে, যার মধ্যে রয়েছে সংস্করণ নির্বাচন এবং অতিরিক্ত সহায়তা (ডকার, NVIDIA, ইত্যাদি)। সাধারণ প্রবাহটি আপনার বর্তমান কার্নেলটি সনাক্ত করে একটি ক্লোজ RT সংস্করণ বেছে নেওয়ার মাধ্যমে শুরু হয়।:
আপনার সংস্করণটি সনাক্ত করুন:
uname -r # por ejemplo: 5.15.XX-generic → elegir 5.15.XX-rt-YY o lo más próximo
স্থানীয় কর্মক্ষেত্রের মধ্যে, ডেবিয়ান/উবুন্টুতে নির্দেশিত উপায়ে PREEMPT_RT কম্পাইল এবং ইনস্টল করার জন্য স্ক্রিপ্ট সহ একটি সংগ্রহস্থল ব্যবহারের উদাহরণ। এই ধাপগুলি নির্ভরতা, উৎস ডাউনলোড এবং প্যাকেজিং স্বয়ংক্রিয় করে।:
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
কার্যকর করার সময় আপনি কার্নেল সংস্করণ এবং ইনস্টলেশন মোড (ডেবিয়ান) নির্বাচন করতে সক্ষম হবেন। যদি বিল্ড ব্যর্থ হয়, তাহলে .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-এ সীমাগুলি কনফিগার করুন যাতে "রিয়েলটাইম" সদস্যদের যথাযথ অগ্রাধিকার এবং মেমলক থাকে। এই সেটিংটি অগ্রাধিকার বৃদ্ধি করে বা মেমরি ব্লক করে ব্যবহারকারী-সীমা ব্যর্থতা প্রতিরোধ করে।:
# 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
RT-তে NVIDIA ড্রাইভারের জন্য, আপনি 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
মূল্যায়ন সরঞ্জাম: সাইক্লিকটেস্ট, টাইমারল্যাট এবং আরও অনেক কিছু
RT মান পরিমাপ করার জন্য, ক্লাসিক টুল হল cyclictest, যা rt-tests প্যাকেজের অংশ, যা বেশিরভাগ ডিস্ট্রোতে পাওয়া যায়। ডেবিয়ান/ডেরিভেটিভস-এ ইনস্টলেশন সহজবোধ্য।:
sudo apt-get install rt-tests
একটি পরীক্ষার উদাহরণ SCHED_FIFO 98 সহ প্রতি CPU-তে একটি থ্রেড চালু করে, 250 µs ব্যবধানে, এবং মাইক্রোসেকেন্ডে ল্যাটেন্সি দেখায়। এই প্যাটার্নটি স্পাইক এবং জিটার সনাক্ত করতে পর্যায়ক্রমিক RT লোডিং অনুকরণ করে:
sudo cyclictest -S -m -p98 -i250
রিয়েল টাইমে, দুটি সময়সূচী ক্লাস ব্যবহার করা হয়: SCHED_FIFO এবং SCHED_RR। সিপিইউ রিলিজ না হওয়া পর্যন্ত অথবা উচ্চতর অগ্রাধিকার থ্রেড না আসা পর্যন্ত ফিফো নির্দিষ্ট অগ্রাধিকার (১..৯৯) দিয়ে সঞ্চালিত হয়; একই অগ্রাধিকারে একাধিক থ্রেড থাকলে RR সময় ভাগ করে।সঠিক ক্লাস নির্বাচন করলে কম-বিলম্বিত কাজের সারিতে স্পষ্ট পার্থক্য দেখা যায়।
কার্নেলটিতে ট্রেসার রয়েছে যা ঘুম থেকে ওঠার বিলম্ব নির্ণয় করতে সাহায্য করে। টাইমারল্যাট ট্রেসার এবং rtla ইউজারস্পেস টুল আপনাকে 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 অগ্রাধিকার দিয়ে শুরু হয় এবং আপনার গুরুত্বপূর্ণ থ্রেডগুলিতে হস্তক্ষেপ করতে পারে। সক্রিয় SCHED_FIFO/RR সহ প্রক্রিয়াগুলি সনাক্ত করতে একটি অগ্রাধিকার-ক্রমযুক্ত শীর্ষ/ps চালান এবং প্রয়োজনে পুনরায় সমন্বয় করুন।.
সিস্টেম টিউনিং: বাধা, অগ্রাধিকার এবং মূল বিচ্ছিন্নতা
ডিফল্টরূপে, ইন্টারাপ্ট থ্রেডগুলি 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 গুলি ন্যূনতম বিতর্কের সাথে সহাবস্থান করে। মনে রাখবেন যে, গৃহস্থালির কিছু নির্দিষ্ট কাজ সবসময় থাকবে যা সিস্টেম ১০০% আপনার নিয়ন্ত্রণের বাইরে রাখবে।.
ACRN (Intel NUC-তে ক্লিয়ার লিনাক্স) দিয়ে একটি রিয়েল-টাইম VM স্থাপন করা
আরেকটি সম্ভাবনা হল ACRN হাইপারভাইজারে একটি রিয়েল-টাইম লিনাক্স গেস্ট চালানো। একটি RTVM (রিয়েল-টাইম VM)-এর জন্য আপনার এর পাসথ্রু ডিভাইসগুলি ডেডিকেটেড এবং SOS (সার্ভিস ওএস)-এর থেকে আলাদা PCI কন্ট্রোলারের অধীনে থাকা প্রয়োজন।একটি Intel KBL NUC (NUC7ixDNHE এর মতো) খুবই ব্যবহারিক কারণ এতে আলাদা NVMe এবং SATA ড্রাইভ রয়েছে।
একটি উদাহরণ ওয়ার্কফ্লো হতে পারে: NVMe এবং SATA উভয় ড্রাইভেই Clear Linux (v29400) ইনস্টল করা; SATA ড্রাইভকে SOS হিসেবে কনফিগার করা এবং EFI পার্টিশনে হাইপারভাইজার যোগ করা। এরপর, উপযুক্ত বান্ডেল এবং মডিউল সহ NVMe-তে RT গেস্ট প্রস্তুত এবং চালু করুন।.
ব্যবহারিক পদক্ষেপ: kernel-lts2018-preempt-rt বান্ডেল যোগ করুন, preempt-rt মডিউলটি NVMe ডিস্কে কপি করুন এবং পাসথ্রু করার জন্য PCI ID গুলি পুনরুদ্ধার করুন (যেমন, [01:00.0] এবং [8086:f1a6])। গেস্টে NVMe স্থানান্তর করতে এবং আপনার প্রয়োজন অনুসারে নেটওয়ার্ক কনফিগার করতে launch_hard_rt_vm.sh স্ক্রিপ্টটি পরিবর্তন করুন।:
নেটওয়ার্ক বিকল্প:
# Opción 1: virtio-net
# Opción 2: passthrough de una NIC PCIe
রিয়েল টাইমে VM শুরু করুন এবং গেস্টের ভিতরে uname -a দিয়ে কার্নেলটি পরীক্ষা করুন। একবার চালু হয়ে গেলে, rt-tests ইনস্টল করুন এবং আচরণ যাচাই করার জন্য cyclicaltest চালান।:
sudo cyclictest -S -m -p98 -i250
আরও অপ্টিমাইজ করার জন্য, BIOS/UEFI সামঞ্জস্য করুন এমন প্রযুক্তি নিষ্ক্রিয় করে যা শক্তি সাশ্রয় করে কিন্তু বিলম্বিত করে এবং ভার্চুয়ালাইজেশন ক্ষমতা সক্ষম করে। এই ধরণের প্ল্যাটফর্মের জন্য একটি BIOS রেফারেন্স গাইডে এরকম কিছু অন্তর্ভুক্ত থাকবে:
| আইটেম | সমন্বয় |
|---|---|
| VMX | সক্ষম করা |
| ভিটি-ডি | সক্ষম করা |
| হাইপার থ্রেডিং | অক্ষম |
| গতির ধাপ | অক্ষম |
| স্পিড শিফট | অক্ষম |
| সি-রাজ্য | অক্ষম |
| ভোল্টেজ অপ্টিমাইজেশন | অক্ষম |
| জিটি আরসি৬ | অক্ষম |
| জিএফএক্স লো পাওয়ার মোড | অক্ষম |
| এসএ জিভি | অক্ষম |
| আগ্রাসী এলপিএম সমর্থন | অক্ষম |
| ACPI S3 সাপোর্ট | অক্ষম |
| নেটিভ এএসপিএম | অক্ষম |
নোট, তথ্যসূত্র, এবং সহায়ক উপাদান
আপনি যদি RT মোড (লেআউট, পরিকল্পনাকারী এবং স্থাপত্যের বিবরণ সহ) সক্ষম করে এমন ধারণা, সাবসিস্টেম এবং পরিবর্তনগুলির আরও গভীরে যেতে চান, তাহলে আপনি খুব বিস্তৃত প্রশিক্ষণ উপকরণ পাবেন। উদাহরণস্বরূপ, PREEMPT_RT-এর জন্য নিবেদিত এই স্লাইডগুলি আপনার জন্য খুবই কার্যকর হতে পারে।: পিডিএফ ডাউনলোড করুন
কিছু ডিস্ট্রিবিউশন তাদের বিল্ড সিস্টেমে পূর্বে-নির্মিত RT বাইনারি বা ইন্টিগ্রেশন অফার করে। এটি স্ক্র্যাচ থেকে কম্পাইল না করে এবং আপনার কাস্টম কার্নেলের সাথে ফলাফল তুলনা না করে মূল্যায়ন করার জন্য একটি ভাল সূচনা বিন্দু।.
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী: অ্যাক্টিভেশন, ডিস্ট্রো এবং কার্নেল আর্গুমেন্ট
৬.১২ এর আগমনের সাথে সাথে, বিভিন্ন আর্কিটেকচারের জন্য PREEMPT_RT বিকল্পটি প্রধান কার্নেলের সাথে একীভূত হয়েছে। এটি ডিফল্টরূপে সক্রিয় কিনা তা বিতরণের উপর নির্ভর করে: কেউ কেউ পৃথক RT ভেরিয়েন্ট বজায় রাখে, অন্যরা নির্দিষ্ট প্যাকেজ অফার করে এবং অন্যরা এটি কাস্টম বিল্ডের জন্য রেখে দেয়।সর্বদা আপনার ডিস্ট্রোর রিলিজ নোটগুলি পরীক্ষা করুন এবং যদি "linux-image-rt" বা অনুরূপ কোনও সংস্করণ থাকে, তাহলে এটিই শুরু করার প্রস্তাবিত উপায়।
কার্নেল আর্গুমেন্ট "preempt=full" সম্পর্কে: এটি PREEMPT_RT এর সমতুল্য নয় এবং এর প্রভাব কম্পাইল করা কনফিগারেশনের উপর নির্ভর করে। যদি সাম্প্রতিক কার্নেলগুলিতে (উদাহরণস্বরূপ, 6.10.6 থেকে) `preempt=full` পাস করার পরেও আপনার সিস্টেম বুট না হয়, তাহলে সেই প্যারামিটারটি সরিয়ে ফেলুন এবং প্রকৃত কার্নেল কনফিগারেশন পরীক্ষা করুন।রিয়েল-টাইমের জন্য, উপায় হল CONFIG_PREEMPT_RT সক্ষম/কনফিগার করা অথবা আপনার ডিস্ট্রিবিউশনের জন্য RT কার্নেল ইনস্টল করা।
সর্বদা পরীক্ষা করুন যে /sys/kernel/realtime 1 এবং uname PREEMPT_RT প্রদর্শন করে। "কম ল্যাটেন্সি" এর প্রত্যাশাকে "রিয়েল টাইম" এর সাথে গুলিয়ে ফেলা এড়িয়ে চলুন; এগুলি ভিন্ন উদ্দেশ্য সহ স্বতন্ত্র প্রোফাইল।যদি আপনার হার্ড RT এর প্রয়োজন হয়, তাহলে বুটলোডারে আক্রমণাত্মক আর্গুমেন্ট স্পর্শ করার আগে একটি স্থিতিশীল RT কার্নেল এবং ডায়াগনস্টিক টুল (cyclictest/rtla) কে অগ্রাধিকার দিন।
PREEMPT_RT-এর মেইনলাইনে আগমনের ফলে আজ রিয়েল-টাইম লিনাক্স সিস্টেম সেট আপ করা আরও সহজ, কারণ এখানে প্যাকেজ, রেসিপি এবং স্ক্রিপ্ট রয়েছে যা আপনার ঘন্টা বাঁচায়। RT বাইনারি যেখানে আছে সেখানে যাচাই করে শুরু করুন, cyclictest/rtla দিয়ে পরিমাপ করুন, ল্যাটেন্সির ক্ষতি করে এমন ডিবাগিং বিকল্পগুলি অক্ষম করুন, অগ্রাধিকার/IRQ গুলি সামঞ্জস্য করুন এবং আপনার কাজের চাপের সময় CPU গুলিকে আলাদা করুন।যদি আপনি কম্পাইল করেন, তাহলে .deb ফাইল তৈরি করে এমন স্ক্রিপ্ট ব্যবহার করুন এবং RT কাজের জন্য ব্যবহারকারীর সীমা নির্ধারণ করুন; যদি আপনি একটি NVIDIA GPU ব্যবহার করেন, তাহলে IGNORE_PREEMPT_RT_PRESENCE ভেরিয়েবলটি মনে রাখবেন। এবং যদি আপনার ক্ষেত্রে ডিটারমিনিস্টিক ভার্চুয়ালাইজেশনের প্রয়োজন হয়, তাহলে NVMe+SATA সহ NUC-তে ডেডিকেটেড পাসথ্রু সহ ACRN হল একটি RTVM-এর জন্য একটি শক্ত ভিত্তি যা একেবারেই সাড়া দেয়।