in cost-optimization/hpa-config-recommender/src/hpaconfigrecommender/plan_workload_simulation.py [0:0]
def _vpa_recommendation(
config: Config,
workload_df: pd.DataFrame) -> WorkloadPlan:
"""
Static workload recommendation
Args:
config (Config): _description_
workload_df (pd.DataFrame): _description_
Returns:
WorkloadPlan
"""
num_of_replicas = max(
workload_df["num_replicas_at_usage_window"].min(),
config.MIN_REC_REPLICAS
)
vpa_plan = WorkloadPlan(
method= "VPA",
recommended_cpu_request = round(
(
workload_df["sum_containers_cpu_usage"].quantile(0.98)/num_of_replicas
) * config.EXTRA_HPA_BUFFER_FOR_CPU_USAGE_CAPACITY
,3),
recommended_cpu_limit_or_unbounded = np.ceil(
(
workload_df['sum_containers_cpu_usage'].max()/ num_of_replicas
) * config.EXTRA_HPA_BUFFER_FOR_CPU_USAGE_CAPACITY
),
recommended_mem_request_and_limits_mi = np.ceil(
(
workload_df["sum_containers_mem_usage_mi"].max()/num_of_replicas
) * config.EXTRA_VPA_BUFFER_FOR_MEMORY_RECOMMENDATION
),
recommended_min_replicas = num_of_replicas,
recommended_max_replicas = num_of_replicas,
recommended_hpa_target_cpu = 1.0,
workload_e2e_startup_latency_rows=1
)
return vpa_plan