Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Developer's forum post: http://community.pbspro.org/t/pp-718-add-fairshare-usage-values-to-the-job-sort-formula/471/1

Interface 1: job_sort_formula keyword "fairshare_tree_usage

...

"

  • Change Control: Public/Stable
  • Permissions: The job_sort_formula must be set by the admin (e.g., root).
  • Summary: A number between 0 and 1 representing a job's relative fairnessthe job's entities usage modified to take it's location in the fairshare tree into account.
  • Details:
    • A number between 0 and 1.  Higher numbers are more less deserving.
    • .5 means the job's entity is on target.This number is somewhat arbitrary.  It's based on the actual usage of the entity and its location in the fairshare tree.

Interface 2: renaming job_sort_formula keyword: fair_share_perc → fairshare_perc

  • Change Control: Public/Stable
  • Summary: The job_sort_formula keyword fair_share_perc is deprecated and replaced with fairshare_perc
  • Details:
    • The renaming is being done to be better aligned with the new fairshare keyword and other fairshare keywords in the sched_config file


How fairshare works:

Fairshare is a tree.  There are fairshare groups and entities (e.g., users).  A job belongs to one entity.  Each fairshare group has children which can be either another fairshare group or an entity.  All entities don't have to be at the same level.  For example, root can have 3 children which are two groups and one entity.  The two groups will have entities within them.  Each group or entity has a number of shares assigned to them.  This is a relative percentage between the siblings of that group.  The relative percentage between siblings times the parents target is the entity/group's target.  The shares are turned into a fairshare target which is a percentage number between 0 and 1.  If you add up all the targets of all of the entities, you will reach 100%.

...

The easiest way to map fairshare to the formula would be to take the actual usage and target of each entity and compare them.  This doesn't work because low usage entities of high usage groups will no longer be negatively affected by its siblings.  We effectively flatten the tree.   

This is fixed by creating an arbitrary usage number which is based on the actual usage and some of the parent's arbitrary usage.   Even if an entity has zero usage, it gets some of its parent's usage.  It will still be negatively affected by its siblings.

...

Something to note: summing all of the arbitrary usages of all of the entities will be more than 100%.  This doesn't allow for direct comparison between the entities.The fairshare


formula:Here is a formula to provide a direct comparison between entities.  It results in a number between 0 and 1.  A result of .5 means the entity is on target.

2^-(entity's arbitrary fairshare_tree_usage / entity's target)

This is represented in the job_sort_formula as: pow(2, -(fairshare_tree_usage/fairshare_perc))


This finally allows for a direct comparison between entities, and therefore the jobs that the belong to those entities own.


Example:

Share numbers do not need to add up to 100, it just makes the example easier to understand.  Entities don't need to all be at the same level of the tree.  For example, root could own an entity.

...

Credit: The math for the arbitrary usage calculation and the fairshare formula example came from the SLURM.