def _vpa_recommendation()

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