ARM处理器上的CPU亲和性

我正在使用一些RaspberryPI板卡作为数据采集系统。 他们很好,他们周围有很多社区支持,但是他们真的很慢。 我正在考虑用三星Exynos处理器逐渐取代ODROID多核主板。

我有一些使用taskset设置我的服务器的CPU亲和力的经验,因为我总是运行按定义单线程的Node.js应用程序。

现在,是否有可能在ARM板上做到这一点? 我不明白为什么它不会在理论上,但我怀疑它将如何工作。

有没有人有这种黑客的经验? 此外,我将不胜感激有关ARM CPU的任何意见,以及它们如何与x86不同。

是的,这是可能的。
taskset是一个操作系统级别的函数:不pipe你使用什么样的CPU架构(在合理的范围内),你只是告诉内核哪里可以,哪些地方不能运行。

ARM和x86之间的差异在很大程度上是不重要的,所以我不会详细地介绍它们(尽pipe你应该意识到它们及其对你的特定用例的影响 – 这是一个针对你的研究项目)你的空闲时间)。


不,你不应该这样做。
不要试图超越智能调度程序。
调度程序比你想象的更聪明。
在大多数情况下,调度程序比你更聪明。

调度程序是由完全理解操作系统内部的人devise的。 这些人有很多优化系统的实际经验,他们已经将这些经验(不less血汗,眼泪和亵渎)倾注到操作系统的调度algorithm中。

正如David所说 ,使用taskset或其他工具手动强制关联(或任何其他调度程序设置)可能是有意义的, 当且仅当您知道您的情况是“特殊” 的事实 ,并且调度程序如果留下来将做错误的事情它自己的设备。
这些手术工具是为非常特定的,非常狭窄的环境而devise的。
错误地使用这些工具会导致人员伤亡

因为我总是运行按定义单线程的Node.js应用程序

erm ….不确定的taskset真的是理想的解决scheme。 当然,保持与同一个l2caching相关的任务是有好处的 – 如果你使用的是CFS,那么为sched_migration_cost设置一个更高的值可能更合适。

AFAIK应该没有区别ARM和英特尔芯片的taskset(或其他调度的东西,除了超线程明显的例外)。 但是我还没有玩过多核ARM。