有没有可能在代码中将cpu与linux调度器隔离,并授予用户执行此操作的权限,这样他就不必是root用户?
我可以很容易地设置进程/线程的cpu亲和性:
// set thread affinity to core 1
cpu_set_t cpu_set;
CPU_ZERO(&cpu_set);
CPU_SET(1, &cpu_set);
sched_setaffinity(tid, sizeof(cpu_set_t), &cpu_set);现在,我想将此cpu与系统中的所有其他进程隔离开来。
我知道我可以用金枪鱼在Redhat上做到这一点:
sudo tuna --cpus 1 --isolate
sudo tuna --cpus 3 --isolate我在某处读到,可以按如下方式隔离:
sudo echo 0 > /sys/devices/system/cpu/cpu1/online
sudo echo 1 > /sys/devices/system/cpu/cpu1/isolated
sudo echo 1 > /sys/devices/system/cpu/cpu1/online 但是,创建isolated文件的尝试将失败,并显示Permission denied
最后,有没有办法授予特定用户隔离cpu的权限(就像增加/etc/security/limits.conf中的某些限制一样)?
username hard memlock unlimited
username soft memlock unlimited
username - rtprio 99发布于 2012-03-01 03:05:31
您提到的/sys中的文件是由操作系统自动创建和维护的-它是一个虚拟文件系统,而不是硬盘上的常规文件,所以您不能自己创建它们。
负责您提到的特定文件的子系统称为"CPU hotplug“,描述为here。显然,您需要一个支持此功能的内核,因此要么查看您的发行版可用的内核(此选项可能只在为高级服务器使用而设置的内核中),要么编译您自己的内核并确保启用了"CPU hotplug“(CONFIG_HOTPLUG_CPU=y)。
https://stackoverflow.com/questions/9498878
复制相似问题