unxsVZ Autonomics on OpenVZ User Bean Counter (UBC) VE Variables
Main points:
- We rely on OpenVZ limits of the vzctl --set function.
- We keep track in our tProperties table of the current values, the target values and a t-1 delta value of all settable VE and node (ct0) UBCs.
- We are gathering data from commercial production unxsVZ deploys and developing our autonomics with no preconceived notions or academic biases.
- We will probably focus on standard ISP services, especially mail (mx containers, incoming esmtp container stores, outgoing esmtp reputation management containers,) DNS and Apache2 hosting.
- This page will be continuously updated as we advance in our quest for non oscillating container autonomics limited by node capacity. And the holy grail of autonomics: The automated expansion and shrinking of the number of containers used by cross datacenter clustered services (a simple example would be MX RR DNS front end containers.)
Model Predictive Control
Since we can't model at this time even a small set of possible container type and traffic profiles (even though we are accumulating much real world data that does provide weights and target values, that we associate with VE types and traffic profiles -eg. Postfix MX container with low traffic.) We still have to rely on a general control theory method that best matches the complex interaction of multiple variables that we must also assume have unknown interactions. The well known and heavily used in current industrial operations control model: "Model Predictive Control" (MPC) seems to be well suited for our undertaking. An initial brief outline of our process is provided based on a Wikipedia MPC article provided equation image and summary equation element reference with changes to better reflect the UBC context:
Where J is the optimization control function for n OpenVZ UBCs and m node resource conditions, where i=n+m, and:
xi = i -th control variable (e.g. privvmpages)
ri = i -th reference variable (e.g. target privvmpages)
ui = i -th manipulated variable (e.g. new privvmpages values as a delta between new and last value)
wxi = weighting coefficient reflecting the relative importance of xi
wui = weighting coefficient penalizing relative big changes in ui
To replace our initial simplistic 10% stable convergence approach to increasing UBC values based only on fail counters, we are implementing this new comprehensive approach, that also permits the return to initial target settings of VEs when operational input so determines. For this we solve the Euler-Lagrange equations for J on a receding horizon basis (on discrete t steps) to calculate possible UBC changes. We are restricted to the limits and global changes to a given VE UBC parameter set via OpenVZ script rules which we do not analyze or critique but assume are based on correct models.
We welcome the OpenVZ community to provide critical anaylsis and any information they may have on dynamic UBC setting
Please contact us for an account to be able to edit this wiki page as a valuable contributor.
The author of this wiki page is the Unixservice UCLA trained tinkerer-mathematician Gary Wallis (BSMCS UCLA 1991)

