amansinha100 commented on a change in pull request #1466: DRILL-6381: Add 
support for index based planning and execution
URL: https://github.com/apache/drill/pull/1466#discussion_r228357573
 
 

 ##########
 File path: 
exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/BroadcastExchangePrel.java
 ##########
 @@ -57,7 +57,9 @@ public RelOptCost computeSelfCost(RelOptPlanner planner, 
RelMetadataQuery mq) {
 
     final int  rowWidth = child.getRowType().getFieldCount() * 
DrillCostBase.AVG_FIELD_WIDTH;
     final double cpuCost = broadcastFactor * DrillCostBase.SVR_CPU_COST * 
inputRows;
-    final double networkCost = broadcastFactor * 
DrillCostBase.BYTE_NETWORK_COST * inputRows * rowWidth * numEndPoints;
+
+    //we assume localhost network cost is 1/10 of regular network cost
+    final double networkCost = broadcastFactor * 
DrillCostBase.BYTE_NETWORK_COST * inputRows * rowWidth * (numEndPoints - 0.9);
 
 Review comment:
   @gparai,  forgot to respond to this.  The cost formula is: 
       (cost of broadcasting num_bytes to N - 1 nodes)  +  (cost of local 
broadcast to all minor fragments on my own node)
      = (C * num_bytes * (N - 1) )  +  (C * num_bytes * 0.1)   where the 0.1 
factor comes from the assumption that local broadcast is 10% network cost of 
the remote broadcast. 
     = C * num_bytes * (N - 0.9)
   
   While the formula seems reasonable, it is biasing the cost in favor of 
Broadcast compared to HashPartition.  We should re-visit this and ideally a 
similar change should be done for HashPartition also.  I don't recall the exact 
use case which motivated the change.. it may have been the Index Intersection.  
I can create a JIRA to re-visit this. 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to