在多核系统中,每个 CPU 都有自己的 Linux 内核吗?

在多核系统中,每个 CPU 都有自己的 Linux 内核吗?

我的意思是,在具有“n”个 CPU 的多核系统中,每个 CPU 是否都安装了自己的 Linux 内核,或者所有 CPU 是否都有相同内核映像的副本?

关于多核的另一个问题是内核跟踪。由于跟踪是在内核级别进行的,那么我应该对每个 CPU 分别进行跟踪,还是可以对所有 CPU 一起进行内核跟踪?

答案1

所有 CPU 共享相同的内存系统,并且只加载一个 Linux 副本。每个正在运行的进程都有自己的堆栈,但在单 CPU 系统上也是如此。

Strace 是通过 ptrace 实现的,我相信它可以在单个 PID 上运行,所以我认为这意味着它只会跟踪单个线程的执行。

答案2

您将获得一个内核映像,其中包含跨内核/CPU 执行的代码部分。这将根据内核开关/编译方式而有所不同。

相对于内核跟踪,您仍然会有一个跟踪!

请记住,同一个单一内核将由多个 CPU/核心执行......

希望这有帮助,谨致问候,汤姆。

答案3

谢谢大家的回答。我自己做了一些研究,发现在多核系统中两者都是可能的。SMP 多核系统将为所有核心配备一个 Linux 内核,而在 AMP 多核系统中,每个核心都有自己的内核。通常,一些多核将有几个核心用于 AMP 执行实时关键任务,其余核心将是 SMP 执行非关键和正常任务。

我问的问题是关于内核跟踪的。如今,大多数内核都带有内置的 kprobe,可让内核开发人员获取有关内核性能的信息。我想,第一个问题的答案也解决了这个问题。在 SMP 中,将生成单个内核跟踪,而在 AMP 中,将生成与 CPU 数量一样多的跟踪。

AMP 代表非对称多处理,SMP 代表对称多处理

相关内容