尝试在 Windows PC 上禁用处理器空闲状态(C 状态)

2024-02-03

我需要防止处理器进入空闲状态(非C0 C状态)。诚然,我对处理器 C 和 P 状态了解不多,所以请耐心等待。 我们使用来自第三方供应商的相机,该相机偶尔会提供损坏的帧。供应商已确定,当 CPU 进入空闲状态时,它会干扰通过火线传输帧。 为了确认这一点,我在 Windows 7 PC 上使用了以下代码,实际上,禁用空闲状态解决了该问题。

   //WIN7
const DWORD DISABLED = 1;
const DWORD ENABLED = 0;
GUID *scheme;
PowerGetActiveScheme(NULL, &scheme);
PowerWriteACValueIndex(NULL, scheme, &GUID_PROCESSOR_SETTINGS_SUBGROUP, &GUID_PROCESSOR_IDLE_DISABLE, DISABLED);
PowerSetActiveScheme(NULL, scheme);

如果我运行我的应用程序并打开 Windows permon 并添加 %C1 时间、%C2 时间和 %C3 时间,我会发现当我禁用这些状态时它们全部为零,当我启用它们时我看到相当多的时间花费在C3 状态(这是在 Dell Precision T3500 四核 PC 上)。

我还需要在 XP 上执行此操作,但这些调用在 XP 上不可用。所以我尝试执行以下操作来禁用空闲状态

  unsigned int ActPwrSch; 
DWORD currPolicy,newPolicy, curr1Policy,curr2Policy, new1Policy, new2Policy;
MACHINE_PROCESSOR_POWER_POLICY Policy; 
if(GetActivePwrScheme(&ActPwrSch)) 
{ 
    if(ReadProcessorPwrScheme(ActPwrSch,&Policy)) 
    { 
        printf("Read Power Scheme:\n"); 
        //if(Policy.ProcessorPolicyAc.DisableCStates!=0) 
        currPolicy = Policy.ProcessorPolicyAc.Policy[0].AllowPromotion;
        curr1Policy = Policy.ProcessorPolicyAc.Policy[1].AllowPromotion;
        curr2Policy = Policy.ProcessorPolicyAc.Policy[2].AllowPromotion;
        Policy.ProcessorPolicyAc.Policy[0].AllowPromotion = 0;
        Policy.ProcessorPolicyAc.Policy[1].AllowPromotion = 0;
        Policy.ProcessorPolicyAc.Policy[2].AllowPromotion = 0;
        newPolicy = Policy.ProcessorPolicyAc.Policy[0].AllowPromotion;

        if(WriteProcessorPwrScheme(ActPwrSch,&Policy)) 
        { 
            printf("WriteProcessorPwrScheme succeed\n"); 
            if(SetActivePwrScheme(ActPwrSch,0,0)) 
            { 
                printf("SetActivePwrScheme succeed!!\n");
            } 
        }

    } 

但是,当我运行应用程序时,我仍然看到处理器处于 C1 状态(通过查看 perfmon 中的相同计数器)。我仍然遇到图像损坏的问题。 XP PC 是单核 Dell optiplex PC。

有谁知道我如何防止进入 XP 上的任何 C1-C3 状态?正如我所说,我似乎是在 Windows 7 上完成的。


您可以使用 SetThreadExecutionState 函数,该函数使应用程序能够通知系统它正在使用。

编辑:经过一些研究和测试,我找到了一个解决方案,或者我想我做到了。您对于 Windows XP 的选择是正确的。如果您阅读 PROCESSOR_POWER_POLICY 结构的文档,您会发现您可以禁用每个冒犯您的 C 状态:

Policy[0].AllowPromotion = 0; // Disable's C1 (usually C1 won't cause problems, so you should leave it alone.)
Policy[1].AllowPromotion = 0; // Disable's C2
Policy[2].AllowPromotion = 0; // Disable's C3

在 Vista 和 Windows7 中,您不能使用此界面,而是必须执行以下操作:

GUID *scheme;
PowerGetActiveScheme(NULL, &scheme); 
PowerWriteACValueIndex(NULL, scheme, &GUID_PROCESSOR_SETTINGS_SUBGROUP,  &GUID_PROCESSOR_IDLE_DISABLE, 1); 
PowerSetActiveScheme(NULL, scheme);

我还没有找到在 Vista 和 Windows 7 上禁用单个 C 状态的方法。如果您需要一些示例代码,请给我发电子邮件,我可以帮助您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试在 Windows PC 上禁用处理器空闲状态(C 状态) 的相关文章

  • 如何使用 zlib 制作 .zip 文件

    我正在阅读zlib的文档 它相当详细 但我读到了这一行 输出数据将位于zlib格式 与 gzip 或zip formats http www zlib net zlib how html http www zlib net zlib how
  • 分段错误(核心转储)错误

    我的程序编译罚款 但在输入文件时出现 分段错误 核心转储 错误 我没有正确处理 ostream 吗 include
  • 为什么大多数平台上没有“aligned_realloc”?

    MSVC有自己的非标准函数 aligned malloc aligned realloc and aligned free C 17和C11引入了 std aligned alloc 其结果可以是de分配有free or realloc B
  • C# 正则表达式用于查找 中具有特定结尾的链接

    我需要一个正则表达式模式来查找字符串 带有 HTML 代码 中的链接 以获取文件结尾如 gif 或 png 的链接 示例字符串 a href site com folder picture png target blank picture
  • C++中delete和delete[]的区别[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的删除与删除 运算符 https stackoverflow com questions 2425728 delete vs delete operators in c 我写了一个包含两个指针的
  • 从 C 结构生成 C# 结构

    我有几十个 C 结构 我需要在 C 中使用它们 典型的 C 结构如下所示 typedef struct UM EVENT ULONG32 Id ULONG32 Orgin ULONG32 OperationType ULONG32 Size
  • 获取尚未实例化的类的函数句柄

    我对 C 相当陌生 我想做的事情可能看起来很复杂 首先 我想获取一些函数的句柄以便稍后执行它们 我知道我可以通过以下方式实现这一目标 List
  • 如何生成 appsettings..json 文件?

    我有一个 ASP NET Core 2 WebAPI 它将部署在以下环境中 INT QA STAGE 生产环境 基于上述 我需要有appsettings
  • TcpClient 在异步读取期间断开连接

    我有几个关于完成 tcp 连接的问题 客户端使用 Tcp 连接到我的服务器 在接受客户端后listener BeginAcceptTcpClient ConnectionEstabilishedCallback null 我开始阅读netw
  • 两种类型的回发事件

    1 我发现了两篇文章 每篇文章对两种类型的回发事件的分类都略有不同 一位资源说两种类型的回发事件是Changed事件 其中控件实现 IPostbackDataHandler 当数据在回发之间更改时触发 然后Raised事件 其中控件实现 I
  • libxml2 xmlChar * 到 std::wstring

    libxml2似乎将所有字符串存储在 UTF 8 中 如xmlChar xmlChar This is a basic byte in an UTF 8 encoded string It s unsigned allowing to pi
  • OpenCV 2.4.3 中的阴影去除

    我正在使用 OpenCV 2 4 3 最新版本 使用内置的视频流检测前景GMG http docs opencv org modules gpu doc video html highlight gmg gpu 3a 3aGMG GPU算法
  • 分配器感知容器和propagate_on_container_swap

    The std allocator traits模板定义了一些常量 例如propagate on container copy move assign让其他容器知道它们是否应该在复制或移动操作期间复制第二个容器的分配器 我们还有propag
  • C# 中的常量和只读? [复制]

    这个问题在这里已经有答案了 可能的重复 const 和 readonly 之间有什么区别 https stackoverflow com questions 55984 what is the difference between cons
  • 二叉树中的 BFS

    我正在尝试编写二叉树中广度优先搜索的代码 我已将所有数据存储在队列中 但我不知道如何访问所有节点并消耗它们的所有子节点 这是我的 C 代码 void breadthFirstSearch btree bt queue q if bt NUL
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet
  • 使用 HTMLAgilityPack 从节点的子节点中选择所有

    我有以下代码用于获取 html 页面 将网址设置为绝对 然后将链接设置为 rel nofollow 并在新窗口 选项卡中打开 我的问题是关于将属性添加到 a s string url http www mysite com string s
  • 在 Xamarin 中获取 OutOfMemoryException

    java lang OutOfMemoryError 考虑增加 JavaMaximumHeapSize Java 执行时内存不足 java exe 我的 Visualstudio Xamarin 项目出现内存不足异常 请帮助我如何解决此问题
  • C#中为线程指定特殊的cpu

    我有 2 个线程 我想告诉其中一个在第一个 cpu 上运行 第二个在第二个 cpu 上运行 例如在具有两个 cpu 的机器中 我怎样才能做到这一点 这是我的代码 UCI UCIMain new UCI Thread UCIThread ne

随机推荐

  • 在 Visual Studio IDE 中查看与类关联的控件列表

    我用的是VS的表单设计器 我放置了一个label on my form 然后删除它的文本 目前 我无法找到该标签 如何查看与给定类关联的控件列表 查看 gt 其他窗口 gt 文档大纲
  • 使用 ajax 请求中的 JSON 响应更新 JQuery 进度条

    All 我有一个 AJAX 请求 它向服务器发出 JSON 请求 以获取同步状态 JSON 请求和响应如下 我想显示 JQuery UI 进度条并根据 getStatus JSON 响应中返回的百分比更新进度条状态 如果状态为 insync
  • SQLite CASE/WHEN 语句

    这是我的 CASE WHEN 声明 但正如你所看到的 我收到了这个错误 我不知道为什么 我想做的就是检测 MAJKA 字段中的某些内容何时发生更改 因此 如果 MAJKA 列的某些其他字段为空 请不要触摸它们 而是将值更改为 MAJKA 列
  • 从哈希数组中收集值

    我有以下格式的数据结构 data hash price 1 count 3 price 2 count 3 price 3 count 3 有没有一种有效的方法来获取值 price作为一个数组 1 2 3 首先 如果您使用 ruby arr
  • Laravel 5.4 中的混合/版本图像?

    我想对一组图像使用混合 首先我复制它们 mix copy resources images public images 然后版本 mix version 上面的内容对图像没有任何作用 我也尝试过指定路径 mix version public
  • 在 android.webkit.CookieManager 中存储会话 cookie

    我使用 Volley 库来执行我的应用程序的请求 现在我确实需要按照以下顺序执行一些操作 使用 Volley 库的 POST 请求 我收到带有会话 cookie 的 204 响应 我需要将该 cookie 设置为与 WebView 一起使用
  • 如果使用回形针 gem on Rails 没有上传图片,如何设置默认图片?

    下面是我的代码 class Profile lt ActiveRecord Base belongs to user validates first name presence true validates last name presen
  • 使 git diff 正确显示 UTF8 编码的字符

    我有一个文件 其中包含使用 UTF8 编码的瑞典语字符 If I cat文件显示正常 但如果我这样做git diff特殊字符被打印 例如 Example git diff output name Magler
  • 如何在单个域上为 React app + Express 设置 k8s 入口?

    我有一个使用 React 构建的前端应用程序和在 Nodejs 上构建的后端应用程序 两者都有一个单独的 Docker 镜像 因此在 k8s gce 上有一个单独的部署 每个部署都有对应的k8s服务 比方说fe serice and be
  • 验证嵌套形式中子对象的唯一性无法正常工作

    我对 Rails 中的范围唯一性验证有疑问 如果我尝试直接在子模型中创建具有不想重复的同一组属性的新对象 则效果很好 但是当我尝试创建具有两个不唯一的子对象的父对象时 验证没有被触发 背景 我有一个 Rails 3 2 中的应用程序 其视图
  • 连接3个表并检索所有表中的所有记录

    我正在连接三个表 执行完整的外部连接 以便可以从所有表中检索所有记录 我面临的问题是我加入表的顺序 表格信息 替代文本 http img235 imageshack us img235 7980 tableinfoow1 png http
  • 更改 csv 中的列顺序(python)

    我制作了一个脚本 它读取给定的输入文件 csv 以某种方式操作数据并写入输出文件 csv 就我而言 我给定的输入文件如下所示 sku article name 1 MyArticle 对于我的输出文件 我需要重新排列这些列 还有更多 但我认
  • PHP的password_hash函数值对于每个字符串都不相同

    我尝试使用散列用户密码密码哈希 PHP函数 但是 它的函数是工作散列 而不是常量 第四次测试结果 1 2y 12 SRmipqM7AsYkx3Xc8QGHNex69rGXeVyWGTYrh9T8sh1cP3UrdjfQi 2 2y 12 z
  • 我需要带有称重选项的随机算法

    我的 NET 项目中有一个要求 我需要从集合中选择一个项目 每个项目都有一个分配给它的权重 1 到 10 之间的整数 我需要一个随机生成器来考虑这个权重 即权重越高 选择对象的机会就越大 快速复制 粘贴 C 代码 以防有人偶然发现这一点 c
  • Google Appengine Ndb GQL 查询最大限制是多少?

    我正在环顾四周 以便得到答案 从 Google AppEngine 上的 Ndb 上的 GQL 查询中可以得到的最大结果限制是多少 我正在使用带有游标的实现 但如果我一次检索它们将会快得多 这取决于很多因素 例如实体的大小以及需要在索引中查
  • 同步语句中的wait()、notify()和notifyAll()

    尝试调用时出现以下错误notifyAll 在同步语句中 在同步上下文之外调用 Object notify 例子 final List list new ArrayList synchronized list invoked notifyAl
  • 是否有适用于 IE6 和 7 的 W3C 兼容 hack?

    IE6 和 7 中是否有有效的 W3C 兼容性破解方法 我相信使用 hack 时存在 W3C 不兼容性 例如 使用以下 CSS 代码 如本文选项 2 中的建议 http webdesignerwall com tutorials css s
  • 使用 Jest 和 React 测试库测试 `img.onLoad`/`img.onError`

    今天下午 我们的团队在使用 Jest 为我们的项目编写 React 测试库 RTL 测试时遇到了一个场景
  • 反序列化 JSON 时出错无法将 JSON 对象反序列化为“System.String”类型

    我有以下 JSON workspace name Dallas dataStores http 8080 geoserver rest workspaces Dallas datastores json coverageStores htt
  • 尝试在 Windows PC 上禁用处理器空闲状态(C 状态)

    我需要防止处理器进入空闲状态 非C0 C状态 诚然 我对处理器 C 和 P 状态了解不多 所以请耐心等待 我们使用来自第三方供应商的相机 该相机偶尔会提供损坏的帧 供应商已确定 当 CPU 进入空闲状态时 它会干扰通过火线传输帧 为了确认这