如何知道当前运行的内核的隔离cpu列表?

时间:2014-05-27 09:35:03

标签: linux kernel cpu system-calls

到目前为止,我的应用程序在其配置文件中请求隔离的cpu列表。然后它使用pthread_setaffinity_np()来强制在那种cpu上运行。通常,制作配置文件的人进入文件/boot/grub/menu.lst并选择正确的条目,以便知道当前的隔离cpu列表是什么。

title CentOS (2.6.32-431.5.1.el6.x86_64)
        root (hd0,1)
        kernel ... isolcpus=4-15

所以,我想避免那个人必须在配置文件中手动输入该列表。我的应用程序是否有可能以编程方式获取该列表?

3 个答案:

答案 0 :(得分:3)

仅以非常倒退的方式 - / proc / cmdline具有当前内核命令行,您可以解析该命令行以获取内核启动的参数,包括isolcpus

答案 1 :(得分:1)

cat /sys/devices/system/cpu/isolated

答案 2 :(得分:-1)

根据我的经验,PID 1绑定到非隔离CPU,因此隔离CPU的列表将是所有CPU减去该列表。

# cat /proc/cmdline
... isolcpus=2-7 ...
# taskset -p 1 | awk '{print $NF}'
3
# cat /sys/devices/system/cpu/online
0-7