2013-03-16 91 views
13

我想在啓動時設置Linux上進程的cpu親和力。從linux上開始設置進程的cpu親和力

有像sched_setaffinity和taskset這樣的方法,但它們需要進程的processid。他們可能會導致潛在的遷移,就像一個核心啓動了一個進程,但在使用sched_setaffinity/taskset之後,他們被遷移到另一個核心。

我想要做的是從一開始就在特定的核心上啓動一個新的進程。

+0

爲什麼你想這樣做?內核通常比選擇內核來執行某個任務更好... – 2013-03-16 16:02:31

+0

我正在使用檢查點過程的檢查點模塊。我想保存此進程的cpu-affinity信息,並使用相同的關聯性從上一個檢查點開始此進程。 – 2013-03-17 07:38:07

回答

18

taskset既可以採用設置一個運行中的進程的親和力或具有一定親和力啓動一個進程,見

梗概

taskset [options] mask command [arg]... 
taskset [options] -p [mask] pid 

的下面的命令將在CPU 1 & 2(或0和1)啓動谷歌瀏覽器。掩碼是0×00000003,命令是「google-chrome」。

taskset 0×00000003 google-chrome 
+0

非常感謝您的信息。讓我檢查並處理它。 (特別是我想在內核級別看到taskset的內部工作) – 2013-03-17 07:40:55