我有这个系统服务:
[Unit]
Description=Toasty
After=multi-user.target
[Service]
WorkingDirectory=/mnt/data/Toasty
User=root
Group=root
ExecStart=/usr/local/bin/python3.5 /mnt/data/Toasty/run.py
Type=idle
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
我想要的是能够为python代码指定一个核心来运行。在
(TL;末尾为DR)
您可以使用
taskset
命令来实现这一点,它是util-linux
包的一部分。 大多数发行版都附带了它,如果您的系统上没有它,请安装它:使用以下命令以十六进制形式查看进程的CPU相关性:
^{pr2}$它将返回沿
ff
的内容,等于二进制或all cores
中的11111111
。在指定'c'选项(例如:
taskset -cp [pid]
)以获得人类可读的格式,如0-7
。在要将已运行的进程固定到特定的核心,请使用
或者
使用'c'选项,您可以使用逗号分隔的列表或核心范围(例如:0,2,5-7)。在
TL;DR:
现在我们已经掌握了基本知识,让我们来看看您的用例。可以使用
taskset
启动固定到核心的进程,如下所示:它将启动并将vlc固定到核心0。在
如果您希望将整个内核专用于一个(或多个)进程,那么您应该查看一下
isolcpus
内核参数并将其集成到grub配置中。它将在引导期间保留这些核心,以防其他进程使用,除了那些用taskset
分配的内核。在尝试将
ExecStartPost=/path/to/taskset -cp 1 $MAINPID
添加到Install
部分。在相关问题 更多 >
编程相关推荐