Kat*_*ine 3 linux cpu process shell-script taskset
我想将处理能力限制在我的机器中只有一个核心,所以我发现taskset可以帮助设置一个核心,比如核心 0,如下(由这个答案提供):
taskset -c 0 -p 45678
Run Code Online (Sandbox Code Playgroud)
问题是,当我的程序还没有运行时,我如何在这里确定 process_id pid?在这种情况下,我们是否只是设置了一个由 Linux 获取的任意进程 ID 45678?如果是这样,是否可以在 shell 脚本中执行以下操作:
#!/bin/sh
# Set the processing unit
taskset -c 0 -p 45678
# run python script
python main.py
Run Code Online (Sandbox Code Playgroud)
您无法通过调用taskset来记录用于未来流程的设置。这种调用模式taskset仅适用于当前运行的进程。
要将新进程固定到核心,请taskset在其直接模式下调用。您调用taskset并告诉它要执行的程序。
taskset -c 0 python main.py
Run Code Online (Sandbox Code Playgroud)
它的工作方式是:
fork) 来执行 ( execve) taskset -c 0 python main.py。taskset将核心设置应用于自身。execve再次)python main.py。这是进行其他每进程设置的方式:当您为单个进程(例如 with env)而不是为 shell 会话(例如 with export)设置环境变量时,CPU 友好性 with nice,重定向(通常通过 shell 语法完成)而不是使用单独的实用程序)等。