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

有什么那么一个程序,可以让我每次启动的时候,随机分配一个核心跑?

又是一个英特尔大小核受害者。

毕竟 there is always a core 0

10 核 20 线程没有大小核的吧

大部分程序都是单双核跑的,你是怕把核心一累坏了?这倒是一个比较新的观点。确实应该随机分配的,只让核心一干活,也太不公平了。忙得忙死,闲得闲死。

#3 看走眼了

志强 5e

Process Lasso

Windows 默认 DPC ,ISR 都跑在核心 0 上

你的核心 1 指的是 cpu0 ?有没有可能,你启动任务的时候,操作系统本身还得干活呢?

如果你启动的程序不是启动器之类的还要启动主要程序,直接写一个 bat 批处理就能随机分配核心,所需指令 start /affinity 。bat 伪随机数怎么生成直接网上 copy 代码

有可能你开的程序只支持单核,比如老版本的 redis memcached 之类,也可能你写的程序压根不支持多程序导致集中在几个核心上

如果单个核没填满时都堆一个核心上,好像没什么问题,特别是如果这个核是被 CPPC 报告为优质核的情况。

负载高的是核心 1,cpu2.

这个听起来不错,回去试试

能详细解释如果你启动的程序不是启动器之类的还要启动主要程序 吗?我没有在 win 下面有太多的开发.假设我想启动 edge 这种线程较多的程序,他能不能实现把负载放在除核心 1 外的地方?

cppc 是针对 amd 平台的吗?首次接触,发现 amd 平台的资料?

我只是想单纯吐槽标题的 windows 多了个 o

Process Lasso 是软件级别的调度,实际上并不好用还要收费 windows 关于 cpu 的配置项非常多,但大多数都是隐藏的,比如通过配置可以使 win10 也支持大小核调度(实质就是任务优先级,长短任务分配的核心)

为啥纠结这种问题。Windows 使用复杂的算法来决定哪个进程或线程应该在哪个核心上运行,某些应用程序可能被设计为更倾向于使用特定的可用的核心,而不是随机选择。

一般来讲,使用 Windows API 亲和性函数 SetProcessAffinityMask 来将当前进程绑定到选定的核心上

当年芯片的调度规则是会指定一个体质最好的核心,在跑单核应用的时候尽可能把任务分配到这个核心上并且尽可能提高这个核心的频率

命令行:START /AFFINITY 1 "C:\Path\To\YourProgram.exe"Ref: stackoverflow.com/questions/7759948/set-affinity-with-start-affinity-command-on-windows-7

一核有难,9 核围观,基操了

winodows 11 好像会均匀调度,不会让一个核心太累。