擅长:python、mysql、java
<p>(TL;末尾为DR)</p>
<p>您可以使用<code>taskset</code>命令来实现这一点,它是<code>util-linux</code>包的一部分。
大多数发行版都附带了它,如果您的系统上没有它,请安装它:</p>
<pre><code>apt-get install util-linux
</code></pre>
<hr/>
<p>使用以下命令以十六进制形式查看进程的CPU相关性:</p>
^{pr2}$
<p>它将返回沿<code>ff</code>的内容,等于二进制或<code>all cores</code>中的<code>11111111</code>。在</p>
<p>指定'c'选项(例如:<code>taskset -cp [pid]</code>)以获得人类可读的格式,如<code>0-7</code>。在</p>
<p>要将已运行的进程固定到特定的核心,请使用</p>
<pre><code>taskset -p [hexmask] [pid]
ex: taskset -p 0x1 4242
</code></pre>
<p>或者</p>
<pre><code>taskset -cp [list] [pid]
ex: taskset -cp 0 4242
</code></pre>
<p>使用'c'选项,您可以使用逗号分隔的列表或核心范围(例如:0,2,5-7)。在</p>
<hr/>
<p><strong>TL;DR:</strong></p>
<p>现在我们已经掌握了基本知识,让我们来看看您的用例。可以使用<code>taskset</code>启动固定到核心的进程,如下所示:</p>
<pre><code>taskset 0x1 vlc
</code></pre>
<p>它将启动并将vlc固定到核心0。在</p>
<p>如果您希望将整个内核专用于一个(或多个)进程,那么您应该查看一下<code>isolcpus</code>内核参数并将其集成到grub配置中。它将在引导期间保留这些核心,以防其他进程使用,除了那些用<code>taskset</code>分配的内核。在</p>