Which one should i use for benchmark tasks in hadoop user+sys time or total cpu time spent in hadoop job counter?
在一篇回答中写道:"同一个作业在同一个数据上运行,但在一个20节点集群上运行,然后是一个200节点集群。总体而言,两个集群将使用相同数量的CPU时间"有人可以解释一下吗?
我用time命令来测量实时。有时我得到的cpu时间(hadoop计数器)比实际时间长,反之亦然。我知道实时测量实际时钟时间,它可以大于或小于user+sys。
我还没有得到hadoop的总CPU时间测量值。
关于时间命令,这个答案写的最好用user + sys作为基准测试。
作为total cpu time taken by process = user+sys,它应该与hadoop作业计数器的总CPU时间相同。但是我得到了不同的结果。
我应该考虑在hadoop user + sys或者花费的总cpu时间(hadoop计数器)中我是否正在做一些基准类型的任务?
注意:
在apache hive基准测试中,他们考虑了实时,但它也会受到其他进程的影响。所以我不能考虑实时。
same job running over the same data but on one 20 node cluster, then a 200 node cluster.Overall, the same amount of CPU time will be used on both clusters
这意味着如果作业在20节点群集上花费N小时,在200节点群集上花费M小时,则20 * N应等于M * 200
实时应该是你的选择,但正如你上面所说,这个值可能会相应改变,所以你应该尝试至少3次,并计算平均值作为最终结果。
-
好的。 您是否知道为什么工作计数器中的总CPU时间与usr + sys不同?
-
我认为usr + sys = mapreduce cpu time + cpu usr&的其他一些任务。 sys喜欢分配内存或访问硬件等我是对的吗?
-
@Dhruv绝对不是。 usr + sys是客户端进程的运行时间而不是mapreduce框架
-
所以对于地图减少,如果我想测量CPU时间,那么我应该只考虑在工作计数器写的cpu时间而不是我从时间命令得到的权利?
-
是的,这是正确的方法。