操作系统需要在多核处理器的一个或多个物理核心上运行,对吗?是否可以识别哪些物理核心正在使用一段代码?
答案1
实际上,操作系统(内核)是机器上运行的每个进程的一部分。因此,实际上,并不是操作系统在一个核心上运行,而用户程序在其他核心上运行,而是用户进程在每个核心上运行,每次它们需要与操作系统交互时,它们都会发出系统调用,将控制权转移给操作系统在同一个核心上。
因此,内核在所有核心上运行,并且大多数操作系统都会告诉您内核使用每个核心的百分比,这实际上是对用户空间程序与内核交互的频率以及内核中断用户空间进程进行调度、硬件管理等的频率的衡量。
答案2
这取决于您使用的操作系统。至少对于支持 的操作系统dtrace
,您当然可以测量每个核心的内核 CPU 负载。
mpstat
基于采样还可以报告每个核心 CPU 负载的详细统计信息。
除非使用专用集合/CPU 绑定/亲和性或类似技术,否则 CPU 负载的内核部分应在所有核心之间保持平衡。