一、命令行工具
Linux系统 - taskset命令:
直接设置进程或线程的CPU亲和性。例如,将进程ID为1234的程序绑定到CPU核心0和2:
```bash
taskset -c 0,2 -p 1234 ./my_program
```
- /proc文件系统:通过读写特定文件实现绑定。例如:
```bash
echo 0,2 > /proc/1234/task/0/cpuset
```
- 系统调用:使用`sched_setaffinity`函数(需编程实现):
```c
include cpu_set_t mask; CPU_ZERO(&mask); CPU_SET(0, &mask); sched_setaffinity(pid, sizeof(mask), &mask); ```Windows系统
- start命令:
通过任务属性设置亲和性(需管理员权限);
- 任务管理器:手动调整进程的CPU亲和性;
- PowerShell:使用`Set-ProcessAffinity` cmdlet:
```powershell
Set-ProcessAffinity -ProcessId 1234 -Processor 0,2
```
二、图形化工具
Linux系统 - htop:
通过插件(如`htop-cpu-affinity`)可视化设置;
- Grafana + Prometheus:集成系统监控时,可配置CPU亲和度指标。
Windows系统 - 性能监视器(perfmon):
通过资源监视器查看和设置亲和性。
三、编程接口
Linux:使用`sched_setaffinity`(C/C++)或`pthread_setaffinity_np`(Python);
Windows:使用`SetProcessAffinityMask` API(C/C++)。
四、注意事项
性能优化:
绑定到特定核心可减少缓存失效,提升性能,但需结合实际硬件架构调整;
多核心利用:
避免过度绑定导致其他任务无法使用空闲核心,建议根据负载动态调整;
系统限制:
部分系统(如Linux)允许设置进程最大亲和核心数(如`/proc/sys/kernel/threads-max`)。
通过以上方法,可根据需求灵活设置CPU亲和度,平衡性能与资源利用率。