Linux
如何在 Linux 上設置程序的處理器親和性?
如何在 Linux 上設置程序的處理器親和性?
我為此使用了任務集。如果您安裝了任務集,例如:
taskset -cp 0,2 45678
會將 id 為 45678 的程序設置為與 cpus 1 和 3 具有關聯性。
在程序內部,呼叫將是
sched_setaffinity()
,或者對於 pthreads 的東西,pthread_setaffinity_np()
在相關的說明中,如果您擔心程序的 CPU 親和力,可能值得關注它是如何進行記憶體分配的。記憶體連接到多個控制器(即多個 CPU 插槽,每個都有自己的)的較大系統將在不同的 CPU-記憶體對之間具有可變的延遲和頻寬。您還需要查看 NUMA 親和性,使用
numactl
它使用的命令或系統呼叫。我參與的一個程序由此獲得了 10% 的性能提升。