0

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

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

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

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

定义

4

1 回答 1

1

我的问题是我是在正确地进行近似计算还是根据上面给出的计算误解了某些特定术语?

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

取决于上下文;GFLOPS 要么是“在实践中永远不会发生的完美条件下的理论最大值”(毫无价值的营销炒作);或直接测量忽略 CPU 所做的大部分工作的特定情况(所有涉及整数、所有控制流、所有数据传输、所有内存管理……)

在一个特定的场景中,我发现一个代码花费了 20 个 CPU 年和 4 个实际月的时间。我的目标是估计使用的处理能力。

由此; 您可能(或可能不会)说“由于无锁算法重试和/或无法提交的事务,CPU 所做的大部分工作都被丢弃了;并且(部分是因为瓶颈是 RAM 带宽,部分是因为SMT 在这个系统上的工作方式)如果使用一半的 CPU,速度会提高 4 倍。”

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

您的计算

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

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

于 2019-12-13T05:26:04.287 回答