我在一定程度上了解多线程和任务,但知道在操作系统之外,大多数 Windows 应用程序仅限于使用平均最大值的 1/N CPU。利用率。
这是双核的 50%,4 个 CPU 的 25% 和所有 8 个 CPU 的 12.5%。如果使用 Procexp.exe 取消分配 CPU 或选择偶数或奇数 CPU,这不会改变结果。
我的问题
有什么方法可以将利用率提高到超出此操作系统限制的限制。我理解如果一个人对一个应用程序施加 100% 的压力。操作系统可能会在预期或要求的超时期限内从无响应的硬件 I/O 蓝屏,但即使是 50% 或 75% 也会改善我的结果。
然而,在执行大型任务时,操作系统中的 explorer.exe 等有时可以执行 50% 或更多(?)。
- 通常 CPU 98~99.5% 空闲,只需打开浏览器和 10 个标签(勇敢)
我在 LibreOffice SCALC.exe 上使用带有 16GB RAM 的 Win7 i7-4770S Haswell 3.1GHz 和一个包含 150 万个 CV19 美国数据单元格的电子表格,并进行了搜索/替换 ' 文本前缀以尝试将文本转换为每天的单元格编号日期(从文本到值的一些选项)并且它仍在运行(是的)并且显然我使用了错误的方法。
如果无法更改操作系统利用率,那么我是否应该重写这个问题,将 400 个文本条目转换为日期 '1\20\2020 的值以重新格式化为我的偏好。
- 此文本文件是从 JHU CV19 美国县每日死亡率累积总数的 GitHub 存储库下载的,并使用文本到列的转换导入 SCALC。
SCALC 仍在运行!” ,根据使用 11 个线程的 PERFMON,为 12.5%。
问题始于在 150 万个单元格电子表格中搜索和替换 1 个字符。我选择了“相似性选项”,这是一个错误,但问题不在于 Excel 或 Open Office Apps,许多应用程序是多线程的,但平均限制为 1/N CPU,无法更改。我可以用图像证明这一点,但你们中的一些人会知道这是真的。
其他人不明白这个问题。是的,可以编写或让 Windows 来执行此操作,但不是罐装应用程序。
示例 1 大文件进程的简单启动恢复仅需几秒钟,并达到 20% 以上的峰值。它可以在一秒钟内达到平均超过 12.5% 的峰值,但我认为在内存吞吐量限制时不会持续。(所以我想没有什么可以改善这一点?)
在这里,在 150 万个单元格上搜索将 0 替换为 0 在我截取屏幕截图之前,平均准确率为 12.5%。
这里几乎正好有 1/N 或 12.5% 的 CPU 工作负载专用于具有许多线程的 1 个应用程序。
我可以使用这种架构在 Windows 下的许多其他应用程序上复制这个测试。那么它是架构 - 内存缓存总线有限和任何修复吗?
正如其他人在此论坛上所写,1/N CPU 的有限或 12.50 %
这就是证明。
更多关于多线程 MS App i=仅使用 1/N CPU % 平均 MAX 的证明
更新
使用 QUAttro Pro 安装 WordPerfect 2020 并运行完全相同的多线程进程并在所有 8 个 CPU 上获得完全相同的结果 MAX CPU USE = 1/8 = 12.5%
示例 #4
- Mark Russinovich 的进程资源管理器(又名 PROCMON.exe)再次使用了所有 CPU 但总共只有 1/N 个 CPU 或 12.5% 的多线程进程。它独立于使用少量资源的所有其他进程。
我怀疑这是马克在这里编写多线程的能力。:)(MS研究员)