{"id":634,"date":"2025-08-20T15:49:52","date_gmt":"2025-08-20T06:49:52","guid":{"rendered":"https:\/\/ahnbk.dev\/?p=634"},"modified":"2025-08-20T16:13:46","modified_gmt":"2025-08-20T07:13:46","slug":"ubuntu%ec%97%90%ec%84%9c-preempt_rt-%ec%bb%a4%eb%84%90-%eb%b9%8c%eb%93%9c-%eb%b0%8f-%ec%a0%81%ec%9a%a9","status":"publish","type":"post","link":"https:\/\/ahnbk.dev\/?p=634","title":{"rendered":"Ubuntu\uc5d0\uc11c PREEMPT_RT \ucee4\ub110 \ube4c\ub4dc \ubc0f \uc801\uc6a9"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">ROS2\uc758 ros2_control\uc5d0\uc11c control_manager\ub97c \uc0ac\uc6a9\ud560 \uacbd\uc6b0, preempt_rt \ucee4\ub110 (soft realtime)\uc744 \uc0ac\uc6a9\ud560 \uac83\uc744 \uad8c\uc7a5\ud558\uace0 \uc788\ub2e4. \ucee4\ub110 \ube4c\ub4dc\ub294 \ub9e4\ubc88 \ud558\uace0 \uc788\uae34 \ud55c\ub370, \uc77c\ub2e8\uc740 \ubc29\ubc95\uc744 \uc815\ub9ac\ud574\ub450\uba74 \ub098\uc911\uc5d0\ub3c4 \ucc3e\uae30 \uc26c\uc6b8\ub4ef \ud558\uc5ec \uc815\ub9ac\ud568. \ucee4\ub110 \ubc84\uc804\uc740 \uadf8\ub0e5 rt \ud328\uce58\uac00 \uc874\uc7ac\ud558\ub294 \uac00\uc7a5 \ucd5c\uc2e0 \ubc84\uc804\uc744 \uc0ac\uc6a9\ud558\uba74 \ub420\ub4ef.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud544\uc694\ud55c \ud328\ud0a4\uc9c0 \uc124\uce58<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo apt install build-essential libncurses-dev flex bison libssl-dev debhelper libelf-dev gawk<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uc73c\ub85c \ucee4\ub110 \uc18c\uc2a4 \ubc0f RT \ud328\uce58 \ud30c\uc77c\uc744 \ubc1b\uc544\uc634.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ wget https:\/\/www.kernel.org\/pub\/linux\/kernel\/v6.x\/linux-6.16.1.tar.gz\n$ wget https:\/\/www.kernel.org\/pub\/linux\/kernel\/projects\/rt\/6.16\/patch-6.16-rt3.patch.xz<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc555\ucd95\uc744 \ud480\uace0, \ud328\uce58 \uc801\uc6a9<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ tar zxf linux-6.16.1.tar.gz\n$ xz -d patch-6.16-rt3.patch.xz\n$ cd linux-6.16.1\n$ patch -p1 &lt; ..\/patch-6.16-rt3.patch<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\uc874 config \ud30c\uc77c \uac00\uc838\uc624\uae30 <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ cp \/boot\/config-`uname -r` .config<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucee4\ub110 \uc124\uc815\ud558\uae30<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ make menuconfig<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucee4\ub110 \uc124\uc815<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">    General setup  ---&gt;\n        Preemption Model (Scheduler controlled preemption model)  ---&gt;\n            (X) Scheduler controlled preemption model\n        [*] Fully Preemptible Kernel (Real-Time) \n\n        Timers subsystem  ---&gt;\n            Timer tick handling (Full dynticks system (tickless))  ---&gt;\n                (X) Full dynticks system (tickless)\n            [*] High Resolution Timer Support\n\n    Processor type and features  ---&gt;\n        Timer frequency (1000 HZ)  ---&gt;\n            (X) 1000 HZ\n\n    Power management and ACPI options  ---&gt;\n        CPU Frequency scaling  ---&gt;\n            Default CPUFreq governor (performance)  ---&gt;\n                (X) performance          <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc800\uc7a5\ud558\uace0 \ub098\uc640\uc11c,<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ scripts\/config --disable SYSTEM_TRUSTED_KEYS\n$ scripts\/config --set-str CONFIG_SYSTEM_TRUSTED_KEYS \"\"\n$ scripts\/config --disable SYSTEM_REVOCATION_KEYS\n$ scripts\/config --set-str CONFIG_SYSTEM_REVOCATION_KEYS \"\"\n$ scripts\/config --disable CONFIG_DEBUG_INFO_BTF\n\n$ scripts\/config --disable GDB_SCRIPTS\n$ scripts\/config --disable DEBUG_INFO\n$ scripts\/config --disable DEBUG_INFO_SPLIT\n$ scripts\/config --disable DEBUG_INFO_REDUCED\n$ scripts\/config --disable DEBUG_INFO_COMPRESSED\n$ scripts\/config --set-val DEBUG_INFO_NONE       y\n$ scripts\/config --set-val DEBUG_INFO_DWARF5     n\n$ scripts\/config --disable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ube4c\ub4dc \uc2dc\uc791 (<code>-j <\/code>\ub2e4\uc74c \uc22b\uc790\ub294 \ucef4\ud30c\uc77c\uc5d0 \uc0ac\uc6a9\ub420 \ucf54\uc5b4\uc758 \uc218\ub85c, \uac01\uc790\uc758 CPU \uac2f\uc218\uc5d0 \ub530\ub77c \uc870\uc815\ud574\uc11c \uc0ac\uc6a9)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ make -j12 bindeb-pkg<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ub7b5 25~30\ubd84 \uc815\ub3c4 \uac78\ub9ac\ub294 \ub4ef.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucee4\ub110 \uc124\uce58<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ cd ..\n$ sudo dpkg -i linux-headers-6.16.1-rt3_6.16.1-5_amd64.deb linux-libc-dev_6.16.1-5_amd64.deb linux-image-6.16.1-rt3_6.16.1-5_amd64.deb<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc124\uce58\uac00 \uc644\ub8cc\ub418\uba74, \uc7ac\ubd80\ud305\ud574\uc11c uname -a \ub85c \ucee4\ub110 \ubc84\uc804 \ud655\uc778.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ uname -a\nLinux byeongkyu-workpc 6.16.1-rt3 #5 SMP PREEMPT_RT Wed Aug 20 15:05:48 KST 2025 x86_64 x86_64 x86_64 GNU\/Linux<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc8fc\uc758\uc0ac\ud56d!! preempt_rt \ucee4\ub110\uc758 \uacbd\uc6b0 nvidia \uadf8\ub798\ud53d \ub4dc\ub77c\uc774\ubc84\uac00 \uae30\ubcf8\uc801\uc73c\ub85c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc74c.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud574\uacb0\ubc29\ubc95 (\uc5d0\ub7ec\ub09c \uc774\ud6c4\uc5d0)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ export IGNORE_PREEMPT_RT_PRESENCE=1\n$ sudo -E dkms install nvidia\/580.65.06 -k 6.16.1-rt3\n$ sudo dpkg -i linux-headers-6.16.1-rt3_6.16.1-5_amd64.deb linux-libc-dev_6.16.1-5_amd64.deb linux-image-6.16.1-rt3_6.16.1-5_amd64.deb<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\uc7ac\ubd80\ud305 \uc774\ud6c4 cyclictest\ub85c \uc131\ub2a5 \uce21\uc815<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/ahnbk.dev\/wp-content\/uploads\/2025\/08\/plot.png\" alt=\"\" class=\"wp-image-639\" style=\"width:578px;height:auto\" srcset=\"https:\/\/ahnbk.dev\/wp-content\/uploads\/2025\/08\/plot.png 640w, https:\/\/ahnbk.dev\/wp-content\/uploads\/2025\/08\/plot-300x225.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ucda9 stress\uac00 \uc5c6\ub294 \uacbd\uc6b0, \ucd5c\ub300 latency\uac00 154us \uc815\ub3c4\ub85c \ub098\uc624\ub294\ub4ef.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\uc790 \uacc4\uc815\uc744 realtime \uadf8\ub8f9\uc5d0 \ucd94\uac00\ud574\uc11c sudo \uba85\ub839\uc5c6\uc774 \uc2e4\ud589\ud560 \uc218 \uc788\ub3c4\ub85d \ub4f1\ub85d<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo addgroup realtime\n$ sudo usermod -a -G realtime $(whoami)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucd94\uac00 \uc124\uc815<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sudo vi \/etc\/security\/limits.conf\n\n@realtime soft rtprio 99\n@realtime soft priority 99\n@realtime soft memlock unlimited\n@realtime hard rtprio 99\n@realtime hard priority 99\n@realtime hard memlock unlimited\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub05d!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ROS2\uc758 ros2_control\uc5d0\uc11c control_manager\ub97c \uc0ac\uc6a9\ud560 \uacbd\uc6b0, preempt_rt \ucee4\ub110 (soft realtime)\uc744 \uc0ac\uc6a9\ud560 \uac83\uc744 \uad8c\uc7a5\ud558\uace0 \uc788\ub2e4. \ucee4\ub110 \ube4c\ub4dc\ub294 \ub9e4\ubc88 \ud558\uace0 \uc788\uae34 \ud55c\ub370, \uc77c\ub2e8\uc740 \ubc29\ubc95\uc744 \uc815\ub9ac\ud574\ub450\uba74 \ub098\uc911\uc5d0\ub3c4 \ucc3e\uae30 \uc26c\uc6b8\ub4ef \ud558\uc5ec \uc815\ub9ac\ud568. \ucee4\ub110 \ubc84\uc804\uc740 \uadf8\ub0e5 rt \ud328\uce58\uac00 \uc874\uc7ac\ud558\ub294 \uac00\uc7a5 \ucd5c\uc2e0 \ubc84\uc804\uc744 \uc0ac\uc6a9\ud558\uba74 \ub420\ub4ef. \ud544\uc694\ud55c \ud328\ud0a4\uc9c0 \uc124\uce58 \ub2e4\uc74c\uc73c\ub85c \ucee4\ub110 \uc18c\uc2a4 \ubc0f RT \ud328\uce58 \ud30c\uc77c\uc744 \ubc1b\uc544\uc634. \uc555\ucd95\uc744 \ud480\uace0, \ud328\uce58 \uc801\uc6a9 \uae30\uc874 config [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[145,144],"class_list":["post-634","post","type-post","status-publish","format-standard","hentry","category-ubuntu","tag-kernel","tag-preempt_rt"],"_links":{"self":[{"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/posts\/634","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=634"}],"version-history":[{"count":5,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/posts\/634\/revisions"}],"predecessor-version":[{"id":640,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=\/wp\/v2\/posts\/634\/revisions\/640"}],"wp:attachment":[{"href":"https:\/\/ahnbk.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ahnbk.dev\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}