Linux
如何在 Linux 中將一個程序限制為一個 CPU 核心?
如何將程序限制為一個 cpu 核心?
類似於
ulimit
或cpulimit
會很好的東西。(只是為了確保:我不想限制使用百分比或執行時間。我想強制應用程序(連同它的所有子程序、程序(執行緒))使用一個 cpu 核心(或“n”個 cpu 核心))。
在 Linux 下,執行
sched_setaffinity
系統呼叫。程序的親和性是它可以執行的處理器集。有一個標準的外殼包裝器:taskset
. 例如,要將程序固定到 CPU #0(您需要選擇特定的 CPU):taskset -c 0 mycommand --option # start a command with the given affinity taskset -c -pa 0 1234 # set the affinity of a running process
Sys::CpuAffinity
Perl ( ) 和 Python ( )都有第三方模組affinity
來設置程序的親和性。這些都可以在 Linux 和 Windows 上執行(Windows 可能需要其他第三方模組Sys::CpuAffinity
);Sys::CpuAffinity
也適用於其他幾個 unix 變體。如果你想從它誕生的時候設置一個程序的親和性,在呼叫之前設置目前程序的親和性
execve
。這是一個簡單的包裝器,它強制程序在 CPU 0 上執行。#!/usr/bin/env perl use POSIX; use Sys::CPUAffinity; Sys::CpuAffinity::setAffinity(getpid(), [0]); exec $ARGV[0] @ARGV