当前位置:网站首页>解决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可以调用,所以暂时先不考虑。
边栏推荐
- Openwrt source code generation image
- QT模拟鼠标事件,实现点击双击移动拖拽等
- Acwing - game 55 of the week
- Codeforces Round #799 (Div. 4)A~H
- Local visualization tools are connected to redis of Alibaba cloud CentOS server
- 1323. Maximum number of 6 and 9
- Educational Codeforces Round 130 (Rated for Div. 2)A~C
- Codeforces Round #801 (Div. 2)A~C
- Openwrt build Hello ipk
- Advancedinstaller installation package custom action open file
猜你喜欢
2027. Minimum number of operations to convert strings
VMware Tools和open-vm-tools的安装与使用:解决虚拟机不全屏和无法传输文件的问题
Write web games in C language
Maximum product (greedy)
C language must memorize code Encyclopedia
QWidget代码设置样式表探讨
Radar equipment (greedy)
pytorch提取骨架(可微)
Problem - 922D、Robot Vacuum Cleaner - Codeforces
The concept of C language array
随机推荐
Radar equipment (greedy)
Raspberry pie 4B installation opencv3.4.0
875. Leetcode, a banana lover
Base dice (dynamic programming + matrix fast power)
力扣——第298场周赛
Socket communication
分享一个在树莓派运行dash应用的实例。
Generate random password / verification code
Problem - 1646C. Factorials and Powers of Two - Codeforces
VMware Tools和open-vm-tools的安装与使用:解决虚拟机不全屏和无法传输文件的问题
Codeforces Round #800 (Div. 2)AC
Data storage in memory & loading into memory to make the program run
Suffix expression (greed + thinking)
Luogu P1102 A-B number pair (dichotomy, map, double pointer)
Hbuilder X格式化快捷键设置
Opencv learning log 29 -- gamma correction
原生js实现全选和反选的功能 --冯浩的博客
生成随机密码/验证码
Problem - 1646C. Factorials and Powers of Two - Codeforces
Pull branch failed, fatal: 'origin/xxx' is not a commit and a branch 'xxx' cannot be created from it