加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

在Windows上固定处理器CPU隔离

发布时间:2020-12-13 22:25:47 所属栏目:Windows 来源:网络整理
导读:在我主要工作的 linux中,我们使用一种称为CPU隔离的技术,它可以有效地将进程锁定到处理器上,还可以防止处理器运行其他任何东西.我们的内核人员做了一些魔术来处理中断. 在Windows中,我发现最接近的是一个亲和概念,它似乎将进程/线程绑定到处理器.但它不能保
在我主要工作的 linux中,我们使用一种称为CPU隔离的技术,它可以有效地将进程锁定到处理器上,还可以防止处理器运行其他任何东西.我们的内核人员做了一些魔术来处理中断.

在Windows中,我发现最接近的是一个亲和概念,它似乎将进程/线程绑定到处理器.但它不能保证处理器仅运行该进程/线程意味着仍然可以存在上下文切换和其他抖动.

有没有办法在Windows上隔离CPU以确定半确定的运行时间?

解决方法

在用户模式下没有确切的方法. Windows主要试图阻止应用程序占用所有系统资源.但是你可能将大多数其他进程隔离到另一个核心/处理器,这样你的代码就可以运行在一个主要专用于它的核心上.

首先查看枚举过程中的at this code here on MSDN.除了您的枚举代码将指定PROCESS_SET_INFORMATION作为OpenProcess的标志.您可能需要使用admin privs运行的代码为未作为NT信誉运行的进程执行此操作.对于获得的每个进程句柄,调用SetProcessAffinityMask将进程设置为在除一个之外的所有核上运行.然后将您的进程设置为在从所有其他进程句柄中清除的保留核心上运行另一个进程.

这不会处理从启动和负载平衡到您尝试运行代码的核心的其他进程.

你的旅费可能会改变.如果这只是用于测试或专用于您的代码的机器,那么它可能会没问题.如果这是一个与所有其他应用程序一起运行的商业应用程序,客户在运行代码时会看到所有其他应用程序和服务都非常失望.小心翼翼.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读