簡體   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