Bug 670222

Summary: hfs parameters HFS_ROUND_ROBIN_RATE and HFS_MAX_ALLOCATION_ROUNDS
Product: Red Hat Enterprise MRG Reporter: Lubos Trilety <ltrilety>
Component: Grid_User_GuideAssignee: Alison Young <alyoung>
Status: CLOSED CURRENTRELEASE QA Contact: Lubos Trilety <ltrilety>
Severity: medium Docs Contact:
Priority: medium    
Version: DevelopmentCC: eerlands, iboverma, matt
Target Milestone: 1.3.2   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-02-14 01:35:26 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

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