Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Linux-HA: Dev

Fwd: [Pacemaker] Resource Scheduler Parameters

 

 

Linux-HA dev RSS feed   Index | Next | Previous | View Threaded


btinsley at gmail

Apr 9, 2009, 5:00 AM

Post #1 of 2 (892 views)
Permalink
Fwd: [Pacemaker] Resource Scheduler Parameters

Sorry this got off a mailing list. Below is a proposed patch for handling an
issue where lrmd spawns all cluster resources with the realtime scheduler
class (SCHED_RR) set. I know on Linux that the default is SCHED_OTHER and
the code in the patch below is POSIX compliant, so hopefully it will not
cause issues for folks on other OSes.



---------- Forwarded message ----------
From: Andrew Beekhof <beekhof [at] gmail>
Date: Thu, Apr 9, 2009 at 1:57 AM
Subject: Re: [Pacemaker] Resource Scheduler Parameters
To: btinsley <btinsley [at] gmail>


dejan maintains the lrmd, you'd better send this to the heartbeat
mailing list (but it looks fine to me)

On Thu, Apr 9, 2009 at 01:42, btinsley <btinsley [at] gmail> wrote:
> Nevermind, I think I found it... in the heartbeat source. Forgot about
that,
> but grep-ing Pacemaker code for fork/exec/clone code freaked me out for a
> little while ;-)
>
> If you want it, this patch should do the trick. It's POSIX compliant, so
> hopefully it won't be troublesome on other OSes ;-) If I missed the mark
> completely here, the code can be placed wherever it's needed.
>
>
> --- lrmd.c.orig 2009-04-08 15:33:04.038843903 -0500
> +++ lrmd.c 2009-04-08 15:45:11.976099804 -0500
> @@ -34,6 +34,7 @@
> #include <dirent.h>
> #include <pwd.h>
> #include <time.h>
> +#include <sched.h>
>
> #include <glib.h>
> #include <heartbeat.h>
> @@ -3087,6 +3088,15 @@
> return HA_OK;
>
> case 0: /* Child */
> + if (sched_getscheduler(0) != SCHED_OTHER) {
> + lrmd_debug2(LOG_DEBUG,
> + "perform_ra_op: resetting
scheduler
> class to SCHED_OTHER");
> + struct sched_param sp;
> + sp.sched_priority = 0;
> + if (sched_setscheduler(0, SCHED_OTHER,
&sp)
> == -1)
> + cl_perror("%s::%d:
> sched_setscheduler",
> + __FUNCTION__, __LINE__);
> + }
> /* Man: The call setpgrp() is equivalent to
> setpgid(0,0)
> * _and_ compiles on BSD variants too
> * need to investigate if it works the same too.
>
>
>
> On Wed, Apr 8, 2009 at 1:28 PM, btinsley <btinsley [at] gmail> wrote:
>>
>> Where in the code are resources spawned? Is it start_subsystem() or
>> elsewhere? I'll be glad to pitch in and offer a patch if you want.
>>
>>
>>
>> On Wed, Apr 8, 2009 at 1:18 PM, Andrew Beekhof <beekhof [at] gmail> wrote:
>>>
>>> On Wed, Apr 8, 2009 at 18:40, btinsley <btinsley [at] gmail> wrote:
>>> > AIS guys said to upgrade to the latest Whitetank :-) I did and the
>>> > behavior
>>> > is the same, but it's not necessarily incorrect. The aisexec process
>>> > sets
>>> > itself to the realtime scheduling class, which does the same for all
of
>>> > the
>>> > Pacemaker processes when they are spawned. This is probably how you
>>> > want the
>>> > cluster daemons to run. However, when lrmd spawns resource scripts
>>> > *everything* the script does also inherits the realtime scheduling
>>> > class.
>>> > I'm not sure this is how you want all your clustered applications
>>> > running
>>> > (or all the other stuff a resource script may do). Thoughts here?
>>>
>>> I'd tend to agree with you - the lrmd should probably do the
>>> equivalent of chrt for the child processes it uses to perform the
>>> resource actions
>>>
>>> > As a workaround, I added calls to the chrt program in each resource
>>> > script
>>> > to "downgrade" the scheduler to SCHED_OTHER and set the priority to
>>> > zero,
>>> > which is the system default.
>>>
>>> _______________________________________________
>>> Pacemaker mailing list
>>> Pacemaker [at] oss
>>> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
>>
>
>


dejanmm at fastmail

Apr 9, 2009, 6:48 AM

Post #2 of 2 (813 views)
Permalink
Re: Fwd: [Pacemaker] Resource Scheduler Parameters [In reply to]

Hi,

On Thu, Apr 09, 2009 at 07:00:07AM -0500, btinsley wrote:
> Sorry this got off a mailing list. Below is a proposed patch for handling an
> issue where lrmd spawns all cluster resources with the realtime scheduler
> class (SCHED_RR) set. I know on Linux that the default is SCHED_OTHER and
> the code in the patch below is POSIX compliant, so hopefully it will not
> cause issues for folks on other OSes.

Applied. Thanks.

Dejan

P.S. Forgot to set you as the author of the patch, sorry about that :(

>
>
> ---------- Forwarded message ----------
> From: Andrew Beekhof <beekhof [at] gmail>
> Date: Thu, Apr 9, 2009 at 1:57 AM
> Subject: Re: [Pacemaker] Resource Scheduler Parameters
> To: btinsley <btinsley [at] gmail>
>
>
> dejan maintains the lrmd, you'd better send this to the heartbeat
> mailing list (but it looks fine to me)
>
> On Thu, Apr 9, 2009 at 01:42, btinsley <btinsley [at] gmail> wrote:
> > Nevermind, I think I found it... in the heartbeat source. Forgot about
> that,
> > but grep-ing Pacemaker code for fork/exec/clone code freaked me out for a
> > little while ;-)
> >
> > If you want it, this patch should do the trick. It's POSIX compliant, so
> > hopefully it won't be troublesome on other OSes ;-) If I missed the mark
> > completely here, the code can be placed wherever it's needed.
> >
> >
> > --- lrmd.c.orig 2009-04-08 15:33:04.038843903 -0500
> > +++ lrmd.c 2009-04-08 15:45:11.976099804 -0500
> > @@ -34,6 +34,7 @@
> > #include <dirent.h>
> > #include <pwd.h>
> > #include <time.h>
> > +#include <sched.h>
> >
> > #include <glib.h>
> > #include <heartbeat.h>
> > @@ -3087,6 +3088,15 @@
> > return HA_OK;
> >
> > case 0: /* Child */
> > + if (sched_getscheduler(0) != SCHED_OTHER) {
> > + lrmd_debug2(LOG_DEBUG,
> > + "perform_ra_op: resetting
> scheduler
> > class to SCHED_OTHER");
> > + struct sched_param sp;
> > + sp.sched_priority = 0;
> > + if (sched_setscheduler(0, SCHED_OTHER,
> &sp)
> > == -1)
> > + cl_perror("%s::%d:
> > sched_setscheduler",
> > + __FUNCTION__, __LINE__);
> > + }
> > /* Man: The call setpgrp() is equivalent to
> > setpgid(0,0)
> > * _and_ compiles on BSD variants too
> > * need to investigate if it works the same too.
> >
> >
> >
> > On Wed, Apr 8, 2009 at 1:28 PM, btinsley <btinsley [at] gmail> wrote:
> >>
> >> Where in the code are resources spawned? Is it start_subsystem() or
> >> elsewhere? I'll be glad to pitch in and offer a patch if you want.
> >>
> >>
> >>
> >> On Wed, Apr 8, 2009 at 1:18 PM, Andrew Beekhof <beekhof [at] gmail> wrote:
> >>>
> >>> On Wed, Apr 8, 2009 at 18:40, btinsley <btinsley [at] gmail> wrote:
> >>> > AIS guys said to upgrade to the latest Whitetank :-) I did and the
> >>> > behavior
> >>> > is the same, but it's not necessarily incorrect. The aisexec process
> >>> > sets
> >>> > itself to the realtime scheduling class, which does the same for all
> of
> >>> > the
> >>> > Pacemaker processes when they are spawned. This is probably how you
> >>> > want the
> >>> > cluster daemons to run. However, when lrmd spawns resource scripts
> >>> > *everything* the script does also inherits the realtime scheduling
> >>> > class.
> >>> > I'm not sure this is how you want all your clustered applications
> >>> > running
> >>> > (or all the other stuff a resource script may do). Thoughts here?
> >>>
> >>> I'd tend to agree with you - the lrmd should probably do the
> >>> equivalent of chrt for the child processes it uses to perform the
> >>> resource actions
> >>>
> >>> > As a workaround, I added calls to the chrt program in each resource
> >>> > script
> >>> > to "downgrade" the scheduler to SCHED_OTHER and set the priority to
> >>> > zero,
> >>> > which is the system default.
> >>>
> >>> _______________________________________________
> >>> Pacemaker mailing list
> >>> Pacemaker [at] oss
> >>> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
> >>
> >
> >

> _______________________________________________________
> Linux-HA-Dev: Linux-HA-Dev [at] lists
> http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
> Home Page: http://linux-ha.org/

_______________________________________________________
Linux-HA-Dev: Linux-HA-Dev [at] lists
http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
Home Page: http://linux-ha.org/

Linux-HA dev RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.