CPU affinity(亲和性)
1. 基本概念
CPU affinity是一种调度属性,它可以将一个进程“绑定”到一个或一组CPU上
在SMP(Symmetric Multi-Processing对称多处理器)架构下,Linux调度器(scheduler)会根据CPU affinity的设置让指定的进程运行在“绑定”的CPU上,而不会在别的CPU上运行。
Linux调度器同样支持自然CPU亲和性;调度器会试图保持进程在相同的CPU上运行,这意味着进程通常不会在处理器之间频繁迁移,进程迁移的频率小意味着产生的负载小
因为程序的坐着比调度器更了解程序,所以我们可以手动地为其分配CPU核,而不会过多的占用CPU0,或者让我们关键进程和一对别的进程挤在一起,所有设置CPU亲和性可以是某些程序提高性能
2. 表示方法
CPU affinity 使用位掩码(bitmask)表示,每一位都表示一个CPU,置1表示“绑定”
最低位表示第一个逻辑CPU,最高位表示最后一个逻辑CPU
1 | 0x00000001 |
3. taskset 命令
taskset命令用于获取或设定CPU亲和性