package dev.elaine.network;

public final class CapacityPlanSample {
    private CapacityPlanSample() {}

    public record Plan(double arrivalPerSecond, double averageSeconds, long concurrent,
                       int applicationThreads) {}

    public static Plan estimate(double requestsPerSecond, long averageLatencyMillis,
                                int targetCpuPercent, int cores) {
        double seconds = averageLatencyMillis / 1_000.0;
        long concurrent = (long) Math.ceil(requestsPerSecond * seconds);
        int threads = Math.max(1, cores * targetCpuPercent / 100);
        return new Plan(requestsPerSecond, seconds, concurrent, threads);
    }

    public static void main(String[] args) {
        Plan plan = estimate(2_000, 80, 70, 8);
        System.out.printf("在途请求约 %d，CPU 密集线程起点 %d%n",
                plan.concurrent(), plan.applicationThreads());
    }
}

