## 4 Results
### Experimentally Obtaining the Upper Limits for Horizontal Autoscalers
#### 4.2.2 Experimental Pod Multiplicity Dependency Analysis  
The efficiency of the considered system is controlled by the HPA (horizontal pod autoscaler) [8]. The HPA is responsible for creating/destroying pods (belonging to a certain deployment) depending on a mean value of the CPU utilization of the pods. The mechanism of hysteresis is used for detecting the moments of instantiating additional pods (for too high a CPU utilization) or destroying pods (for too low a CPU utilization). Also, some constraints are taken into account by the HPA, i.e., the minimum number of pods--\(H_{min}\), and the maximum number of pods--\(H_{max}\). \(H_{min}=2\) was assumed in order to satisfy the fault tolerance assumption. The role of \(H_{max}\) is significant because of its impact on the number of pods during a very high load, which has a significant impact on the cost of the whole solution. Each deployment \(d=1\ldots D\) has its own HPA (with own \(H_{min\_d}\) and \(H_{max\_d}\)). The problem lies in finding \(H_{max\_d}\) for each \(d\) where the system is sufficiently efficient, satisfies an error condition, and has a sufficiently low cost. This is rather a Pareto-optimal problem of finding the best values of the efficiency-cost complex quality indicator. This is also a \(D\)-dimensional problem and the solution must be found experimentally, which results in a high optimization task cost. To overcome the problem of the so-called curse of dimensionality, we proposed disregarding all spaces of possible values of each \(H_{max\_d}\). We propose to find an approximate dependency between the numbers of pods of critical deployments. This dependency can be obtained experimentally for some constant load whose value is based on a certain part of the given maximum load. This dependency is later used in the proposed algorithm for changing the values of each \(H_{max\_d}\). This allows the problem to be changed from a \(D\)-dimensional problem to the one-dimensional problem. The characteristics the of number of instantiated pods (\(P_{d}\)) per critical deployment (\(d\)) obtained in \(k=1,2,3\) experiments are shown in Table 4.  
The restriction on the maximum number of pods was removed during of the subsequent three experiments. This allowed us to obtain the not-limited needs for pods \(P_{d}\) that handle critical requests under the load for each the \(k\)-th experiment. According to the values in Table 2 (the number of requests (36,360 requests) during the time of peak (3 h)), we calculated an average load at the maximum denoted as \(AL_{peak}\), which equals 202 requests per minute. In the experiments, we used a constant load lasting 30 min. The value of the load for \(k=1,2,3\) experiments was a fraction of \(AL_{peak}\), i.e., coefficients: 0.25, 0.5, and 0.75. Each\(k\)-th experiment was repeated (10 times) and the results were averaged and rounded to a natural value (see Table 4). Let us find the _d_selected_-th deployment with the greatest number of pods among all \(P_{d}\). For the considered example, as shown in Table 4 and Figure 6, _d_selected_ equals 14 for all \(k=1,2,3\) experiments. Let us use the result of the \(k=3\) experiment to obtain the proportionality dependency between deployments. Let us introduce the dependency coefficients \(p_{d}\) normalized \"to the one\", so:  
\(p_{d}=P_{d}/P_{d\_selected}\) and \(p_{d\_selected}=1\). The deployment dependency for the considered example is shown in Table 5. \begin{table}
\begin{tabular}{c c c c} \hline \hline \(k\) & 1 & 2 & 3 \\ \hline  & 0.25 \(AL_{peak}\) & 0.5 \(AL_{peak}\) & 0.75 \(AL_{peak}\) \\ \hline \(d\) & \(p_{d}\) & \(p_{d}\) & \(p_{d}\) \\ \hline
1 & 3 & 4 & 7 \\
2 & 4 & 5 & 8 \\
3 & 2 & 3 & 5 \\
5 & 3 & 4 & 7 \\
6 & 2 & 2 & 3 \\
7 & 2 & 3 & 5 \\
8 & 2 & 2 & 4 \\
9 & 2 & 3 & 5 \\
10 & 2 & 2 & 2 \\
11 & 2 & 2 & 3 \\
12 & 2 & 3 & 5 \\
13 & 2 & 2 & 3 \\
14 & 5 & 6 & 10 \\ \hline \hline \end{tabular}
\end{table} 
Table 4: Values of the number of instantiated pods per deployment needed for handling the load in \(k=1,2,3\) experiments.