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