Merge pull request #1551 from DOCGroup/plm_jira_333
[ACE_TAO.git] / TAO / examples / RTCORBA / Activity / README
blob0bf1864f7802d71145793c45117ef5a103a3aa2a
2 =================== RT CORBA capabilities demo ===================
4 Table of contents
5 -----------------
6 1. Introduction
7 2. Conf file parameters
8 3. Running the example.
10 1. Introduction
12 The Real-Time CORBA specification provides a high level API for programmers
13 to write distributed applications in which the priority of a distributed
14 thread of execution is maintained across separate hosts with potentially
15 different operating systems.  It also provides support for explicit
16 binding, standard synchronizers, the ability to modify transport protocol
17 properties and thread pools as a standard.
19 In this experiment we show the effect of maintaining end to end priorities.
21 The experiment consists of the following participants:
23 Job: A CORBA servant object that performs CPU intensive work. The amount
24 of work depends on a load factor that is conveyed to the object per
25 invocation as an argument.
27 Periodic Task: A periodic task is a thread of execution that is associated
28 with a Job. A Task periodically invokes the Job after a period of time
29 specified by the user.
31 Activity: An activity is a collection of Jobs and Tasks hosted in a single
32 process. An activity reads a configuration file that can be used to
33 initialize in many ways such as a client or server.
35 2. Conf file parameters
36 --------------------
37 POA OPTIONS
38 ==========
39 To specify POA options the format is:
41 -POA <name> -PriorityModel <CLIENT|SERVER> <priority> -Lanes <count> (-Lane <priority> ,<static_threads> <dynamic_threads>)* -Bands <count> (-Band <low> <high>)*
43 e.g.
44 -POA poa1 -PriorityModel CLIENT 10 -Bands 2 -Band 1 20 -Band 30 85 -Lanes 2 -Lane 10 1 0 -Lane 80 1 0
46 specifes a POA with:
48 Name - poa1
50 Priority model - client propogated, def. priority = 10
52 Bands - 2 Bands with Band values as follows -
53   Band 1 :  low priority = 1, high priority = 20
54   Band 2 :  low priority = 30, high priority = 85
56 Lanes - 2 Lanes with Lane values as follows -
57   Lane 1 : priority = 10, 1 static thread, 0 dynamic threads
58   Lane 2 : priority = 80, 1 static thread, 0 dynamic threads
60 You can specify options for creating POA, Job and Task as shown
61 below. Please note that you must specify the number of POA, Job or Task via
62 the following options at the beginning of the conf. file:
64 -POACount [count]
65 -TaskCount [count]
66 -JobCount [count]
68 Job Options
69 ===========
70 The format for specify a Job is:
71 -Job <name> <poa_name>
73 where, poa_name is the POA that this object is activated in.
75 e.g.
76 -Job job_10 poa1
78 specifies a Job with,
80 Name - job_10
81 POA Name - poa1
83 Task Options
84 ============
86 The format for specify a Task is:
88 -ThreadTask -JobName <name> -Priority <priority> -Period <period> -ExecTime <exec_time> -Phase <phase> -Iter <iterations> -Load <load_weight>
90 where,
91 -ThreadTask = Specifies a Thread based timer.
92 -JobName <name> = Name of the Job object that this task will exec. once every period.
93 -Priority <priority> = The OS thread priority at which to run this task.
94 -Period <period> = The period of execution. (in uS)
95 -ExecTime <exec_time> = The offline estimate of the worst case execution time for the Job. (uS)
96 -Phase <phase> = The phase to start at (uS)
97 -Iter <iterations> = Number of Periods to exec.
98 -Load <load_weight> = a load factor passed to the job that varies its processing.
100 e.g.
101 -ThreadTask -JobName job_10 -Priority 10 -Period 1 -ExecTime 10000 -Phase 0 -Iter 20 -Load 1000
103 specifes a Thread Task in which,
104 JobName = job_10
105 -Priority = 10
106 -Period = 1uS
107 -ExecTime = 10000uS
108 -Phase = 0uS
109 -Iter = 20 iterations
110 -Load = 1000
112 4. Command-Line Options
113 ----------------------
114 -Started_Flag <file_name> : When a particular activity instance has
115 finished bootstrapping, it will create a file specified by <file_name>
116 to signal that it has started. This allows scripts to synchronize when
117 other instances of activity can be started.
119 4. Running the example
120 ----------------------
122 a). The activated Jobs are registered with a Naming service, so we need an NS running
123 e.g. ./Naming_Service -o naming_ior
125 b). Start one or more instances of ./activity depending on the test configuration that you have designed.
127 e.g. ./activity -ORBInitRef NameService=file://naming_ior -ORBSvcConf svc.conf.whatever -ORBDebugLevel 1
129 c) once all the instances exit, the test will generate data files: <job_name>.dat
131 use gen_graph to generate a .png file to view the results in a graphical viewer.