Merge pull request #2303 from jwillemsen/jwi-803
[ACE_TAO.git] / TAO / examples / RTScheduling / Fixed_Priority_Scheduler / README
blob728104eb6e991379a4dc9c3cce32d9437cab9c86
3 Fixed Priority Scheduler
4 ========================
6 Table of contents
7 -----------------
8 1. Introduction
9 2. Conf file parameters
10 3. Running the example.
12 1. Introduction
13 ---------------
15 This scheduler uses the OS scheduler to schedule the Distributable
16 Threads (DTs) in the system. The DTs are scheduled according to their
17 importance. The scheduler maps the importance of the DT to native
18 thread priorities so the OS scheduler can schedule the DTs.
20 In this experiment we show how dynamic scheduling is done using the
21 Dynamic Scheduling framework with the Fixed Priority Scheduler as the
22 pluggable scheduler. At any given instance the DT of highest priority
23 is running on a given host.
25 The experiment consists of the following participants:
26 Job: A CORBA servant object that performs CPU intensive work. The
27 amount of work depends on a load factor that is conveyed to the object
28 per invocation as an argument.
30 DT_Task: The distributable thread is a scheduling segment spanning one
31 or more hosts.
33 test: The test consists of a collection of Jobs and DTs hosted in
34 a single process. The test reads a configuration file that can be used
35 to initialize DTs and Jobs.
37 Starter: The starter initiates the start of DTs on each host that the
38 test is running on. This is to ensure that the experiment starts at
39 the same time on all hosts.
41 2. Conf file parameters
42 -----------------------
44 POA OPTIONS
45 ==========
46 To specify POA options the format is:
48 -POACount <count> -POA <name> -PriorityModel <CLIENT|SERVER> <priority> -Lanes <count> (-Lane <priority> ,<static_threads> <dynamic_threads>)* -Bands <count> (-Band <low> <high>)*
50 e.g.
51 -POACount 2 -POA poa1 -PriorityModel CLIENT 10 -Bands 2 -Band 1 20 -Band 30 85 -Lanes 2 -Lane 10 1 0 -Lane 80 1 0
53 specifes a POA with:
55 POA Count - Specifies the number of POAs that need to be activated. The following characteristics of each POA needs to be specified.
57 Name - poa1
59 Priority model - client propogated, def. priority = 10
61 Bands - 2 Bands with Band values as follows -
62         Band 1 :  low priority = 1, high priority = 20
63         Band 2 :  low priority = 30, high priority = 85
65 Lanes - 2 Lanes with Lane values as follows -
66         Lane 1 : priority = 10, 1 static thread, 0 dynamic threads
67         Lane 2 : priority = 80, 1 static thread, 0 dynamic threads
70 Distributable Thread Task Options
71 =================================
73 The format to specify a DT Task is:
75 -DT_Count <count> -DT_Task Importance <imp> -Start_Time <time> -Iter <local_work> -Load <remote_work> -JobName <name>
77 where,
78 -DT_Count = Total number of DT_Tasks
79 -DT_Task = Specifies a Distributable Thread
80 -Importance = The priority of the DT
81 -Start_Time = Time at which the DT enters the system
82 -Iter = The number of secs of work to be done on the local host. For a
83 distributed DT it defines the number of secs of local work to be done
84 before and after a remote method call is made.
85 -Load = The number of secs of work to be done on the remote host when
86 a two-way method call is made by a distributed DT
87 -JobName <name> = Name of the Job object that this DT will make a
88 remote method call on to do some 'Load' number of secs of work on the
89 remote host
91 e.g.
92 -DT_Count 1  -DT_Task -Importance 5 -Start_Time 0 -Iter 3 -Load 5 -JobName job_1
94 specifes a DT Task in which,
95 Importance = 5
96 Start Time = 0
97 Iter = 3
98 Load = 5
99 JobName = job_1
101 Job Options
102 ===========
103 The format for specify a Job is:
104 -Job_Count <count> -Job <name> <poa_name>
106 where, poa_name is the POA that this object is activated in.
108 Job Count - Specifies the number of jobs that are activated.
110 e.g.
111 -Job job_10 poa1
113 specifies a Job with,
115 Name - job_10
116 POA Name - poa1
118 Misc
119 =====
121 -GuidSeed <guid>
123 This specifies the guid number with which the guid counter will get
124 initialized. This is to ensure that unique guids are used. This will
125 be removed when the ACE UUID generator is integrated with TAO.
127 -OutFile <filename>
129 This specifies the data file in which the schedule of the DT"s running
130 on the host will be output.
132 -LogFile <filenmae>
134 This speficies the log file
136 3. Running the example
137 ----------------------
139 a) The activated Jobs and Synch objects are registered with a Naming
140 service, so we need an NS running
142 e.g. ./Naming_Service -o naming_ior
144 b) Start one or more instances of ./test depending on the test
145 configuration that you have designed.
147 e.g. ./test -ORBInitRef NameService=file://naming_ior -ORBSvcConf svc.conf.whatever -ORBDebugLevel 1
149 c) Execute the Starter that initiates the creation of DTs on all the
150 hosts that the experiment is running
152 eg. ./Starter -ORBInitRef NameService=file://naming.ior
154 c) Once all the instances exit, the test will generate schedule files
155 as specified by the user with the -OutFile option file