openlava/openlava — Issue #29: ROUND_ROBIN issue
Author: ironskinspirit
Created: 2012-03-07 09:10:32+00:00
State: open

Hi,
I found 2 problems about ROUND_ROBIN of openlava2.0.
1. From doc, I got after config ROUND_ROBIN in lsb.queues it should be effective.
But I found the right key word is ROUND_ROBIN_POLICY.
2. I set ROUND_ROBIN_POLICY as Y in normal queue.
It seems effective by output of bqueue as below:
-----------------------------------------------------------------------------------------------------------------------------
PARAMETERS/STATISTICS
PRIO NICE STATUS MAX JL/U JL/P JL/H NJOBS PEND RUN SSUSP USUSP RSV
30 20 Open:Active - - - - 4 3 1 0 0 0
Interval for a host to accept two jobs is 0 seconds

SCHEDULING PARAMETERS
r15s r1m r15m ut pg io ls it tmp swp mem
loadSched - - - - - - - - - - -
loadStop - - - - - - - - - - -

USERS: all users
HOSTS: all hosts used by the LSF Batch system
ROUN_ROBIN_SCHEDULING: yes
-----------------------------------------------------------------------------------------------------------------------------
So I try it as below:
2 users: userA and userB submit jobs as below:
userA:
bsub sleep 200s
Job <1> is submitted to default queue

userB:
bsub sleep 200s
Job <2> is submitted to default queue
bsub sleep 200s
Job <3> is submitted to default queue
bsub sleep 200s
Job <4> is submitted to default queue

userA:
bsub sleep 200s

bjobs ouput:
[ytdu@rhel5u5-64 etc]$ bjobs -u all
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME
1 userA RUN normal rhel5u5-64 rhel5u5-64 sleep 200s Mar 7 16:26
2 userB PEND normal rhel5u5-64 sleep 200s Mar 7 16:26
3 userB PEND normal rhel5u5-64 sleep 200s Mar 7 16:27
4 userB PEND normal rhel5u5-64 sleep 200s Mar 7 16:27
5 userA PEND normal rhel5u5-64 sleep 200s Mar 7 16:27
It is clear that userA had only one pending job and userB had 3.
Depend on the jscheduler in your doc:
-------------------------------------------------------------------------------------------------
Beside standard first come first serve scheduling algorithm, openlava
now supports a round robin scheduler weighted on the number of pending
user jobs in a queue, the user with less jobs has his jobs
dispatched first, then the priorities are recalculated.
--------------------------------------------------------------------------------------------------
After job1 done, job5 should be run.
But in my test, job2 was run.
Is there something wrong in my test case?
Thanks.

In addition, was ROUND_ROBIN implemented in mbd.epolicy.c?