Non-Preemptive Migration (NP, initial placement, remote execution): migration of newborn jobs only. (You don't migrate a job once it has started running)
Preemptive Migration (P, active process migration): migration active jobs
Job size: total CPU requirement in seconds
Job age: total CPU usage til now
Job remaining lifetime: future CPU requirement
Failure rate function:
Decreasing Failure Rate: r_X(t) strictly decrease with t. (e.g. friendship, feedback loop) Increasing Failure Rate: r_X(t) strictly increase with t. (e.g. lifetime of person, no feedback loop)
For Exponential, Pr\{X > x + a | X > a\} = Pr\{X > x\} means the lifetime is independent of the current age by memoryless.
For X \sim \text{Exp}(\lambda), C_X^2 = \frac{Var(X)}{E[X]^2} = 1
therefore, there should not be incentive to migrate tasks
For X \sim \text{Pareto}(\alpha), and 0 < \alpha < 2
For \text{Pareto}(\alpha = 1), what is the probability a job with age a live to at least age b?
Which means:
Properties of Pareto Distribution:
For X \sim \text{Bounded Pareto}(k, p, \alpha) for k \leq x \leq p, 0 < \alpha < 2
\frac{k^\alpha}{1 - (\frac{k}{p})^\alpha} is a normalization factor to make integral of density function between k and p come out to 1
Pareto is more heavy tail than Exponential with the same mean:
Pareto: largest 1\% of jobs comprise about 50\% load, more biased than 80-20 rule
Exponential: largest 1\% of jobs comprise about 5\% load.
Heavy Tails:
\alpha \rightarrow 0 yields most variable and most heavy-tailed
\alpha \rightarrow 2 yields least variable and least heavy-tailed
Google's Data:
CPU: \text{Pareto}(\alpha = 0.69) gives C^2 = 23000
Memory: \text{Pareto}(\alpha = 0.72) gives C^2 = 43000
Table of Content