【问题标题】:How to reserve a core on a multi core system completely?如何在多核系统上完全预留一个核?
【发布时间】:2012-08-10 10:05:01
【问题描述】:

我想为我的应用程序保留一个内核。在我的搜索中,我可以找到 dwProcessAffinityMask 来限制我的进程在我想要的内核上运行。但这并不 防止其他进程的线程也运行在“我的”核心上。

有没有办法禁止除我的进程/线程之外的任何(系统范围的)进程/线程使用特定的核心/处理器?

即使可以设置 SystemAffinityMask,这也无济于事,因为这也会禁止我的进程/线程在该处理器/内核上执行。

【问题讨论】:

  • 你想要达到什么目的?如果您只想要 Hard-RealTime,不妨看看实时系统或附加组件(例如 Xenomai)。
  • 好提示!但是我这里故意放了 windows 标签。
  • 不确定这有多大可能。调度程序将决定哪个线程在哪个内核上运行。除非您可以操纵它,否则看不到您如何实现这一目标。
  • @Arno 所以我会推荐一些现成的 Windows RT 解决方案。除了处理器时间之外,还有其他方面与此相关。
  • 在您的应用程序用户手册中,输入“此应用程序必须在专用的计算机上运行”。或者,如果您想要“终极响应能力”,请不要在桌面操作系统上运行它。其他人也表示怀疑,您的建议实际上会对任何人的“响应能力”有所帮助。如果您设法将一个内核“专用”给您的应用程序,则 I/O 中断、上下驱动程序、内核线程池等将不得不在其他内核上运行,因此对所有 I/O 强制执行处理器间通信。我会将您的请求视为可能会失败的“最后一次喘息”优化尝试。

标签: windows multithreading process


【解决方案1】:

如果您的目标是确保您的流程能够及时运行,只需使用SetPriorityClass 为您的流程设置一个高优先级(例如 HIGH_PRIORITY_CLASS)。除非系统正在运行其他同等高优先级的工作(在典型机器上很少),否则您的工作将在准备好执行时立即运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-15
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 2015-07-03
    相关资源
    最近更新 更多