|
|
| Line 4: |
Line 4: |
| | This page describes how guarantees for resources can be implemented. | | This page describes how guarantees for resources can be implemented. |
| | | | |
| − | = How to guarantee a guarantee =
| + | comment4, |
| − | It's not obvious at the first glance, but ''there are only two ways of how a guarantee can be provided'':
| |
| − | # reserve desired amount in advance
| |
| − | # limit consumers to keep some amount free
| |
| − | | |
| − | The first way has the followong disadvantages:
| |
| − | ; Reservation is impossible for certain resources
| |
| − | : such as CPU time, disk or network bandwidth and similar can not be just reserved as their amount instantly increases;
| |
| − | | |
| − | ; Reserved amount is essentially a limit, but much more strict
| |
| − | : cutting off X megabytes from RAM implies that all the rest groups are limited in their RAM consumption;
| |
| − | | |
| − | ; Reservation reduces containers density
| |
| − | : if one wants to run some identical containers, each requiring 100Mb on 1Gb system, reservations can be done for only 10 containers, and starting the 11th is impossible.
| |
| − | | |
| − | On the other hand, ''limiting'' of containers can provide guarantees for them as well.
| |
| | | | |
| | = Providing a guarantee through limiting = | | = Providing a guarantee through limiting = |
Revision as of 12:36, 23 May 2011
This page describes how guarantees for resources can be implemented.
comment4,
Providing a guarantee through limiting
The idea of getting a guarantee is simple:
if any group
Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle g_i}
requires a
Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle G_i}
units of resource from
Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle R}
units available then limiting all the rest groups with

units provides a desired guarantee
For
groups in the system this implies solving a linear equation set to get limits
like this:
In a matrix form this looks like
Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle A L = G\; }
where
and thus the solution is
Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle L = A^{-1}G\; }
Skipping boring calculations, the reverse matrix Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle A^{-1}\;}
is
Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle A^{-1} = \frac {1} {N - 1} \left( A - (N - 2) E \right) }
This solutions looks huge, but the Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle L}
vector is calculated in Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle O(N)}
time:
void calculate_limits(int N, int *g, int *l)
{
int sum;
int i;
if (N == 1) {
l[0] = R;
return;
}
sum = 0;
for (i = 0; i < N; i++)
sum += R - g[i];
for (i = 0; i < N; i++)
l[i] = (sum - (R - g[i]) - (N - 2) * (R - g[i]))/(N - 1);
}
Disadvantages of this approach
This approach has only one disadvantage: O(n) time needed to start a new container.