Linux

當程序尚未執行時,taskset 如何創建 pid?

  • May 6, 2018

我想將處理能力限制在我的機器中只有一個核心,所以我發現taskset可以幫助設置一個核心,比如核心 0,如下所示(感謝這個答案):

taskset -c 0 -p 45678

問題是,當我的程序還沒有執行時,如何確定這裡的 process_id pid?在這種情況下,我們是否只是設置了一個任意程序 ID 以供 Linux 獲取45678?如果是這樣,是否可以在 shell 腳本中執行以下操作:

#!/bin/sh
# Set the processing unit
taskset -c 0 -p 45678

# run python script
python main.py

您不能呼叫taskset來記錄設置以用於未來的過程。這種呼叫模式taskset僅適用於目前正在執行的程序。

要將新程序固定到核心,請taskset在其直接模式下呼叫。你打電話taskset告訴它要執行什麼程序。

taskset -c 0 python main.py

它的工作方式是:

  1. shell(或其他呼叫程序)創建一個新程序(fork)來執行(execvetaskset -c 0 python main.py
  2. 執行的程序taskset將核心設置應用於自身。
  3. 該程序在同一程序中執行(execve再次) 。python main.py

這是進行其他每個程序設置的方式:當您為單個程序(例如 with env)而不是為 shell 會話(例如 with export)設置環境變數時,CPU niceness with nice,重定向(通常通過 shell 語法完成而不是使用單獨的實用程序)等。

引用自:https://unix.stackexchange.com/questions/442146