V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sinx003
V2EX  ›  Windows

请教一个 winodows 下 cpu 核心配分问题

  •  
  •   sinx003 · 2024-05-16 10:45:15 +08:00 · 2288 次点击
    这是一个创建于 476 天前的主题,其中的信息可能已经有所发展或是发生改变。

    windos10 环境下,有一颗 10 核心 20 线程的 cpu.为什么每次启动不同任务的时候,核心 1 总是负载很高?
    注意哈,我的意思是我启动不同的任务的时候,他总是搞不犹豫的选择核心 1!
    正常来说,核心 1 上已经有负载了,不应该到负载低的核心上吗?
    再不济,你随机选一个核心也行啊?为什么非得选择核心 1 呢?

    第 1 条附言  ·  2024-05-16 11:25:54 +08:00
    有什么那么一个程序,可以让我每次启动的时候,随机分配一个核心跑?
    24 条回复    2024-05-16 18:37:23 +08:00
    HojiOShi
        1
    HojiOShi  
       2024-05-16 10:51:59 +08:00
    又是一个英特尔大小核受害者。
    wheat0r
        2
    wheat0r  
       2024-05-16 10:53:28 +08:00
    毕竟 there is always a core 0
    7lQM1uTy635LOmbu
        3
    7lQM1uTy635LOmbu  
       2024-05-16 11:07:26 +08:00
    @HojiOShi 10 核 20 线程没有大小核的吧
    tool2dx
        4
    tool2dx  
       2024-05-16 11:13:12 +08:00
    大部分程序都是单双核跑的,你是怕把核心一累坏了?这倒是一个比较新的观点。

    确实应该随机分配的,只让核心一干活,也太不公平了。忙得忙死,闲得闲死。
    HojiOShi
        5
    HojiOShi  
       2024-05-16 11:17:42 +08:00
    @nevadax #3 看走眼了
    sinx003
        6
    sinx003  
    OP
       2024-05-16 11:21:21 +08:00
    @HojiOShi 志强 5e
    justplaymore
        7
    justplaymore  
       2024-05-16 11:32:09 +08:00
    Process Lasso
    geekvcn
        8
    geekvcn  
       2024-05-16 11:34:48 +08:00 via Android
    Windows 默认 DPC ,ISR 都跑在核心 0 上
    augustheart
        9
    augustheart  
       2024-05-16 11:40:29 +08:00
    你的核心 1 指的是 cpu0 ?
    有没有可能,你启动任务的时候,操作系统本身还得干活呢?
    geekvcn
        10
    geekvcn  
       2024-05-16 11:41:23 +08:00 via Android
    如果你启动的程序不是启动器之类的还要启动主要程序,直接写一个 bat 批处理就能随机分配核心,所需指令 start /affinity 。bat 伪随机数怎么生成直接网上 copy 代码
    opengps
        11
    opengps  
       2024-05-16 11:50:41 +08:00
    有可能你开的程序只支持单核,比如老版本的 redis memcached 之类,也可能你写的程序压根不支持多程序导致集中在几个核心上
    jim9606
        12
    jim9606  
       2024-05-16 12:01:48 +08:00 via Android
    如果单个核没填满时都堆一个核心上,好像没什么问题,特别是如果这个核是被 CPPC 报告为优质核的情况。
    sinx003
        13
    sinx003  
    OP
       2024-05-16 13:35:51 +08:00
    @augustheart 负载高的是核心 1,cpu2.
    sinx003
        14
    sinx003  
    OP
       2024-05-16 13:36:54 +08:00
    @justplaymore 这个听起来不错,回去试试
    sinx003
        15
    sinx003  
    OP
       2024-05-16 13:40:46 +08:00
    @geekvcn 能详细解释`如果你启动的程序不是启动器之类的还要启动主要程序` 吗?我没有在 win 下面有太多的开发.假设我想启动 edge 这种线程较多的程序,他能不能实现把负载放在除核心 1 外的地方?
    sinx003
        16
    sinx003  
    OP
       2024-05-16 13:45:12 +08:00
    @jim9606 cppc 是针对 amd 平台的吗?首次接触,发现 amd 平台的资料?
    mohumohu
        17
    mohumohu  
       2024-05-16 15:07:59 +08:00
    我只是想单纯吐槽标题的 windows 多了个 o
    Rumble66
        18
    Rumble66  
       2024-05-16 16:01:51 +08:00
    Process Lasso 是软件级别的调度,实际上并不好用还要收费 windows 关于 cpu 的配置项非常多,但大多数都是隐藏的,比如通过配置可以使 win10 也支持大小核调度(实质就是任务优先级,长短任务分配的核心)
    R4rvZ6agNVWr56V0
        19
    R4rvZ6agNVWr56V0  
       2024-05-16 16:12:20 +08:00
    为啥纠结这种问题。
    Windows 使用复杂的算法来决定哪个进程或线程应该在哪个核心上运行,
    某些应用程序可能被设计为更倾向于使用特定的可用的核心,而不是随机选择。
    R4rvZ6agNVWr56V0
        20
    R4rvZ6agNVWr56V0  
       2024-05-16 16:13:37 +08:00
    一般来讲,使用 Windows API 亲和性函数 SetProcessAffinityMask 来将当前进程绑定到选定的核心上
    wy315700
        21
    wy315700  
       2024-05-16 16:15:28 +08:00
    当年芯片的调度规则是会指定一个体质最好的核心,在跑单核应用的时候尽可能把任务分配到这个核心上并且尽可能提高这个核心的频率
    R4rvZ6agNVWr56V0
        22
    R4rvZ6agNVWr56V0  
       2024-05-16 16:16:42 +08:00
    rojer12
        23
    rojer12  
       2024-05-16 16:57:28 +08:00
    一核有难,9 核围观,基操了
    shuax
        24
    shuax  
       2024-05-16 18:37:23 +08:00
    winodows 11 好像会均匀调度,不会让一个核心太累。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5640 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:43 · PVG 10:43 · LAX 19:43 · JFK 22:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.