在特定场景中,我发现代码花费了 20个 CPU 年和 4 个实际月的时间。我的目标是考虑到所有处理器始终处于 100% 使用率的事实,近似使用的处理能力。所以,我的方法如下,
20 个 CPU 年 = 20 * 365 * 24 个 CPU 小时 = 175200 个 CPU 小时。
现在,1 个 CPU 年意味着 1 台 GFLOP 机器工作 1 个实际小时。这意味着,在这种情况下,完成的工作是,1 台 GFLOP 机器工作 175,200 个实际小时。但实际上,它需要 4 * 30 * 24 = 2,880 个实际小时。因此,大约 175,200/2,880 =(大约(61 台 GLFOP 机器。
我的问题是我是否正确地进行了近似或误解了上面给出的计算中的某些特定术语?或者我把GFLOPS和GFLOP混合在一起?
定义
我的问题是我是否正确地进行了近似或误解了上面给出的计算中的某个特定术语?
"100% 使用率"可能意味着 CPU 花费 20% 的时间无所事事地等待数据传输到/传出 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机器"是一台可以在无限时间内执行十亿浮点运算的计算机,这是每台计算机(,并且您链接到的网页犯了同样的错误(例如,说"1 GFLOP参考机",而它应该说"1 GFLOPS参考机"(。
请注意,对于您正在做的计算,没有必要关心GFLOPS或GFLOP:如果某件事应该需要20个"参考CPU年",实际上需要4个月(或4/12年(;那么你会说你的硬件相当于"20/(4/12( = 60个参考CPU"。当然,这是非常愚蠢的,更有意义的是说你的硬件碰巧达到了60 GFLOPS,而不必担心误导性的"参考CPU"废话。