Class FJ_tail_ordstat
The request forks into N parallel tasks and joins on the KREQ-th of them. KREQ = N is the
ordinary AND-join and reproduces FJ_tail_forktail exactly; KREQ = 1 is the first
completion.
Each branch is the same black box ForkTail uses: its task response time is fitted by a
generalized exponential law F_i(x) = (1-exp(-x/beta_i))^alpha_i matched on the branch mean and
variance by FJ_tail_forktail.geFit(double, double). The request completes once KREQ of the N branches
have, so its law is the KREQ-th ORDER STATISTIC of independent, not identically distributed
branch times,
F_X(x) = P(at least KREQ of the N branches are done by x),
the upper tail of a Poisson-binomial with success probabilities F_i(x). It is evaluated by the convolution recurrence, which adds no cancellation, and inverted by bisection. At KREQ = N it reduces term by term to prod_i F_i(x), the product of the branch CDFs that ForkTail inverts, so a full join evaluates exactly as it did before this class existed.
BRANCH INDEPENDENCE is assumed, as in ForkTail: the branches of one request are positively correlated through their shared arrival instant, so the true quorum percentile is somewhat larger than this one. The same heavy-traffic caveat applies.
Port of matlab/src/api/fj/fj_tail_ordstat.m.
References: M. Nguyen, S. Alesawi, N. Li, H. Che, H. Jiang, "ForkTail: A Black-Box Fork-Join Tail Latency Prediction Model for User-Facing Datacenter Workloads", ACM HPDC 2018, for the branch law; A. Thomasian, "Analysis of Fork/Join and Related Queueing Systems", ACM Computing Surveys 47(2), Article 17, 2014, Sec. 3, for the quorum.
-
Method Summary
Modifier and TypeMethodDescriptionstatic doublefj_tail_ordstat(double[] ET, double[] VT, double p, int kreq) Tail latency of a quorum request over heterogeneous branches, one entry per branch.static doublefj_tail_ordstat(double ET, double VT, int K, double p, int kreq) Tail latency of a quorum request over K identical branches.
-
Method Details
-
fj_tail_ordstat
public static double fj_tail_ordstat(double ET, double VT, int K, double p, int kreq) Tail latency of a quorum request over K identical branches.- Parameters:
ET- mean task response time of a branchVT- variance of the task response time of a branchK- number of branchesp- percentile, a fraction in (0,1) or a percentage in (0,100)kreq- the join fires on the kreq-th branch- Returns:
- the predicted p-th percentile of the request response time
-
fj_tail_ordstat
public static double fj_tail_ordstat(double[] ET, double[] VT, double p, int kreq) Tail latency of a quorum request over heterogeneous branches, one entry per branch.- Parameters:
ET- mean task response time per branchVT- variance of the task response time per branchp- percentile, a fraction in (0,1) or a percentage in (0,100)kreq- the join fires on the kreq-th branch- Returns:
- the predicted p-th percentile of the request response time
-