windos10 环境下,有一颗 10 核心 20 线程的 cpu.为什么每次启动不同任务的时候,核心 1 总是负载很高?
注意哈,我的意思是我启动不同的任务的时候,他总是搞不犹豫的选择核心 1!
正常来说,核心 1 上已经有负载了,不应该到负载低的核心上吗?
再不济,你随机选一个核心也行啊?为什么非得选择核心 1 呢?
1
HojiOShi 224 天前
又是一个英特尔大小核受害者。
|
2
wheat0r 224 天前
毕竟 there is always a core 0
|
3
7lQM1uTy635LOmbu 224 天前
@HojiOShi 10 核 20 线程没有大小核的吧
|
4
tool2dx 224 天前
大部分程序都是单双核跑的,你是怕把核心一累坏了?这倒是一个比较新的观点。
确实应该随机分配的,只让核心一干活,也太不公平了。忙得忙死,闲得闲死。 |
7
justplaymore 224 天前
Process Lasso
|
8
geekvcn 224 天前 via Android
Windows 默认 DPC ,ISR 都跑在核心 0 上
|
9
augustheart 224 天前
你的核心 1 指的是 cpu0 ?
有没有可能,你启动任务的时候,操作系统本身还得干活呢? |
10
geekvcn 224 天前 via Android
如果你启动的程序不是启动器之类的还要启动主要程序,直接写一个 bat 批处理就能随机分配核心,所需指令 start /affinity 。bat 伪随机数怎么生成直接网上 copy 代码
|
11
opengps 224 天前
有可能你开的程序只支持单核,比如老版本的 redis memcached 之类,也可能你写的程序压根不支持多程序导致集中在几个核心上
|
12
jim9606 224 天前 via Android
如果单个核没填满时都堆一个核心上,好像没什么问题,特别是如果这个核是被 CPPC 报告为优质核的情况。
|
13
sinx003 OP @augustheart 负载高的是核心 1,cpu2.
|
14
sinx003 OP @justplaymore 这个听起来不错,回去试试
|
15
sinx003 OP @geekvcn 能详细解释`如果你启动的程序不是启动器之类的还要启动主要程序` 吗?我没有在 win 下面有太多的开发.假设我想启动 edge 这种线程较多的程序,他能不能实现把负载放在除核心 1 外的地方?
|
17
mohumohu 224 天前
我只是想单纯吐槽标题的 windows 多了个 o
|
18
Rumble66 224 天前
Process Lasso 是软件级别的调度,实际上并不好用还要收费 windows 关于 cpu 的配置项非常多,但大多数都是隐藏的,比如通过配置可以使 win10 也支持大小核调度(实质就是任务优先级,长短任务分配的核心)
|
19
GeekGao 224 天前
为啥纠结这种问题。
Windows 使用复杂的算法来决定哪个进程或线程应该在哪个核心上运行, 某些应用程序可能被设计为更倾向于使用特定的可用的核心,而不是随机选择。 |
20
GeekGao 224 天前
一般来讲,使用 Windows API 亲和性函数 SetProcessAffinityMask 来将当前进程绑定到选定的核心上
|
21
wy315700 224 天前
当年芯片的调度规则是会指定一个体质最好的核心,在跑单核应用的时候尽可能把任务分配到这个核心上并且尽可能提高这个核心的频率
|
22
GeekGao 224 天前
命令行:START /AFFINITY 1 "C:\Path\To\YourProgram.exe"
Ref: https://stackoverflow.com/questions/7759948/set-affinity-with-start-affinity-command-on-windows-7 |
23
rojer12 224 天前
一核有难,9 核围观,基操了
|
24
shuax 224 天前
winodows 11 好像会均匀调度,不会让一个核心太累。
|