Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • The subtask calculate the throughput and then based on the configuration(timeInBufferQueue) calculate buffer size(bufferSize = throughput * timeInBufferQueue / totalNumberOfBuffers)
  • The subtask setup up the size of the bufferThe subtask observes the changes in the throughput and changes the information about buffer size during the whole life period of the task. But the subtask doesn't change the size physically. So the real size of the downstream buffer always remains as it was initially configured maximum size.
  • The subtask sends the new buffer size and number of available buffers to the upstream to the corresponding subpartition.
  • Upstream changes the size of the newly allocated buffer size corresponding to the received information but the currently filled buffers send as is whatever their current size is. (it is possible because the downstream buffer size wasn't changed and it is able to handle any size up to maximum).
  • Upstream sends the data and number of filled buffers to the downstream

...

It is not enough to know just the number of available buffers (credits) for the downstream because the size of these buffers can be different. So we are proposing to resolve this problem in the following way: If the desirable downstream buffer size is changed then the upstream should send the already filled buffer as is but the buffer which will be allocated after the new buffer size information was received should be of the size not greater than the new one regardless of how big the current buffer on the upstream. (pollBuffer should receive parameters like bufferSize and return buffer not greater than it. (The request of the buffer should contain new input parameter like bufferSize)

Different subpartitions with different desired buffer size

...