def _get_proposed_memory_recommendation()

in cost-optimization/hpa-config-recommender/src/hpaconfigrecommender/plan_workload_simulation.py [0:0]


def _get_proposed_memory_recommendation(
        config: Config,
        workload_df:pd.DataFrame,
        proposed_min_replicas: int,
        ) ->  float:
    """
    Calculate the recommended memory request per replica.

    This function computes the memory request per replica by dividing the
    total memory usage by the proposed minimum replicas and applying an
    extra buffer for memory recommendation.

    Args:
        config (Config): Configuration settings for mem recommendations.
        workload_df (pd.DataFrame): DataFrame containing workload metrics,
            including memory usage.
        proposed_min_replicas (int): Proposed minimum number of replicas.

    Returns:
        float: Recommended memory request per replica in MiB.
    """

    total_memory_capacity= (
        workload_df["sum_containers_mem_usage_mi"].max()
    )
    proposed_min_replicas = max(
        proposed_min_replicas, config.MIN_REC_REPLICAS
    )

    proposed_mem_recommendation = (
        (total_memory_capacity/proposed_min_replicas)
    )

    return np.ceil(
        min(
            proposed_mem_recommendation,
            workload_df["avg_container_mem_usage_mi"].mean()
        )*
        max(config.EXTRA_HPA_BUFFER_FOR_MEMORY_RECOMMENDATION,1))