当前位置:网站首页>解决Intel12代酷睿CPU单线程调度问题(二)
解决Intel12代酷睿CPU单线程调度问题(二)
2022-07-06 09:29:00 【若苗瞬】
(一)前情回顾
1.1 十二代酷睿大小核和电源模式
参考《解决Intel12代酷睿CPU【小核载满,大核围观】的问题(WIN11)》。
主要问题是即便在Win11下,多线程程序会几乎都运行在小核上,大核空闲,导致效率很低。
解决办法是【电源模式】->【最佳性能】。
1.2 单线程程序问题
参考《解决Intel12代酷睿CPU单线程只给小核运行的问题》。
主要问题是即便设置了最佳性能,自己开发的早期单线程程序,还是会运行在小核上。
当时偶然发现挂一个监控程序,可以尽量的使用到大核。虽然不太理解也是这么做的。
(二)设置优先级(priority)
在上面问题的讨论中,有同学提到可以测试一下设置进程优先级,以及进程相关性。
如下图所示,这两项我们可以在【任务管理器】中,进程【详细信息】页右键菜单中进行设置。
经过测试,优先级挺有效,不再需要挂监控。
将进程优先级设置为【高】以后,测试了之前的一个耗时较长的单线程程序。
竟然比关闭小核还快100秒,如下图。
程序 | 8P + 0E | 8P8E性能 | 8P8E挂监控 | 8P8E高优先级 | 单位 |
---|---|---|---|---|---|
另一个单线程 | 1059 | 1367 | 1050 | 940 | 秒 |
而且设置优先级,是可以在自己程序中进行的。
通过CreateProcess()
加入HIGH_PRIORITY_CLASS
参数控制创建进程的优先级。
也可以SetThreadPriority()
在创建后设置优先级。
(三)设置相关性(affinity)
上面菜单中,优先级的下面一项就是相关性。
意思就是设置这个进程用哪些CPU逻辑处理器。
默认是都用,全选的。
测试中发现将最后8个小核心取消勾选后,确实也只会用大核了。
但问题是这个相关性设置,程序代码似乎无法实现。
稍微查了一下,除了上面鼠标点,似乎只可以通过下面的方式设置相关性:
- 通过批处理命令启动程序。
- 通过快捷方式启动程序。
- 通过第三方软件比如
Process Lasso
设置。
前面两种的命令格式:start /affinity 0x? app.exe
0x?
是按位设置用哪些逻辑CPU。app.exe
就是你想启动的程序。
(四)解决
我这里旧的单线程又很耗时的程序很少。
所以只需要在调度平台中,对这些程序【设置高优先级】就解决了效率问题。
至于【设置相关性】,怎么设置和不同CPU核心数量有关,又没有API可以调用,所以暂时先不考虑。
边栏推荐
- 新手必会的静态站点生成器——Gridsome
- 树莓派4B64位系统安装miniconda(折腾了几天终于解决)
- TCP's three handshakes and four waves
- Pull branch failed, fatal: 'origin/xxx' is not a commit and a branch 'xxx' cannot be created from it
- E. Breaking the Wall
- 2078. Two houses with different colors and the farthest distance
- Luogu P1102 A-B number pair (dichotomy, map, double pointer)
- 875. 爱吃香蕉的珂珂 - 力扣(LeetCode)
- Codeforces - 1526C1&&C2 - Potions
- 力扣——第298场周赛
猜你喜欢
随机推荐
Raspberry pie csi/usb camera uses mjpg to realize web camera monitoring
Programmers, what are your skills in code writing?
It is forbidden to trigger onchange in antd upload beforeupload
Differential (one-dimensional, two-dimensional, three-dimensional) Blue Bridge Cup three body attack
QT模拟鼠标事件,实现点击双击移动拖拽等
力扣:第81场双周赛
(POJ - 3579) median (two points)
Opencv learning log 24 -- Hough transform 2 (maximum interval and minimum length can be limited)
双向链表—全部操作
(POJ - 3685) matrix (two sets and two parts)
Codeforces round 797 (Div. 3) no f
Opencv learning log 27 -- chip positioning
Flask框架配置loguru日志库
原生js实现全选和反选的功能 --冯浩的博客
VMware Tools和open-vm-tools的安装与使用:解决虚拟机不全屏和无法传输文件的问题
Some problems encountered in installing pytorch in windows11 CONDA
(lightoj - 1323) billiard balls (thinking)
Opencv learning log 26 -- detect circular holes and mark them
顺丰科技智慧物流校园技术挑战赛(无t4)
Effet d'utilisation, déclenché lorsque les composants de la fonction sont montés et déchargés