为什么即使我的应用程序(利用 CPU 资源)滞后,我的 CPU 也不能发挥其最大潜力?

Nhu*_*yen 34 cpu performance

为什么即使我的应用程序占用了 40% 的 CPU(但 30 - 40% 的 CPU 仍然保持空闲),我的 CPU 也永远不会最大化?

这是否意味着:

  1. 有一种方法可以强制 CPU 以 100% 运行
  2. CPU就是这样制造的,我唯一能做的就是购买新硬件。
  3. 限制在于应用程序,即使使用更好的 CPU,延迟也不会改善。(假设应用程序是完美的,我要问的是软件是否以这种方式运行?)
  4. 别的东西。

I s*_*ica 96

您可能正在运行单线程应用程序,它只能最大化单个 CPU 内核。由于单核100%小于多核CPU容量的100%,所以CPU利用率不会达到100%。

您可以通过在任务管理器中查看单个核心利用率来确认这一点。寻找接近最大利用率的单核。

  • 我还想说 cpu 实际上可能不是瓶颈。 (62认同)
  • 由于切换,您将只会看到总计为使用一个内核的分布式使用。基本上,该应用程序仅使用一个内核,但它会在内核之间跳来跳去,因此每个内核的平均值为 1/n。 (26认同)
  • 我依稀记得 Dwarf Fortress 著名的瓶颈是 100%,所以他开始将其他位分叉到第二个线程中,导致“主”线程锁定在 100%,而“后台”线程徘徊在 20-60% 左右。在四核上,这是... 30-40%。 (16认同)
  • @AytAyt - 我会更进一步说这不仅可能,而且_几乎可以肯定_。除非 OP 的应用程序正在执行纯数字运算(或到处使用自旋锁),否则即使使用多线程程序,也很难完全加载 CPU。任何磁盘或网络 I/O 都会留下空闲周期,并且考虑到 OP 提到“滞后”应用程序,似乎有一些网络通信在起作用。 (7认同)
  • 不要忘记 CPU 上的 Turbo 模式。Taskmanager 在计算负载百分比时没有考虑到这一点。在我的 i5-4570S 上,我经常看到大约 30% 的负载。那是一个核心 (25%),常规 2,9 GHz 涡轮增压至 3,4 GHz。25*3,4/2,9 接近 30%。正常频率和 Turbo 频率之间的差异越大,我们就可以得到更高的频率。 (4认同)
  • 当然可能,甚至可能,但我原以为 30-40% 似乎有点奇怪。对于双核系统,1 个 CPU 最大化显然是 50%,而对于四核系统,1 个 CPU 将是 25%。将 1 个内核最大化为 30-40% 将是一个非常罕见的三核系统。 (2认同)
  • 为什么这个答案会被点赞?CPU hog 很少是一个问题。一个更可能的原因是它在等待某些东西(磁盘、网络)时冻结。 (2认同)

Jar*_*era 50

您尚未指定操作系统。所以答案会很常见。

应用程序可能会因各种原因而受到限制。瓶颈可能在:

  • 中央处理器
    • 低速
    • 单/低线程应用程序(无法使用所有内核/线程)
  • 输入/输出
    • 磁盘吞吐量
    • 磁盘延迟
    • 网络吞吐量
    • 网络延迟
  • 记忆
    • 容量
    • 吞吐量
    • 潜伏
    • 缓存不足
    • 地点 (NUMA)
    • 交换

还有更多不常见的原因。

因此,请查看您的系统资源并尝试分析您的系统是否存在其他瓶颈,而不仅仅是 CPU 总负载。

  • 另外:显卡具有独立的 GPU、I/O 和内存,其中任何一个也可能是问题所在。 (9认同)
  • @MooingDuck 是的,但是如果有问题的应用程序实际上正在使用 GPU(即 3D 游戏或 CUDA/OpenCL 应用程序或类似的东西),这通常只会是一个问题。 (2认同)

com*_*guy 14

一般来说,当人们谈论他们的计算机速度很慢时,我会提到灰尘。作为一名拥有 15 年专业经验的前计算机技术人员,我发现简单地吹扫灰尘可以显着提高性能。

我不是在谈论薄薄的、几乎察觉不到的灰尘量,而是指阻止正常气流的大团块甚至垫子。我见过散热片基本上有一个过滤器,上面是灰尘,而不是真正的过滤器。这会阻止大量空气冷却 CPU。像这样去除灰尘会使风扇立即安静下来,并使您的组件使用寿命更长。Heat 杀死了许多我被要求修理的计算机。

随着散热问题的想法,您也可以尝试更好的导热膏。大多数处理器附带的白色 cr@p 就像散热膏的 Yugo。我使用北极银,但还有比这更好的东西,甚至。北极银是关于保时捷(使用汽车评级量表),但那里有法拉利和超级跑车的品种。

处理器在过热时往往会变慢。这是物理上的东西,也是编程到许多 CPU 中的“自我保护”。我不知道它是否仍会在任务管理器上显示 100% 或是否会显示 40%(如您所见),但是当 CPU 试图让散热器和风扇散热时,它可能会显着减慢“跟上来。”

另一个可能会降低 CPU 速度的因素是 GPU。如果您正在运行图形密集型游戏或实用程序(如 CAD),您的 GPU 可能会阻碍您的 CPU。获得更好的视频卡可能需要考虑。此外,使用错误的正确卡可能会阻碍您。游戏卡(通常)并非设计为与 CAD 以及工作站卡一起使用,并且工作站卡(通常)也不会很好地玩游戏。有些会,但大多数不会。

正如@Jaroslav Kucera 提到的,它可能与磁盘有关。频繁使用 HD 会减慢您的速度。我通常运行多个驱动器。一个专用于操作系统和其他软件、Windows 页面文件、个人文件等。除了不必担心在操作系统出现故障时备份个人数据之外,拥有多个 HD 可以大大分散工作量。同时读取和写入同一个磁盘会严重降低 HD 速度。使用 SHD 可以缓解这种情况,但不能完全缓解。众所周知,Photoshop 和视频编辑软件对 HD 的影响很大。从一个高清读取然后输出到第二个高清是要走的路。这也有助于您的 HD 的使用寿命。我还对我的 HD 进行了主动冷却。自从我 15 年前在硬盘上安装风扇和散热器以来,我就没有杀死过硬盘。谷歌他们,他们是便宜的保险。

信不信由你,您的 PSU 也可能会减慢您的速度。如果您没有足够的电量(或者您的 PSU 是旧的或便宜的、额定值过高的中国 POS),您可能会遇到性能问题。我亲眼目睹了片状 PSU 可以做什么奇怪的操作系统问题。您正在寻找电压和放大器,因此请确保它们都符合 PSU 上的规格(如果您走这条路),并确保它们满足或超过您的电源需求。如果您的组件总功率为 500 瓦,而您给它们的功率甚至为 475 瓦,那就太糟糕了。我建议将您的要求提高大约 20%,这样随着您的 PSU 变旧(并降低功率)和您的其他组件变旧(并且需要微电源),您就不会这么快购买新的 PSU。

包括此处的其他答案,您的计算机运行缓慢还有更多原因。除了电源选项,我说的这些都是我做电脑的时候很常见的。进行基准测试和其他测试是您能够解决问题的唯一方法。如果是多个部件的组合导致速度变慢,那么交换部件甚至可能无法解决问题。

而且,AFAIK,没有办法强制您的计算机使用 100% 的处理器。CPU 和操作系统知道他们需要做什么,并且通常非常擅长他们的工作。:-) 我认为还没有人想出一种方法来强制馈送 CPU 以使其在您认为应该的情况下以 100% 运行。至少在没有喂它额外的垃圾的情况下,使百分比“看起来不错”。

看到 40% 而不是 100% 的整数除法(如 25%、33% 或 50%),我感觉这不是单线程问题。它可能是,但那不是我的想法。不过,对@Twisty Impersonator +1 立即提出来。

祝你好运!我花了几天的时间试图弄清楚这种事情,但最终以“最后的手段”取代了大部分胆量。

  • @JPhi1618 CPU 通常通过调整其频率(降频)来限制,因此它们不是以 3.0GHz 运行,而是以 2.0GHz 运行。因此,受热限制的 CPU 仍可能报告 100% 负载,因为每个“工作槽”都被占用,只是单位时间内可用的“工作槽”较少。 (9认同)
  • 我忘了提,在你的电脑附近抽烟是你可以做的 _** 最糟糕的 ** 事情之一。它留下了无法清除的令人讨厌、恶心和恶心(再怎么强调也不为过)的橙色黏糊糊的烂摊子。灰尘结块,无法清除。你也许可以用汽车零件油浴或声波水浴来解决它,但我从来没有经历过那样的麻烦。即使清洁外壳也是徒劳的。 (7认同)
  • 仅从开发人员的角度来看,CPU 会按照您的要求执行任何操作。如果它没有达到 100%,那是因为您的程序正在等待其他事情的发生(磁盘 IO、网络、用户输入、系统消息等)。如果您有 CPU 要做的事情,它会自动使用 100%(假设是多线程应用程序)来执行您的程序需要的操作——您不必“让它”使用 100% 或解锁它或其他什么。 (3认同)
  • @JPhi1618:你忘记了热量。不管你告诉它做什么,如果 CPU 过热,它会限制自己以远低于 100% 的速度运行。 (2认同)