繁体   English   中英

指定要在其上运行 python 脚本的核心。 系统

[英]Specify a core to run a python script on. systemd

我有这个 systemd 服务:

[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软件包中的taskset命令来实现。 大多数发行版已经附带了它,如果在您的系统上不可用,请安装:

apt-get install util-linux

使用以下命令以十六进制查看进程的CPU关联性:

taskset -p [pid]

它将沿ff返回值,等于二进制或all cores 11111111

指定'c'选项(例如: taskset -cp [pid] )以获取taskset -cp [pid]格式,例如0-7

要将已经运行的进程固定到特定的内核,请使用

taskset -p [hexmask] [pid]

ex: taskset -p 0x1 4242

要么

taskset -cp [list] [pid]

ex: taskset -cp 0 4242

使用'c'选项,可以为核心使用逗号分隔的列表或范围(例如:0,2,5-7)。


TL; DR:

现在我们有了基本知识,让我们进入您的用例。 这是可能的开始固定与内核的过程taskset ,像这样:

taskset 0x1 vlc

这将启动并将vlc固定到核心0。

如果您只想将整个核心专用于一个(或多个)进程,则应查看isolcpus内核参数,并将其集成到您的grub配置中。 在启动过程中,它将保留那些内核,以免其他进程使用您指定的那些内核,除非您使用taskset分配了这些taskset

尝试将ExecStartPost=/path/to/taskset -cp 1 $MAINPID到“ Install部分。

[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
ExecStartPost=/path/to/taskset -cp 1 $MAINPID
Type=idle
Restart=always
RestartSec=2

[Install]
WantedBy=multi-user.target

CPUAffinity怎么

[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
CPUAffinity=0-20,288-308
Type=idle
Restart=always
RestartSec=2

[Install]
WantedBy=multi-user.target

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM