[ https://issues.apache.org/jira/browse/FLINK-9253?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16462535#comment-16462535 ]
ASF GitHub Bot commented on FLINK-9253: --------------------------------------- Github user pnowojski commented on a diff in the pull request: https://github.com/apache/flink/pull/5923#discussion_r185819830 --- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/io/network/NetworkEnvironment.java --- @@ -228,20 +228,19 @@ public void setupPartition(ResultPartition partition) throws IOException { @VisibleForTesting public void setupInputGate(SingleInputGate gate) throws IOException { BufferPool bufferPool = null; - int maxNumberOfMemorySegments; try { if (enableCreditBased) { - maxNumberOfMemorySegments = gate.getConsumedPartitionType().isBounded() ? - extraNetworkBuffersPerGate : Integer.MAX_VALUE; - // assign exclusive buffers to input channels directly and use the rest for floating buffers - gate.assignExclusiveSegments(networkBufferPool, networkBuffersPerChannel); - bufferPool = networkBufferPool.createBufferPool(0, maxNumberOfMemorySegments); + int nrExclusiveMemorySegments = gate.assignExclusiveSegments(networkBufferPool, networkBuffersPerChannel); + int maxNumberOfMemorySegments = gate.getConsumedPartitionType().isBounded() ? + gate.getNumberOfInputChannels() * networkBuffersPerChannel + + extraNetworkBuffersPerGate - nrExclusiveMemorySegments : Integer.MAX_VALUE; + bufferPool = networkBufferPool + .createBufferPool(0, maxNumberOfMemorySegments); --- End diff -- I think that express this way: ``` if (enableCreditBased) { int desiredMaxNumberOfMemorySegments = gate.getNumberOfInputChannels() * networkBuffersPerChannel + extraNetworkBuffersPerGate; int assignedExclusiveMemorySegments = gate.assignExclusiveSegments(networkBufferPool, networkBuffersPerChannel); int floatingMemorySegments = desiredMaxNumberOfMemorySegments - assignedExclusiveMemorySegments; bufferPool = networkBufferPool .createBufferPool(0, gate.getConsumedPartitionType().isBounded() ? floatingMemorySegments : Integer.MAX_VALUE); } ``` it's more easier to understand and allows us to skip the redundant comment. Especially current `maxNumberOfMemorySegments` is strange name. > Make buffer count per InputGate always #channels*buffersPerChannel + > ExclusiveBuffers > ------------------------------------------------------------------------------------- > > Key: FLINK-9253 > URL: https://issues.apache.org/jira/browse/FLINK-9253 > Project: Flink > Issue Type: Sub-task > Components: Network > Affects Versions: 1.5.0, 1.6.0 > Reporter: Nico Kruber > Assignee: Nico Kruber > Priority: Major > Fix For: 1.5.0 > > > The credit-based flow control path assigns exclusive buffers only to remote > channels (which makes sense since local channels don't use any own buffers). > However, this is a bit intransparent with respect to how much data may be in > buffers since this depends on the actual schedule of the job and not the job > graph. > By adapting the floating buffers to use a maximum of > {{#channels*buffersPerChannel + floatingBuffersPerGate - #exclusiveBuffers}}, > we would be channel-type agnostic and keep the old behaviour. -- This message was sent by Atlassian JIRA (v7.6.3#76005)