Merge pull request #1551 from DOCGroup/plm_jira_333
[ACE_TAO.git] / TAO / examples / RTScheduling / MIF_Scheduler / README
blob073b8af8eb8bd9c1975938aa8a61ab1bb6fd5a18
3 Most Important First (MIF) 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 manages a ready queue of Distributable Threads (DTs)
16 ordered by their importance and suspended on a condition variable. AT
17 any given time the scheduler dequeues the DT at the head of the queue,
18 that corresponds to the most important thread, and signals the thread
19 to activate it. The service context is used to send the importance and
20 GUID of the DT across hosts it spans so the DT can be scheduled
21 accordingly on the remote host.
23 In this experiment we show how dynamic scheduling is done using the
24 Dynamic Scheduling framework with the MIF Scheduler as the pluggable
25 scheduler. At any given instance the DT of highest priority is running
26 on a given host.
28 The experiment consists of the following participants:
29 Job: A CORBA servant object that performs CPU intensive work. The
30 amount of work depends on a load factor that is conveyed to the object
31 per invocation as an argument.
33 DT_Task: The distributable thread is a scheduling segment spanning one
34 or more hosts.
36 test: The test consists of a collection of Jobs and DTs hosted in
37 a single process. The test reads a configuration file that can be used
38 to initialize DTs and Jobs.
40 Starter: The starter initiates the start of DTs on each host that the
41 test is running on. This is to ensure that the experiment starts at
42 the same time on all hosts.
44 2. Conf file parameters
45 --------------------
47 POA OPTIONS
48 ==========
49 To specify POA options the format is:
51 -POACount <count> -POA <name> -PriorityModel <CLIENT|SERVER> <priority> -Lanes <count> (-Lane <priority> ,<static_threads> <dynamic_threads>)* -Bands <count> (-Band <low> <high>)*
53 e.g.
54 -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
56 specifes a POA with:
58 POA Count - Specifies the number of POAs that need to be activated. The following characteristics of each POA needs to be specified.
60 Name - poa1
62 Priority model - client propogated, def. priority = 10
64 Bands - 2 Bands with Band values as follows -
65         Band 1 :  low priority = 1, high priority = 20
66         Band 2 :  low priority = 30, high priority = 85
68 Lanes - 2 Lanes with Lane values as follows -
69         Lane 1 : priority = 10, 1 static thread, 0 dynamic threads
70         Lane 2 : priority = 80, 1 static thread, 0 dynamic threads
73 Distributable Thread Task Options
74 =================================
76 The format to specify a DT Task is:
78 -DT_Count <count> -DT_Task Importance <imp> -Start_Time <time> -Iter <local_work> -Load <remote_work> -JobName <name>
80 where,
81 -DT_Count = Total number of DT_Tasks
82 -DT_Task = Specifies a Distributable Thread
83 -Importance = The priority of the DT
84 -Start_Time = Time at which the DT enters the system
85 -Iter = The number of secs of work to be done on the local host. For a
86 distributed DT it defines the number of secs of local work to be done
87 before and after a remote method call is made.
88 -Load = The number of secs of work to be done on the remote host when
89 a two-way method call is made by a distributed DT
90 -JobName <name> = Name of the Job object that this DT will make a
91 remote method call on to do some 'Load' number of secs of work on the
92 remote host
94 e.g.
95 -DT_Count 1  -DT_Task -Importance 5 -Start_Time 0 -Iter 3 -Load 5 -JobName job_1
97 specifes a DT Task in which,
98 Importance = 5
99 Start Time = 0
100 Iter = 3
101 Load = 5
102 JobName = job_1
104 Job Options
105 ===========
106 The format for specify a Job is:
107 -Job_Count <count> -Job <name> <poa_name>
109 where, poa_name is the POA that this object is activated in.
111 Job Count - Specifies the number of jobs that are activated.
113 e.g.
114 -Job job_10 poa1
116 specifies a Job with,
118 Name - job_10
119 POA Name - poa1
121 Misc
122 =====
124 -GuidSeed <guid>
126 This specifies the guid number with which the guid counter will get
127 initialized. This is to ensure that unique guids are used. This will
128 be removed when the ACE UUID generator is integrated with TAO.
130 -OutFile <filename>
132 This specifies the data file in which the schedule of the DT"s running
133 on the host will be output.
135 -LogFile <filenmae>
137 This speficies the log file
139 3. Running the example
140 ----------------------
142 a) The activated Jobs and Synch objects are registered with a Naming
143 service, so we need an NS running
145 e.g. ./Naming_Service -o naming_ior
147 b) Start one or more instances of ./test depending on the test
148 configuration that you have designed.
150 e.g. ./test -ORBInitRef NameService=file://naming_ior -ORBSvcConf svc.conf.whatever -ORBDebugLevel 1
152 c) Execute the Starter that initiates the creation of DTs on all the
153 hosts that the experiment is running
155 eg. ./Starter -ORBInitRef NameService=file://naming.ior
157 c) Once all the instances exit, the test will generate schedule files
158 as specified by the user with the -OutFile option file