从 CPU 时间开始估算处理能力

Approximating Processing Power from CPU-Time

在一个特定的场景中,我发现一个代码花费了 20 CPU 年 和 4 个实际时间。考虑到所有处理器始终处于 100% 使用率这一事实,我的目标是估算所使用的处理能力。所以,我的做法是,

20 CPU 年 = 20 * 365 * 24 CPU 小时 = 175,200 CPU 小时。

现在,1 CPU 年意味着 1 台 GFLOP 机器工作 1 小时。这意味着,在这种情况下,完成的工作是 1 台 GFLOP 机器工作了 175,200 个实际小时数。但实际上它花费了 4 * 30 * 24 = 2,880 个真实小时。因此,大约 175,200/2,880 =(大约)61 台 GLFOP 机器。

我的问题是,根据上面给出的计算,我是正确地进行了近似还是误解了某些特定术语?或者我将 GFLOPS 和 GFLOP 混合在一起?

Definitions

My question is am I doing the approximation correctly or misunderstanding some particular term as per the calculations given above ?

“100% 使用率”可能意味着 CPU 花费 20% 的时间无所事事地等待数据传输 to/from RAM(and/or 分支预测错误或其他停顿) , 10% 的时间 运行 比正常情况快,因为其他 CPUs 实际上什么都不做,15% 的时间 运行 比正常情况慢 power/temperature 管理原因;并且(取决于您从哪里获得“100% 使用率”统计数据)“100% 使用率”可能更加令人困惑(例如 http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html)。

视情况而定; GFLOPS 是 "theoretical maximum under perfect conditions that will never occur in practice"(毫无价值的营销炒作);或忽略了 CPU 所做的大部分工作的特定案例的直接测量(所有涉及整数、所有控制流、所有数据传输、所有内存管理,...)

In a particular scenario I found that a code has taken 20 CPU Years and 4 real Months time. My goal is to approximate the amount of processing power utilized.

由此;你可能(也可能不会)说 "most of the work that CPUs did was discarded due to lockless algorithm retries and/or transactions that couldn't be committed; and (partly because the bottleneck was RAM bandwidth and partly because of the way SMT works on this system) it would have been 4 times as fast if half as many CPUs were used."

TL;DR: 近似处理器能力只是混淆您开始使用的(更有用的)信息的一种不方便的方法(例如,一段特定的代码 运行 在处理特定数据的特定硬件上恰好需要 4 个月的实时时间)。

你的计算:

是;您正在混合 GFLOP 和 GFLOPS(例如 GFLOPS = GFLOP 每秒;“1 GFLOP 机器”是一台可以在无限时间内执行十亿次浮点运算的计算机,即每台计算机),以及网页你链接到的是同样的错误(例如,当它应该说 "a 1 GFLOPS reference machine" 时说 "a 1 GFLOP reference machine")。

请注意,对于您正在进行的计算,无需关心 GFLOPS 或 GFLOP:如果某些事情本应花费 20 "reference CPU years" 而实际上花费了 4 个月(或 4/12 年);那么你会说你的硬件相当于“20 / (4/12) = 60 reference CPUs”。当然,这是非常愚蠢的,更有意义的是说你的硬件恰好达到了 60 GFLOPS,而不用理会误导性的 "reference CPU" 废话。