Introduction to cpu affinity
1. Motivation
CPU的亲和性, 就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,即绑定CPU or 绑核。
在多核运行的机器上,每个CPU本身自己会有缓存,缓存着进程使用的信息,而进程可能会被OS调度到其他CPU上,如此,CPU cache命中率就低了。当绑定CPU后,程序就会一直在指定的cpu跑,不会由操作系统调度到其他CPU上,性能有一定的提高。
另外一种使用绑核考虑就是将重要的业务进程隔离开,对于部分实时进程调度优先级高,可以将其绑定到一个指定核上,既可以保证实时进程的调度,也可以避免其他CPU上进程对该实时进程的干扰。
https://en.wikipedia.org/wiki/Processor_affinity
2. Material
1 | man taskset |
C language: sched_setaffinity
and sched_getaffinity
function.
3. Example
1 | // a.c |
1 | $ gcc a.c |
1 | $ pgrep myProcess |
From the result, we can see: process 8402 is running on processor #4, it’s corresponding to mask 0x10
.
参考资料: