AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1632601
Accepted
Tony Stewart EE75
Tony Stewart EE75
Asked: 2021-03-12 09:07:31 +0800 CST2021-03-12 09:07:31 +0800 CST 2021-03-12 09:07:31 +0800 CST

对于任何 Win OS 上的大多数多线程应用程序,CPU 最大利用率限制为 1/N CPU:为什么?

  • 772

我在一定程度上了解多线程和任务,但知道在操作系统之外,大多数 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研究员)

在此处输入图像描述 在此处输入图像描述

我的 CPU 延迟排在首位 在此处输入图像描述

microsoft-excel cpu
  • 1 1 个回答
  • 109 Views

1 个回答

  • Voted
  1. Best Answer
    Mokubai
    2021-03-12T21:58:12+08:002021-03-12T21:58:12+08:00

    并非所有任务天生就能够被拆分为能够同时在 CPU 的每个内核上运行的任务。

    CPU 中的每个内核都是一个成熟的处理器。它能够维护一个硬件“线程”的执行状态信息。每个核心都有自己的缓存和数据处理,独立于其他所有核心。它们可能共享高速缓存和内存总线,但在其他方面它们是完全独立的。

    该线程大致转换为软件中所谓的线程。

    您看到的问题是在该软件中执行工作的特定任务本质上是单线程的。

    单个线程一次只能在一个内核上执行。在 8 核处理器上,这意味着单个线程最多可以使用处理器的 1/8,或者根据任务管理器的 12.5%。在 1/4 或 25% 的 4 核处理器上。

    一个程序可以有很多线程,但这些线程只能处理彼此完全不相关的事情。一个线程可能正在处理更新场景数据,另一个线程可能正在更新 GUI 等等。

    线程不能做的是在不相互通信的情况下同时处理完全相同的数据,这就是您所看到的限制。

    为了使用多个 CPU 内核,必须将正在完成的任务拆分并分配给多个线程。这种拆分是一个编程问题,由软件工程师来实施。任何给定任务是否是多线程的取决于该任务的复杂性以及它是否可以首先拆分

    • 该任务是否包含可以拆分为独立数据集以便由单独的线程处理的数据?
    • 是否编写了软件以将该特定任务拆分为单独的线程?

    如果数据完全依赖于以特定方式处理,那么它永远不会使用多个核心。

    如果数据可以拆分,但需要更多的工作来拆分和重新合并,那么软件工程师可能会认为这不值得,而是坚持使用一个线程/核心。

    如果可以拆分数据并且软件设计为这样做,那么您将看到超过 1 个内核在使用中。

    我知道 Excel 支持多核计算的许多任务,但它完全取决于彼此完全不依赖的数据。

    • 2

相关问题

  • 如何对整列使用 Excel 的 LENGTH 函数?

  • Excel 数组(2 个变量)

  • 如何从 WSL 打开 office 文件

  • LGA1151物理尺寸?

  • VBA根据文件名重命名工作表

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve