You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows C++控制台程序Win11下仅用Efficient-cores,如何启用Performance-cores?

解决Windows 11下12代酷睿处理器P核闲置问题的方案

一、API层面的核心绑定调整

12代酷睿的混合架构(P核+E核)在Windows 11下的处理器分组、核心标识逻辑有变化,需通过API动态识别核心类型并调整线程亲和性:

1. 检测混合架构CPU

先通过IsProcessorFeaturePresent判断当前CPU是否为混合架构:

if (IsProcessorFeaturePresent(PF_GPP_HYBRID_CPU)) {
    // 处理混合架构逻辑
}

2. 识别性能核(P核)的亲和性掩码

调用GetLogicalProcessorInformationEx遍历所有核心,筛选出标记为PROCESSOR_CORE_FLAG_PERFORMANCE_CORE的核心,获取其分组和亲和性掩码:

#include <windows.h>
#include <vector>

bool GetPerformanceCoreGroupAffinity(GROUP_AFFINITY* pGroupAffinity) {
    if (!IsProcessorFeaturePresent(PF_GPP_HYBRID_CPU)) return false;

    DWORD bufferSize = 0;
    GetLogicalProcessorInformationEx(RelationProcessorCore, nullptr, &bufferSize);
    std::vector<BYTE> buffer(bufferSize);
    if (!GetLogicalProcessorInformationEx(RelationProcessorCore, reinterpret_cast<SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX*>(buffer.data()), &bufferSize)) {
        return false;
    }

    SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX* info = reinterpret_cast<SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX*>(buffer.data());
    *pGroupAffinity = {0};

    while (bufferSize > 0) {
        if (info->ProcessorCore.CoreFlags & PROCESSOR_CORE_FLAG_PERFORMANCE_CORE) {
            // 合并同一分组下所有P核的亲和性掩码
            pGroupAffinity->Group = info->ProcessorCore.GroupMask[0].Group;
            pGroupAffinity->Mask |= info->ProcessorCore.GroupMask[0].Mask;
        }
        bufferSize -= info->Size;
        info = reinterpret_cast<SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX*>(reinterpret_cast<BYTE*>(info) + info->Size);
    }
    return pGroupAffinity->Mask != 0;
}

3. 绑定线程到P核

获取到P核的亲和性掩码后,调用SetThreadGroupAffinity将工作线程绑定到P核:

void BindThreadToPerformanceCores(HANDLE hThread) {
    GROUP_AFFINITY groupAffinity = {0};
    if (GetPerformanceCoreGroupAffinity(&groupAffinity)) {
        SetThreadGroupAffinity(hThread, &groupAffinity, nullptr);
    }
}

注:需确保程序以管理员权限运行,否则亲和性设置可能失败。

二、系统层面的设置调整

  • 手动设置进程相关性:打开任务管理器→详细信息→找到你的进程→右键→设置相关性,手动勾选所有P核(12代i7-12700K的P核通常对应编号靠前的逻辑核心,可通过核心标识区分)。
  • 调整进程优先级:将进程优先级设为“高”或“实时”,让系统优先调度P核资源给该程序。
  • 电源模式设置:切换到“高性能”电源计划,避免系统因节能策略将任务分配到E核。

三、旧代码适配检查

检查你之前实现的processorGroups相关代码,若存在硬编码分组编号的逻辑,需改为动态检测分组内的核心类型,避免误绑定到E核所在分组。

内容的提问来源于stack exchange,提问作者RED SOFT ADAIR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 13:16:02