您好我正在Linux机器(更具体地说,CentOS 6)上运行一些延迟敏感的程序,我不希望进程的线程被抢先。 所以在我的计划中,第一步是设置线程的cpu关系,以便线程在不同的核心上运行,所以它们不会相互抢占。 然后,第二步是确保系统中的其他进程不在这些内核上运行。
所以我的问题是:是否有可能限制整个系统运行在某些核心,除了这个过程? 这应该适用于未来任何新创build的stream程。
在CentOS 6上可用的Cgroup有一个cpuset子系统,允许你select在哪一组CPU上运行哪个进程。 通过cpuset子系统,你可以用一个CPU创build一个cpuset,把所有正在运行的进程放在那个cpuset中,就像你在问题中所说的那样,“限制整个系统运行在某些内核上”。 然后,可以使用剩余的CPU创build另一个cpuset,启动线程化进程并将进程置于新创build的cpuset中。
Cgroups和cpuset完全由mount,mkdir和echo命令pipe理。
还有一个cset实用程序,它为cpuset提供了更高级别的function(使用mkdir / echo,您需要在cpuset中使用for循环移动每个进程)。