I have a workflow of two functions. Both of them aggregate the items that are receiving and only the first is adjustable. I mean that I can decide how many items to aggregate on the first function
F1 in order to not exceed the capacity (bandwidth) of the channel that connects to the second function
F2. In other words, I control the throughput that the second function is receiving items. If I aggregate more at
F1 I decrease the throughput. If I aggregate less at
F1 I increase the throughput. My goal is to tune the system for its maximum throughput while the input workload varies and I have a limited channel between
F1 and `F2. This it the picture of my system:
The data stream of items (workload) that
F1 receives varies along the time. I want to control the throughput output of
F1 in order to not surpass the channel capacity.
I am planning to use PID control to decide how many items to aggregate on the first function before to emit the items to the second function. I am a newbie in control systems. As far as I understood I have to start with the Proportional controller (P) which is basically the current error. Then I have to decide if I will use the Integral controller (I) which is the historic cumulative value of the errors. And then I have to decide if I will use the Derivative controller (D) which is based on its current rate of change.
For me, it is not clear yet if I really need the Integral and Derivative controllers. I mean, if I find the error between the actual throughput and the desired throughput I just set the first aggregate function to aggregate items in order to have the desired throughput. In my mind this is enough, isn't it?
Something could influence is the time that I take to aggregate items on the first function. Suppose that I have a slow processor. But, in my use case what is the insight that I have to have in order to use the Integral or the Derivative controllers?