Glasnhost Asked: 2018-10-27 08:29:10 +0800 CST2018-10-27 08:29:10 +0800 CST 2018-10-27 08:29:10 +0800 CST 2 个 CPU 上的 50% 负载与一个 CPU 上的 100% 负载相同吗? 772 非常基本的疑问:我有一个应用程序在具有 2 个 vCPU 的 VM 上运行。两个 CPU 的平均负载略低于 50%。 这是否意味着 1 个 CPU 足以满足我的应用程序?还是更多 CPU 受益于并行运行的线程? 编辑:这是我系统的一个真实示例,它由 8CPU 组成,超过一个月。数据归一化为 100%=8CPU。我想知道这些信息是否足以解决我的问题,基本上是系统是否过大。 cpu-usage 2 个回答 Voted Best Answer Halfgaar 2018-10-27T08:47:49+08:002018-10-27T08:47:49+08:00 这不是那么简单。使用一个线程或进程尽可能多地消耗 CPU,在双 CPU 系统上最多可以使用 50% 的 CPU。或者,某些系统会将其显示为 100% CPU,因为此时最大值为 200% CPU。 如果你有两个线程在一个内核的 50% CPU 上运行(所以它们不会最大化),也许它们在单个内核上运行的速度差不多,但是你会看到 100%。(这没有考虑到机器还有其他事情要做,并且上下文切换会导致开销。) 例如,如果您有两个线程在 50% 的时间内休眠并计算其他 50% 的时间,则一个 CPU 可以交替这两个线程的休眠和计算,以便使用 100% 的 CPU。 编辑: 我想我会展示一些示例图来说明它。 该服务器运行 16 个高 CPU 进程,以及数百个低 CPU 进程。3 月份,我决定将它升级到 8 个 CPU/内核(因此跃升至 800%),主要是因为我不得不在它上面运行一段时间的额外软件,你可以看到。 从 5 月到 7 月的大部分时间里,4 个核心可能就足够了。但是,我确实知道我的一些流程(进行批处理)会被延迟。 这是随附的负载图: 它是相关的,但正如您所看到的,它不仅仅是百分比/100。 您希望此类图表能够做出明智的决定。 编辑 2,关于您的图表: 有趣的。这些图表是用什么制作的?它们都以与我习惯相反的方式表示数据:系统中所有内核的 CPU 利用率似乎达到 100%,而不是像我的图表那样每个内核 100%。你可以运行dd if=/dev/urandom of=/dev/null几个小时来测试它;这将导致一个核心最大化,你会看到效果。 负载图显示每个核心的负载。我以前从未见过。uptime, htop, munin: 他们都只显示load。 jision 2018-10-28T01:39:56+08:002018-10-28T01:39:56+08:00 实际上,您永远无法仅通过查看 CPU 使用率来理解需求,现代 CPU 根据需求以合适的方式生成线程。 应用程序可以拥有更多的核心优势来运行线程。
这不是那么简单。使用一个线程或进程尽可能多地消耗 CPU,在双 CPU 系统上最多可以使用 50% 的 CPU。或者,某些系统会将其显示为 100% CPU,因为此时最大值为 200% CPU。
如果你有两个线程在一个内核的 50% CPU 上运行(所以它们不会最大化),也许它们在单个内核上运行的速度差不多,但是你会看到 100%。(这没有考虑到机器还有其他事情要做,并且上下文切换会导致开销。)
例如,如果您有两个线程在 50% 的时间内休眠并计算其他 50% 的时间,则一个 CPU 可以交替这两个线程的休眠和计算,以便使用 100% 的 CPU。
编辑:
我想我会展示一些示例图来说明它。
该服务器运行 16 个高 CPU 进程,以及数百个低 CPU 进程。3 月份,我决定将它升级到 8 个 CPU/内核(因此跃升至 800%),主要是因为我不得不在它上面运行一段时间的额外软件,你可以看到。
从 5 月到 7 月的大部分时间里,4 个核心可能就足够了。但是,我确实知道我的一些流程(进行批处理)会被延迟。
这是随附的负载图:
它是相关的,但正如您所看到的,它不仅仅是百分比/100。
您希望此类图表能够做出明智的决定。
编辑 2,关于您的图表:
有趣的。这些图表是用什么制作的?它们都以与我习惯相反的方式表示数据:系统中所有内核的 CPU 利用率似乎达到 100%,而不是像我的图表那样每个内核 100%。你可以运行
dd if=/dev/urandom of=/dev/null
几个小时来测试它;这将导致一个核心最大化,你会看到效果。负载图显示每个核心的负载。我以前从未见过。
uptime
,htop
,munin
: 他们都只显示load。实际上,您永远无法仅通过查看 CPU 使用率来理解需求,现代 CPU 根据需求以合适的方式生成线程。
应用程序可以拥有更多的核心优势来运行线程。