Hi,

> Am 03.08.2015 um 18:20 schrieb Carl G. Riches <[email protected]>:
> 
> On Sat, 1 Aug 2015, Reuti wrote:
> 
>> Hi,
>> 
>> Am 31.07.2015 um 23:00 schrieb Carl G. Riches:
>> 
>>>> <snip>
>>> Thanks for these pointers.  After going through these and others, I think I 
>>> have a basic understanding of share-tree and functional share policies. I'm 
>>> not clear on whether or not these can be combined, but I think so.
>>> 
>>> The goal is to limit user access to CPU when there is contention to a 
>>> queue.  The limit would apply to all users and the limit would be 12% of 
>>> all CPUs in a queue.
>> 
>> How do you came up with 12% - it will never make exactly 100%? Is the intend 
>> to have a fair share scheduling over a time frame then?
>> 
> 
> The 12% comes from the users' goal of how many CPUs out of the total 
> available a single user can have when the queue(s) are full.  Each user's 
> share should be measured at the time a job is dispatched (functional share?) 
> but with some fair-sharing over a time frame (share-tree?).  That is, if a 
> user has submitted 10,000 jobs (or 1000 10-core parallel jobs) to the queue 
> at one time and the queue doesn't have that many available slots/CPUs, the 
> sharing policy should dispatch other users' jobs in preference to the 
> large-volume user (but still allowing that user to have some slots available 
> to process jobs).  In the case of users that dump huge numbers of jobs to the 
> queues at a time, the sharing policy should remember that high level of use 
> for a short time (no more than a month).

For the "weight_user" and so on values you could keep the default value of 0.25 
(they are used for the functional policy only). More important are the values 
for "weight_ticket" in relation to the alike entries "weight_waiting_time". 
Just give the "weight ticktet" a higher value than the other entries.

The 12% you can achieve by defining a default-user in the share tree as leaf 
with e.g. 12000 shares out of a total of 100000 ("weight_tickets_share 10000") 
in the share-tree dialog, just below the "root" entry, i.e. "Add Node" + "Add 
Leaf".

While "enforce_user auto" in SGE's configuration will take care that each user 
gets his own entry automatically once he submitted a job, it's important to 
change the "auto_user_delete_time 0" to zero. This is the actual object which 
will hold the values recorded for the past usage. If the user object is deleted 
(either by hand or automatically), the knowledge of the past usage is gone.

The record reserved usage and not only the used one (i.e. a user requested more 
than one core but runs only a serial job), it's necessary to set:

"execd_params ACCT_RESERVED_USAGE=TRUE SHARETREE_RESERVED_USAGE=TRUE"

in SGE's configuration too.

-- Reuti


> Carl
> 
>> 
>> 
>>> There are no "projects" or "departments" at this time.  Would these 
>>> parameter settings achieve that goal?
>>> 
>>> 
>>> algorithm                         default
>>> schedule_interval                 0:0:15
>>> maxujobs                          0
>>> queue_sort_method                 load
>>> job_load_adjustments              np_load_avg=0.50
>>> load_adjustment_decay_time        0:7:30
>>> load_formula                      np_load_avg
>>> schedd_job_info                   true
>>> flush_submit_sec                  0
>>> flush_finish_sec                  0
>>> params                            none
>>> reprioritize_interval             0:0:0
>>> halftime                          168
>>> usage_weight_list                 cpu=1.000000,mem=0.000000,io=0.000000
>>> compensation_factor               5.000000
>>> weight_user                       0.640000
>>> weight_project                    0.120000
>>> weight_department                 0.120000
>>> weight_job                        0.120000
>>> weight_tickets_functional         1000000
>>> weight_tickets_share              1000
>>> share_override_tickets            TRUE
>>> share_functional_shares           TRUE
>>> max_functional_jobs_to_schedule   2000
>>> report_pjob_tickets               TRUE
>>> max_pending_tasks_per_job         50
>>> halflife_decay_list               none
>>> policy_hierarchy                  OFS
>>> weight_ticket                     1000.000000
>>> weight_waiting_time               0.000000
>>> weight_deadline                   3600000.000000
>>> weight_urgency                    0.100000
>>> weight_priority                   0.100000
>>> max_reservation                   0
>>> default_duration                  INFINITY
>>> 
>>> 
>>> Must we also define a "default" user in some manner such that this policy 
>>> is applied?  If so, how do we do that?
>>> 
>>> 
>>> Thanks,
>>> Carl
>> 
>> 


_______________________________________________
users mailing list
[email protected]
https://gridengine.org/mailman/listinfo/users

Reply via email to