整个一芯专用于单一工艺

在Linux中有没有办法将一个cpu核心分配给特定的给定进程,并且在这个核心上不应该有任何其他进程或中断处理程序被调度?

我已经阅读过关于使用taskset实用程序的Linux绑定过程到cpu的进程亲和力,但这不是解决我的问题,因为它只是试图将给定的进程绑定到该核心,但有可能其他进程可能在这个核心上安排,这是我想避免什么。

我们应该改变内核代码进行调度吗?

在这里。事实上,有两种单独的方式来做: – )

现在,完成你想要的最好的方法是:

>在引导期间将参数isolcpus = [cpu_number]添加到Linux内核命令行形式的引导加载程序。这将指示Linux调度程序不在该cpu上运行任何常规任务,除非使用cpu affinity特别请求。
>使用IRQ亲和性设置其他cpu来处理所有中断,以便隔离的cpu不会收到任何中断。
>使用cpu关联性将特定任务修复到隔离的cpu

这将给你最好的Linux可以提供关于cpu隔离,没有树和开发补丁。

您的任务将不时被Linux代码中断,包括其他任务,例如计时器滴答中断和调度程序代码,来自其他cpu的IPI和工作队列内核线程,尽管中断应该是非常小的。

对于一个(几乎)完整的中断源列表,请查看我的页面https://github.com/gby/linux/wiki

另一种方法是使用cpusets,这是更优雅和动态,但在这个时间点(没有迁移的计时器,例如)的一些弱点,这使我推荐老的,原始但有效的isolcpus参数。

请注意,Linux社区目前正在做的工作是解决所有这些问题,更多的是提供更好的隔离。

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...