[Pacemaker] Announce: Making Resource Utilization Dynamic
Lars Marowsky-Bree
lmb at suse.com
Wed Jun 12 15:10:44 UTC 2013
On 2013-06-12T11:31:43, Michael Schwartzkopff <misch at clusterbau.com> wrote:
> > Pacemaker is not necessarily the best tool to implement quick reaction
> > to changing load, though. The utilization feature is concerned with
> > *correctness* first - namely, don't overcommit resources severely, e.g.,
> > the case of Xen/VMs in general, don't overcommit physical memory
> > (which could even prevent resources from starting at all), or making
> > sure there's at least 0.5 CPU cores available per VM, etc.
> >
> > Without having the admin having to figure out the node scores
> > manually. Ease of configuration and all that.
>
> Well. At the moment I did not find a better solution.
Well, hard requirements could possibly be populated in monitor_0, or on
the first start - if the resource couldn't start otherwise anyway,
rescheduling it at this point makes sense, and it'd only happen once.
(If added in monitor_0, we'd populate them as part of the probe when the
resource is added for the first time, most likely, which is also OK.)
> > I think what you want instead are thresholds; only if the resource
> > utilization stays above XXX for YYY times, update the CIB, so that the
> > service can be moved to a more powerful server. Lower requirements again
> > if the system is below a fall-back threshold for a given period. You
> > want to minimize movement. And to add a scale factor so you can allow
> > for some overcommit if desired. [*]
>
> thresholds a definitely a better approach. Basically I just wanted to
> start a discussion and provide a proof of concept. There is plenty of
> space for improvement. The most important point was that I did not
> want to keep a history record on disk but wanted to calculate the new
> value from the existing value.
Sure. But you may need to keep track of the min/max/avg resource
consumption over 5-60 minutes for the table too, and I don't think you
can store that in the CIB.
If you don't want to store that on disk, you need to store it in a
daemon.
> > You also want that because you want to avoid needless PE runs. In your
> > current example, you're going to cause a PE run for *every* *single*
> > monitor operation on *any* VM.
> I see. This is a good point. Perhaps it is better to use a more coarse
> parameter i.e. full CPUs and to write only to CIB if the value really
> changed.
That's one of the effects that thresholds would provide too. Only if the
deviation from the current assignment is large enough would the value be
adjusted either up or down.
> > While the data gathering (* as outlined above) could happen in the RA, I
> > think you need to involve at least something like attrd in dampening
> > them. You don't want each RA to implement a threshold/stepping logic
> > independently.
> The problem ist, that attrd_updater, as far as I know, is not able to write
> utilizations into the CIB.
I'm pretty sure that can be fixed and attrd_updater either be enhanced
or a new tool written to handle this. You wanted to get back into
coding, right? ;-)
> Yes. I heard a OpenStack talk the other day. Nice project but the high
> availabilty is missing. Perhaps you could run all the components of
> OpenStack in a pacemaker cluster. Or at least the virtual machines.
> But up to now I have too few knowledge of openstack to think about an
> integration.
OpenStack is trying to gain HA features as well, though they've got a
way to go. There have been many discussions about how to enhance that,
but they only see "Oh, limited to 32 nodes" and no longer want to talk
;-)
Regards,
Lars
--
Architect Storage/HA
SUSE LINUX Products GmbH, GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer, HRB 21284 (AG Nürnberg)
"Experience is the name everyone gives to their mistakes." -- Oscar Wilde
More information about the Pacemaker
mailing list