<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Раздел полезных советов: Как в Linux привязать процесс к CPU и установить атрибуты планирования</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/40639.html</link>
    <description>При необходимости увеличить производительность определенного процесса в системе, &lt;br&gt;можно жестко привязать его к определенному CPU (CPU affinity), исключив &lt;br&gt;ситуацию мигрирования между процессорами, а также изменить для него алгоритм работы &lt;br&gt;планировщика задач и увеличить приоритет.&lt;br&gt;&lt;br&gt;Привязка к CPU осуществляется командой taskset, а изменение параметров  real-time &lt;br&gt;планирования командой chrt. Обе команды можно использовать каскадно, вызывая &lt;br&gt;одну в качестве аргумента другой. &lt;br&gt;&lt;br&gt;Например:&lt;br&gt;&lt;br&gt;   taskset -c 2-3 chrt -f 1 &amp;lt;command&amp;gt;&lt;br&gt;&lt;br&gt;привяжет выполнение команды к CPU со 2 по 3 (&quot;-c 2-3&quot;, можно перечислять &lt;br&gt;процессоры через запятую, например, &quot;-c 2,3&quot;), а также задействует политику &lt;br&gt;планирования SCHED_FIFO (&quot;-f&quot;) и установит приоритет 1 уровня. &lt;br&gt;&lt;br&gt;Политики планирования (описание - man sched_setscheduler):&lt;br&gt;   -b SCHED_BATCH&lt;br&gt;   -f SCHED_FIFO &lt;br&gt;   -o SCHED_OTHER&lt;br&gt;   -r SCHED_RR &lt;br&gt;&lt;br&gt;Изменение параметров для уже запущенного процесса производится при помощи опции &quot;-p&quot;. &lt;br&gt;Например, изменение параметров процес</description>

<item>
    <title>Как в Linux привязать процесс к CPU и установить атрибуты планирования (Иван)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/40639.html#14</link>
    <pubDate>Thu, 10 Sep 2020 08:05:24 GMT</pubDate>
    <description>Спасибо&lt;br&gt;Теперь понятно как в Linux привязать процесс к конкретному CPU&lt;br&gt;Но мне еще важно чтобы этот процесс использовал это CPU монопольно то есть чтобы все остальные процессы использовали другие CPU.&lt;br&gt;Не подскажете как это сделать ?&lt;br&gt;</description>
</item>

<item>
    <title>Как в Linux привязать процесс к CPU и установить атрибуты пл... (pavlinux)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/40639.html#13</link>
    <pubDate>Tue, 02 Mar 2010 14:56:18 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;ядра(чистыйизумруд) ! &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;CPU_1_CORE_1=1&lt;br&gt;&amp;gt;&amp;gt;CPU_1_CORE_2=2&lt;br&gt;&amp;gt;&amp;gt;CPU_2_CORE_1=3&lt;br&gt;&amp;gt;&amp;gt;CPU_2_CORE_2=4&lt;br&gt;&amp;gt;&amp;gt;Я взирал на ядра :)&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Ядра(чистыйизумруд), и это бесспорно, но я имел ввиду ошибку в скрипте: не &lt;br&gt;&amp;gt;1,2,3,4 а 1,2,4,8 ибо это маска, а не номер процессора/ядра :) &lt;br&gt;&lt;br&gt;А,... ну да, я их вечно пустаю с утилью taskset&lt;br&gt;</description>
</item>

<item>
    <title>Как в Linux привязать процесс к CPU и установить атрибуты пл... (Rush)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/40639.html#12</link>
    <pubDate>Tue, 02 Mar 2010 12:46:36 GMT</pubDate>
    <description>Вообще наши админы тоже затрахали с этими процессорами и ядрами - ну какая разница сколько там микросхем стоит  - ведь, когда объём памяти спрашивают, имеют ввиду совсем не количество планок :) Главное - ядра(чистыйизумруд) !&lt;br&gt;&lt;br&gt;&amp;gt;CPU_1_CORE_1=1&lt;br&gt;&amp;gt;CPU_1_CORE_2=2&lt;br&gt;&amp;gt;CPU_2_CORE_1=3&lt;br&gt;&amp;gt;CPU_2_CORE_2=4&lt;br&gt;&amp;gt;Я взирал на ядра :)&lt;br&gt;&lt;br&gt;Ядра(чистыйизумруд), и это бесспорно, но я имел ввиду ошибку в скрипте: не 1,2,3,4 а 1,2,4,8 ибо это маска, а не номер процессора/ядра :)&lt;br&gt;&lt;br&gt;П.С.: читать &quot;изумруд&quot; как &quot;кремний&quot; :)&lt;br&gt;</description>
</item>

<item>
    <title>Как в Linux привязать процесс к CPU и установить атрибуты пл... (pavlinux)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/40639.html#11</link>
    <pubDate>Tue, 02 Mar 2010 11:09:52 GMT</pubDate>
    <description>&amp;gt;Я, конечно, дико извиняюсь, но ИМХО должно быть что то вроде &lt;br&gt;&amp;gt;CPU_1_CORE_1=1 &lt;br&gt;&amp;gt;CPU_1_CORE_2=2 &lt;br&gt;&amp;gt;CPU_2_CORE_1=4 &lt;br&gt;&amp;gt;CPU_2_CORE_2=8 &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Соответственно, чтобы привязать прерывания, например, к 1-му процессору (невзирая на ядро) &lt;br&gt;&amp;gt;CPU_1=3 &lt;br&gt;&amp;gt;и, соответственно &lt;br&gt;&amp;gt;CPU2=12 &lt;br&gt;&lt;br&gt;Я взирал на ядра :) &lt;br&gt;&lt;br&gt;У меня например, на 2-х процессорной матери стоят двух ядерные процы...&lt;br&gt;&lt;br&gt;2 сетевушки, EHCI_USB и OHCI_USB, 1 сетевуха конектится на 1 проц, 2 на второй, &lt;br&gt;тоже самое  с USB, так почему бы не разогнать прерывания от USB и Ethernet по разным&lt;br&gt;ядрам... &lt;br&gt;&lt;br&gt;CPU_1_CORE_1 = eth0&lt;br&gt;CPU_1_CORE_2 = uhci_usb &lt;br&gt;CPU_2_CORE_1 = eth1&lt;br&gt;CPU_2_CORE_2 = ehci_usb &lt;br&gt;&lt;br&gt;P.S. Клаву и часы лучше оставить на 0 ядре &lt;br&gt;</description>
</item>

<item>
    <title>Как в Linux привязать процесс к CPU и установить атрибуты пл... (Rush)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/40639.html#10</link>
    <pubDate>Tue, 02 Mar 2010 05:59:39 GMT</pubDate>
    <description>&amp;gt;CPU_1_CORE_1=1 &lt;br&gt;&amp;gt;CPU_1_CORE_2=2 &lt;br&gt;&amp;gt;CPU_2_CORE_1=3 &lt;br&gt;&amp;gt;CPU_2_CORE_2=4 &lt;br&gt;&lt;br&gt;Я, конечно, дико извиняюсь, но ИМХО должно быть что то вроде&lt;br&gt;CPU_1_CORE_1=1&lt;br&gt;CPU_1_CORE_2=2&lt;br&gt;CPU_2_CORE_1=4&lt;br&gt;CPU_2_CORE_2=8&lt;br&gt;&lt;br&gt;Соответственно, чтобы привязать прерывания, например, к 1-му процессору (невзирая на ядро)&lt;br&gt;CPU_1=3&lt;br&gt;и, соответственно&lt;br&gt;CPU2=12&lt;br&gt;&lt;br&gt;Я ещё раз прошу прощения, информация чисто только что практически выдумана мной, ибо тысячу лет назад, на заре появления SMP я видел код планировщика, который стопудов по маске смотрел, а не по порядковому номеру. Возможно сейчас всё изменилось (но вряд ли).&lt;br&gt;</description>
</item>

<item>
    <title>Как в Linux привязать процесс к CPU и установить атрибуты пл... (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/40639.html#9</link>
    <pubDate>Sun, 16 Mar 2008 21:52:26 GMT</pubDate>
    <description>неа, man cpuset&lt;br&gt;&lt;br&gt;DESCRIPTION&lt;br&gt;     The cpuset command can be used to assign processor sets to processes, run&lt;br&gt;     commands constrained to a given set or list of processors, and query&lt;br&gt;     information about processor binding, sets, and available processors in&lt;br&gt;     the system.&lt;br&gt;</description>
</item>

<item>
    <title>Как в Linux привязать процесс к CPU и установить атрибуты пл... (pavlinux)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/40639.html#7</link>
    <pubDate>Fri, 14 Mar 2008 10:54:10 GMT</pubDate>
    <description>Чуть не забыл, утиль irq-balance тоже не забываем.&lt;br&gt;</description>
</item>

<item>
    <title>Как в Linux привязать процесс к CPU и установить атрибуты пл... (pavlinux)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/40639.html#6</link>
    <pubDate>Fri, 14 Mar 2008 10:52:03 GMT</pubDate>
    <description>1. Установить патчик http://www.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.24.3-rt3.bz2&lt;br&gt;2. Смотреть мануал на своб материнку, чипсет, и т.п. на предмет кто на каком CPU работает.&lt;br&gt;(этот пример для вот этой матери - http://tyan.com/product_board_detail.aspx?pid=151)&lt;br&gt;3. User-space приложения лучше не chrt_аймить, ну если надо, то не более -f  -p 2 &#096;pidof foo&#096;, смотреть на nice level, демоны не связанные с железом тоже не надо, artsd - можно.&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;br&gt;</description>
</item>

<item>
    <title>Как в Linux привязать процесс к CPU и установить атрибуты планирования (pavlinux)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/40639.html#5</link>
    <pubDate>Fri, 14 Mar 2008 10:35:34 GMT</pubDate>
    <description>#!/bin/bash&lt;br&gt;&lt;br&gt;#########&lt;br&gt;&lt;br&gt;DEV_IRQ=&#096;ps -eL &amp;#124; grep IRQ &amp;#124; awk &apos;&#123;printf $1&quot; &quot;$2&quot; &quot;&#125;&apos;&#096;&lt;br&gt;&lt;br&gt;for i in $DEV_IRQ&lt;br&gt;   do&lt;br&gt;     chrt -r -p 99 $i;&lt;br&gt;done&lt;br&gt;&lt;br&gt;##########&lt;br&gt;&lt;br&gt;SOFT_IRQ=&#096;ps -eL &amp;#124; grep softirq &amp;#124; awk &apos;&#123;printf $1&quot; &quot;$2&quot; &quot;&#125;&apos;&#096;&lt;br&gt;&lt;br&gt;for i in $SOFT_IRQ&lt;br&gt;   do&lt;br&gt;     chrt -r -p 99 $i&lt;br&gt;done&lt;br&gt;&lt;br&gt;##########&lt;br&gt;&lt;br&gt;NET_SOFT_IRQ=&#096;ps -A &amp;#124; grep softirq-net &amp;#124; awk &apos;&#123;print $1&#125;&apos;&#096;&lt;br&gt;&lt;br&gt;for i in $NET_SOFT_IRQ&lt;br&gt;   do&lt;br&gt;     chrt -f -p 99 $i&lt;br&gt;done&lt;br&gt;&lt;br&gt;########&lt;br&gt;&lt;br&gt;unset CPU_1_CORE_1 CPU_1_CORE_2 CPU_2_CORE_1 CPU_2_CORE_2&lt;br&gt;&lt;br&gt;&lt;br&gt;PROC=/proc/irq&lt;br&gt;&lt;br&gt;CPU_1_CORE_1=1&lt;br&gt;CPU_1_CORE_2=2&lt;br&gt;CPU_2_CORE_1=3&lt;br&gt;CPU_2_CORE_2=4&lt;br&gt;&lt;br&gt;VIDEO=&#096;find $PROC -name nvidia &amp;#124; cut -b 11-13&#096;;&lt;br&gt;ETH0=&#096;find $PROC  -name eth0 &amp;#124; cut -b 11-13&#096;;&lt;br&gt;SCSI=&#096;find $PROC -name aic79xx &amp;#124; cut -b 11-13&#096;;&lt;br&gt;ATA=&#096;find $PROC -name libata &amp;#124; cut -b 11-13&#096;;&lt;br&gt;AUDIO=&#096;find $PROC -name &quot;NVidia CK804&quot; &amp;#124; cut -b 11-13&#096;;&lt;br&gt;&lt;br&gt;echo $CPU_1_CORE_1 &amp;gt; /proc/irq/$VIDEO/smp_affinity;&lt;br&gt;echo $CPU_1_CORE_2 &amp;gt; /proc/irq/$ETH0/smp_affinity;&lt;br&gt;echo $CPU_1_CORE_1 &amp;gt; /proc/irq/$SCS</description>
</item>

</channel>
</rss>
