{"id":161,"date":"2011-03-07T14:38:09","date_gmt":"2011-03-07T13:38:09","guid":{"rendered":"http:\/\/www.instruyete.org\/?p=161"},"modified":"2011-03-07T14:38:09","modified_gmt":"2011-03-07T13:38:09","slug":"realtime-prozesse-aus-dem-userland","status":"publish","type":"post","link":"https:\/\/www.instruyete.org\/?p=161","title":{"rendered":"Realtime Prozesse aus dem Userland"},"content":{"rendered":"<p>Mit den Systemaufrufen:<\/p>\n<p><code>struct sched_param sp;<br \/>\nsched_setscheduler(pid,SCHED_RR,&sp);<\/code><\/p>\n<p>l\u00e4sst sich &#8211; sofern man \u00fcber <strong>CAP_SYS_NICE<\/strong> Capabilities verf\u00fcgt &#8211; jederzeit unter Linux der Prozess <em>pid<\/em> in einen soften Realtime Mode bringen. Hierbei \u00fcbernimmt das Kernelmodul <strong>sched_rt<\/strong> das Prozessscheduling von <strong>sched_fair<\/strong> (<strong>C<\/strong>omplete <strong>F<\/strong>air <strong>S<\/strong>cheduler).<\/p>\n<p>Beachtenswert hierbei ist wieder die gew\u00f6hnungsbed\u00fcrftige Invertierung der RT-Priorit\u00e4ten. Der Aufruf<\/p>\n<p><code>struct sched_param sp;<br \/>\nsp.sched_priority = 14;<\/code><\/p>\n<p>setzt die RT-Priorit\u00e4t auf 14 &#8211; welches im Linux Priorit\u00e4tenarray dann 99-14=85 ergibt. Dies best\u00e4tigt die Ausgabe Prio des folgenden Befehls:<\/p>\n<p><code>cat \/proc\/&lt;pid&gt;\/sched<\/code><\/p>\n<p>Die Capability CAP_SYS_NICE muss \u00fcbrigens nicht zwangsl\u00e4ufig bedeuten, dass nur root den Prozess starten muss. Mittels den <em>libcap-progs<\/em> kann auch folgender Befehl dem Programm auf Filesystemebene diese Capability zugestehen.<\/p>\n<p><code>setcap cap_sys_nice=ep \/pfad\/zu\/meinem\/programm<\/code><\/p>\n<p>Erforderlich dazu ist, dass der Kernel mit <strong>CONFIG_SECURITY_FILE_CAPABILITIES=y<\/strong> kompiliert wurde. Die Linux Kernel welche von Novell gebaut wurden (SLES,openSUSE) m\u00fcssen noch mit dem Bootparameter <strong>file_caps=1<\/strong> gestartet werden, da diese die F\u00e4higkeit zwar auch einkompiliert haben, aber standardm\u00e4ssig deaktiviert ist.<br \/>\nDer Bootparameter ist \u00fcbrigens exklusiv nur auf Novell Systemen vorhanden &#8211; der offizielle Vanilla Kernel Bootparameter bzgl. Capabilities lautet <strong>no_file_caps<\/strong> ,um die F\u00e4higkeit beim Start zu deaktivieren.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit den Systemaufrufen: struct sched_param sp; sched_setscheduler(pid,SCHED_RR,&#038;sp); l\u00e4sst sich &#8211; sofern man \u00fcber CAP_SYS_NICE Capabilities verf\u00fcgt &#8211; jederzeit unter Linux der Prozess pid in einen soften Realtime Mode bringen. Hierbei \u00fcbernimmt das Kernelmodul sched_rt das Prozessscheduling von sched_fair (Complete Fair Scheduler). Beachtenswert hierbei ist wieder die gew\u00f6hnungsbed\u00fcrftige Invertierung der RT-Priorit\u00e4ten. Der Aufruf struct sched_param sp; &hellip; <a href=\"https:\/\/www.instruyete.org\/?p=161\" class=\"more-link\"><span class=\"screen-reader-text\">Realtime Prozesse aus dem Userland<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,7],"tags":[],"class_list":["post-161","post","type-post","status-publish","format-standard","hentry","category-linux","category-unix"],"_links":{"self":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts\/161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=161"}],"version-history":[{"count":0,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/posts\/161\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}