我指定了一个带有核心2-11的cpuset X和一个taskset --cpu-list 2。
似乎我运行一个使用cpuset X嵌套的taskset的进程,然后sched_getaffinity()只看到核心#2可用。
我的问题是,有没有办法实现以下目标:
- 将进程中的所有线程默认为1核心,AND
- 进程由cpuset“保护”(因此没有其他进程将使用指定的核心集),和
- 我仍然可以通过编程方式为某些线程设置cpu关联(我知道如何使用pthread_attr_setaffinity_np())?
提前致谢。
答案 0 :(得分:0)
让我以这种方式提出您的问题,您希望您的进程在其中一个核心上运行并阻止任何其他进程在其上运行?在这种情况下,您应该引用命令isolcpus
。
通过在引导期间使用参数isolcpus
,您可以将一个或多个CPU与内核调度程序隔离,除非进程/线程请求使用CPU关联使用隔离的CPU。 (请参阅 - http://www.linuxtopia.org/online_books/linux_kernel/kernel_configuration/re46.html和 - whole one core dedicated to single process)