什么可以中断固定到核心的线程的执行?

什么可以中断固定到核心的线程的执行?

我进行低延迟应用程序开发,我使用 isocpu 并设置线程关联性来减少(排除?)在我的关键线程期间进行上下文切换。但是,我不确定我的关键线程仍然可能受到哪些其他类型的中断?

虽然我很了解 x86 CPU 架构,但我对中断/上下文切换、各种类型等了解不多。使用时getrusage显示自主性不自觉的上下文切换?

还使用了内核旁路,因此网卡将数据直接写入用户级缓冲区 - 这可能会排除此问题的一些可能答案。

答案1

检查/proc/interrupts每个 CPU 处理哪些硬件。除非将所有进程和所有中断配置为使用其他 CPU 内核,否则系统会尝试将所有任务和中断平衡到所有 CPU。此外,您的主板固件可能会实现一些“硬件”SMI 中断可能会在没有操作系统控制的情况下中断至少一些 CPU 内核

当您的程序向操作系统请求某些内容(例如open()malloc()/ brk()sleep())时,会发生自愿上下文切换,而当您的程序连续使用 CPU 但 CPU 想要中断该进程以在其间运行另一个进程(硬件中断处理程序或另一个用户模式任务)。

可以中断实时优先级运行的进程的列表:

  • 在同一核心上运行的具有更高实时优先级的其他实时任务。

  • 中断处理程序绑定到同一个 CPU 内核。

  • 国家管理研究所

  • 星米

如果您的任务作为普通用户模式进程运行,则在同一 CPU 上运行的任何其他进程(包括优先级较低的进程)都可能会中断您的进程。

相关内容