2010-01-27 101 views
3

感謝迄今爲止所有的答案!在Linux上的處理器親和力

我有一個雙核processers,我想有運行 對核心-1,但一個的所有進程。例如,我現在知道我可以使用taskset將當前運行的所有設置爲 綁定到處理器1。現在我希望我的OWN應用程序在啓動應用程序後立即在處理器2上執行 。換句話說, 是否有某種方法可以告訴我的應用程序中的操作系統,我希望在處理器編號2上執行該特定程序?

太感謝你了, Mareika

+0

這是一個編程問題?我不知道。如果不是的話,這對SU來說絕對是一個好問題。 – 2010-01-27 18:47:54

回答

2
+1

謝謝你的建議。但是,還有一種方法可以在我的應用程序中指定它應該在第二個核心上運行?這樣它就會在第二個核心上自動啓動,我不需要等到它開始執行後才能啓動它。 – Mareika 2010-01-28 10:31:47

2

您可以使用:

taskset -c 1 -p 123 

讓運行過程123芯2

+2

你也必須做'使用taskset -c 0 -p '每隔運行PID完全達到什麼OP通緝。 – caf 2010-01-27 23:35:03

1

我會尋找一種方式以限制'init'進程在cpu 1上運行。*由於CPU關聯是繼承的,這應該會導致系統上的其他進程所以在cpu 1上運行,直到你啓動你的具有cpu 2的cpu affinity設置的特定進程。

*或者,在系統啓動後,你可以重新指定所有當前正在運行的進程的關聯,但似乎不那麼優雅。

2

看看這篇文章:

http://www.linuxjournal.com/article/6799

覆蓋了詳細的主題。

總之,要確保「初始化」的入門親和力的一個進程內(它的孩子將繼承),那麼你要使用:

// (Declaration got via 'man sched_setaffinity') 
int sched_setaffinity(pid_t pid, size_t cpusetsize, 
         cpu_set_t *mask); 

要剛過設置你的進程關聯的程序啓動。