linux

Linux CPUInfo:怎样配置CPU亲和性

小樊
47
2025-09-15 08:00:49
栏目: 智能运维

在Linux系统中,可以使用taskset命令或sched_setaffinity()系统调用来配置CPU亲和性。这将允许您将进程绑定到特定的CPU核心上运行,从而提高性能和资源利用率。

方法1:使用taskset命令

taskset命令允许您查看和设置进程的CPU亲和性。以下是如何使用taskset命令的一些示例:

  1. 查看进程的CPU亲和性:
taskset -p <pid>

<pid>替换为您要查看的进程ID。

  1. 设置进程的CPU亲和性:
taskset -c <cpu-list> -p <pid>

<cpu-list>替换为一个逗号分隔的CPU核心列表(例如:0,1,2),将<pid>替换为您要设置的进程ID。

例如,要将进程ID为1234的进程绑定到CPU核心0和2上,您可以运行:

taskset -c 0,2 -p 1234

方法2:使用sched_setaffinity()系统调用

在C/C++程序中,您可以使用sched_setaffinity()系统调用来设置进程的CPU亲和性。以下是一个简单的示例:

#define _GNU_SOURCE
#include <sched.h>
#include <stdio.h>
#include <unistd.h>

int main() {
    cpu_set_t mask;
    CPU_ZERO(&mask);
    CPU_SET(0, &mask); // 将CPU核心0添加到掩码中
    CPU_SET(2, &mask); // 将CPU核心2添加到掩码中

    // 将当前进程的CPU亲和性设置为掩码
    if (sched_setaffinity(0, sizeof(mask), &mask) == -1) {
        perror("sched_setaffinity");
        return 1;
    }

    // 在此处执行您的程序逻辑
    while (1) {
        printf("Hello from CPU 0 and 2!\n");
        sleep(1);
    }

    return 0;
}

编译并运行此程序,它将在CPU核心0和2上运行。

注意:在使用这些方法之前,请确保您具有足够的权限。通常,您需要以root用户身份运行这些命令或程序。

0
看了该问题的人还看了