我怎样才能知道当前运行内核的隔离cpu列表?



到目前为止,我的应用程序在其配置文件中请求隔离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

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

cat /sys/devices/system/cpu/isolated

只能以一种非常向后的方式-/proc/cmdline有当前的内核命令行,您可以解析它以获得内核启动时使用的参数,包括isolcpus

根据我的经验,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

最新更新