Bug 670222 - hfs parameters HFS_ROUND_ROBIN_RATE and HFS_MAX_ALLOCATION_ROUNDS
Summary: hfs parameters HFS_ROUND_ROBIN_RATE and HFS_MAX_ALLOCATION_ROUNDS
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: Grid_User_Guide
Version: Development
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: 1.3.2
: ---
Assignee: Alison Young
QA Contact: Lubos Trilety
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2011-01-17 15:49 UTC by Lubos Trilety
Modified: 2011-02-14 01:35 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2011-02-14 01:35:26 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Lubos Trilety 2011-01-17 15:49:24 UTC
Description of problem:
There are two new parameters HFS_ROUND_ROBIN_RATE and HFS_MAX_ALLOCATION_ROUNDS in condor, which are not documented. Also some examples of usage will be very helpful.

(for more information see bug 644904)

> What do variables HFS_ROUND_ROBIN_RATE and HFS_MAX_ALLOCATION_ROUNDS do?

HFS_MAX_ALLOCATION_ROUNDS specifies how many allocation rounds are allowed. 
Allocation rounds are the iterations that may occur if a group does not get all
the slots it was allocated due to rejection.  If the negotiation loop fails to
fill the quota for one or more groups, it may take the unused quota and attempt
to allocate it to other groups that may be able to use it.  This variable
defaults to (1), which is the traditional behavior of a single negotiation
attempt.  It has a minimum of (1).  Maximum is INT_MAX.

HFS_ROUND_ROBIN_RATE specifies the increment rate of the negotiation
round-robin loop that can be used to solve the overlapping-effective-pool
problem.   It defaults to traditional behavior of "Attempt to negotiate for
everything in one iteration."  If it is set to its minimum value (1.0), it will
give maximum preservation of allocation ratios, but will require possibly many
iterations.  It can be increased to some value > 1.0 to reduce iterations (and
log output), with the possible consequence of reduced adherence to allocated
ratios.

Comment 1 Erik Erlandson 2011-01-17 17:11:32 UTC
Rewrite for improved clarity:

HFS_MAX_ALLOCATION_ROUNDS specifies how many allocation rounds are allowed. If the negotiation loop fails to fill the quota for one or more groups due to rejection, it may take that unused quota and attempt to allocate it to other groups that might be able to use it.  This re-allocation requires one or more additional iterations, referred to as allocation rounds.  HFS_MAX_ALLOCATION_ROUNDS defaults to (1), which is the traditional behavior of a single negotiation attempt.  It has a minimum of (1), and maximum of INT_MAX.

HFS_ROUND_ROBIN_RATE specifies an increment rate for the negotiation
round-robin loop, which may be used to mitigate overlapping-effective-pool
scenarios.   An overlapping effective pool occurs when two or more jobs include slot requirements that limit their potential slots to overlapping subsets of the larger pool.  In such a scenario, traditional Negotiator behavior may result in jobs from one accounting group being given the entire subset, and jobs from subsequent groups being starved.  Such starvation scenarios may be mitigated by setting HFS_ROUND_ROBIN_RATE to a small value such as (1.0), which will cause the Negotiator to use a round robin strategy in negotiating slots from the available accounting groups.  This will prevent any one accounting group from being allocated all slots from an overlapping effective pool and starving other groups.  HFS_ROUND_ROBIN_RATE defaults to traditional behavior: attempt to negotiate for everything in one iteration.  If it is set to its minimum value (1.0), it will give minimum starvation and maximum preservation of allocation ratios inside overlapping effective pools, but may require many iterations.  It can be increased to some value > 1.0 to reduce iterations (and log output), with the possible consequence of increased starvation of some accounting groups.


(FYI -- these configuration variables would be listed under Negotiator parameters, and/or the HFS section of the user guide)

Comment 4 Erik Erlandson 2011-01-20 19:13:07 UTC
By popular request, HFS_MAX_ALLOCATION_ROUNDS now defaults to (3).

So, this doc paragraph sentence: "HFS_MAX_ALLOCATION_ROUNDS defaults to (1), which is the traditional behavior of a single negotiation attempt. It has a minimum of (1), and maximum of INT_MAX."

Should be replaced with:

"HFS_MAX_ALLOCATION_ROUNDS defaults to (3).  It has a minimum of (1), which is traditional Negotiator behavior of a single attempt at negotiation, and a maximum of INT_MAX."

Comment 7 Alison Young 2011-02-07 10:39:26 UTC
Change made in revision 7.14, build: Red_Hat_Enterprise_MRG-Grid_User_Guide-1.3-web-en-US-7-14.el5

Code snippets:
<section id="sect-Grid_User_Guide-Configuration_options-condor_negotiator_Configuration_File_Macros">

<title><command>condor_negotiator</command> Configuration File Macros</title>

<variablelist>
<varlistentry>
<term> <command>HFS_MAX_ALLOCATION_ROUNDS</command></term>
<listitem>
<para>
  Specifies how many allocation rounds are allowed. If the negotiation loop fails to fill the quota for one or more groups due to rejection, it may take that unused quota and attempt to allocate it to other groups that might be able to use it. This re-allocation requires one or more additional iterations, referred to as allocation rounds.
</para>
<para>
  <command>HFS_MAX_ALLOCATION_ROUNDS</command> defaults to (3). It has a minimum of (1), which is the traditional behavior of a single attempt at negotiation, and a maximum of <parameter>INT_MAX<parameter>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>HFS_ROUND_ROBIN_RATE</command></term>
<listitem>
<para>
  Specifies an increment rate for the negotiation round-robin loop, which may be used to mitigate overlapping-effective-pool scenarios. An overlapping effective pool occurs when two or more jobs include slot requirements that limit their potential slots to overlapping subsets of the larger pool.  In such a scenario, traditional negotiator behavior may result in jobs from one accounting group being given the entire subset, and jobs from subsequent groups being starved.  Such starvation scenarios may be mitigated by setting <command>HFS_ROUND_ROBIN_RATE</command> to a small value such as (1.0), which will cause the negotiator to use a round robin strategy in negotiating slots from the available accounting groups. This will prevent any single accounting group from being allocated all the slots from an overlapping effective pool and starving other groups. 
</para>
<para>
  <command>HFS_ROUND_ROBIN_RATE</command> defaults to traditional behavior where it attempts to negotiate for everything in one iteration. If it is set to its minimum value (1.0), it will give minimum starvation and maximum preservation of allocation ratios inside overlapping effective pools, but may require many iterations. It can be increased to some value > 1.0 to reduce iterations (and log output), with the possible consequence of increased starvation of some accounting groups.
</para>
</listitem>
</varlistentry>
</variablelist>
</section>

Comment 10 Lubos Trilety 2011-02-09 13:47:42 UTC
New section 'condor_negotiator Configuration File Macros' with both HFS_MAX_ALLOCATION_ROUNDS and HFS_ROUND_ROBIN_RATE parameters was added to Grid User Guide.

>>> VERIFIED


Note You need to log in before you can comment on or make changes to this bug.