README for esep (Evolution Scheduling and Evolving Processes),
which provides with an add-on scheduler (Evolution Scheduler) 
for Linux-2.0.33 or later
Version 1.5, dated December 28, 1997 
Version 1.4, dated October 3, 1997 
Version 1.3, dated August 10, 1997 
Version 1.2, dated July 4, 1997 

Bugs Fixed and Acknowledgements:

1.2 to 1.3
  1. Added a critical section to protect scheduling data in sched.c.

1.3 to 1.4
  1. Adjusted the screen format of esep.
     by Hans Zoebelein (zocki@goldfish.cube.net) 

  2. Fixed a bug of kernel stack overflow in es_get_status function.
     by I.J.A. van Geel (I.J.A.vanGeel@twi.tudelft.nl) 

1.4 to 1.5
  1. Tested esep on Tyan Tomcat IV Dual Board with two Intel MMX-200 CPUs.

  2. Removed some cli's and sti's.

  3. Improved scheduling performance.
  
How to Identify a Bug:

  If a program can run well under "esep -cp pr", but it
doesn't work normally on "esep -cp es", please report the bug
that should belong to esep. Otherwise, tell the owner of
the program.



NAME
       esep Evolution Scheduling and Evolving Processes
              --status,commands,administration--

SYNOPSIS
       esep ["commands args..."] [-options...]

KEY WORDS
       Evolving  Processes, Evolution Scheduling, Concurrent Pro-
       gramming, Genetic  Algorithms,  Evolutionary  Programming,
       and Real-Time Systems

DESCRIPTION
       In this program, we present concepts of evolution schedul-
       ing, which will provide us with a better scheduling mecha-
       nism  for  competing processes in the ready queue and even
       the blocked queue. The evolution scheduling is  acceptable
       for the real-time system and useful for its performance to
       achieve fair and effective scheduling. In  the  comparison
       of queue dispatching and process dispatching of the evolu-
       tion scheduler with other  ones  of  existing  schedulers,
       round robin, priority, and  even  FIFO  scheduling, we can 
       confidently   conclude   that   where   we   use the round
       robin, priority, and even FIFO scheduling, we  can  imple-
       ment  evolution  scheduling to substitute for them without
       warning the application programmers to change their expec-
       tation  of the scheduling controls. On the other hand, for
       those who pursue evolutionary computation,  this  is  good
       news.  It  allows them to carry out natural competition in
       an easy way consistent with  their  operating  system  and
       programming  language. Each evolving process, one with the
       ability to improve  its  adaptation  to  the  environment,
       reflects  on  the  CPU  usage rate and I/O throughput load
       with its fitness function,  and  the  evolution  scheduler
       elaborates  the  optimization winner for the next quantum.
       So there are many benefits for  both  scheduler  designers
       and evolutionary programmers.

COMMAND-LINE OPTIONS
       -help | -h
            print out this message

       -info | -i
            print out system information

       -ver | -v
            print out version numbers

       -cp pcy
            change default policy

       -cq qid
            change default qid

       -cpo obj...
            change default process objective function

       -cqo obj...
            change default queue objective function

       -mp pid -po obj... [-qo obj...]
            modify objective function of specified process

       -mq qid -qo obj...
            modify objective function of specified queue

       -q qid
            declare qid for commands

       -po obj...
            declare process objective function for commands

       -qo obj...
            declare queue objective function for commands

       -bg 
            execute in background for commands

FIELD DESCRIPTIONS
       PCY  system policy, the valid values  are 0(pr) and 3(es),
            ES_SCHED_PR==0, ES_SCHED_ES==3, you can either set it
            to  be  unix  priority  scheduling  (0)  or evolution
            scheduling (3), the system default is ES, you can use
            "esep  -cp 0" to set it back to PR, which is the same
            with the original one, except doing  some  additional
            "if(esd.rq_policy==ES_SCHED_ES)",   you   can  switch
            between these two policies at any time as  you  wish,
            even in the X-windows

       QID  queue  id, default setting, 1<= qid <5, you may reset
            ES_MAX_RQ up to 255, ES_MAX_RQ is in sched.h

       CTX  context switches, context switching times  in  around
            1000 jiffies


       POF  process objective function, used for processes to get
            process fitness values, see QOF below

       QOF  queue objective function, i.e. obj... = (obj0,  obj1,
            obj2,  obj3, obj4) vector used to product with system
            (base_free,    system_free,    cpu_free,    mem_free,
            disk_free)

       SYS  system  variables,  base_free  = 100 (constant), sys-
            tem_free =  100  -  system_load,  cpu_free  =  100  -
            cpu_used,  mem_free  =  100 - mem_swaped, disk_free =
            100 - disk_IO, cpu_free, mem_free, disk_free based on
            data  I/O  times in around 1000 jiffies, 0 <= each <=
            100

       GUA  guarantee value, gua = (fit >> 5) + 1, so 1<= gua  <=
            8

       FIT  fitness  value,  new_fit  =  (obj0, obj1, obj2, obj3,
            obj4) X (base_free, system_free, cpu_free,  mem_free,
            disk_free) * (1/2) + old_fit * (1/2), 0 <= fit < 256

       RUN  run  times,  process(or queue) run times(20 ticks) in
            around 1000 jiffies.

       CNT  counter, this  is  the  counter  field  in  the  task
            struct.

       PRI  priority,  process  priority,  -20<=  unix  <20, 0 <=
            linux <40

       RTP  rt_priority, real-time priority, used  for  real-time
            short-cut(RR or FIFO)

       CMD  commands, commands are running in the system



If you like it, see INSTALL showing you how to intall 
Evolution Scheduling on Linux.

Thanks to every one who sends bug reports/fixes, commentary, etc.


Have fun,

Jinlong Lin
linjinl@charlie.cns.iit.edu
http://www.iit.edu/~linjinl/esep.html
http://www.iit.edu/~linjinl/xesep.html
