CPU 亲缘性(CPU Affinity)是指将进程或线程绑定到特定的 CPU 核心上运行,以优化性能和减少上下文切换。通过设置 CPU 亲缘性,可以确保进程或线程在指定的 CPU 核心上执行,从而减少缓存失效和提高执行效率。
以下是一个使用 sched_setaffinity
函数设置 CPU 亲缘性的 C 语言示例:
#include <stdio.h>
#include <stdlib.h>
#include <sched.h>
#include <unistd.h>
void set_cpu_affinity(int cpu_id) {
cpu_set_t mask;
CPU_ZERO(&mask);
CPU_SET(cpu_id, &mask);
if (sched_setaffinity(0, sizeof(mask), &mask) == -1) {
perror("sched_setaffinity");
exit(EXIT_FAILURE);
}
}
int main() {
int cpu_id = 1; // 绑定到第二个 CPU 核心(从 0 开始计数)
set_cpu_affinity(cpu_id);
printf("进程已绑定到 CPU 核心 %d\n", cpu_id);
while (1) {
// 模拟长时间运行的任务
sleep(1);
}
return 0;
}
原因:
解决方法:
sudo
提升权限运行程序。原因:
解决方法:
通过设置 CPU 亲缘性,可以有效提升多核处理器的利用率和程序性能。在实际应用中,应根据具体需求和系统环境合理配置 CPU 亲缘性,以达到最佳效果。
领取专属 10元无门槛券
手把手带您无忧上云